Read model names without lookup by using context object (#8)
This commit is contained in:
parent
4e0c4afc71
commit
579d0a929c
2 changed files with 61 additions and 44 deletions
|
@ -1,7 +1,5 @@
|
|||
package io.kokuwa.keycloak.metrics;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.jboss.logging.Logger;
|
||||
import org.keycloak.events.Event;
|
||||
import org.keycloak.events.EventListenerProvider;
|
||||
|
@ -33,7 +31,7 @@ public class MicrometerEventListener implements EventListenerProvider, AutoClose
|
|||
registry.counter("keycloak_event_user",
|
||||
"realm", toBlank(replace ? getRealmName(event.getRealmId()) : event.getRealmId()),
|
||||
"type", toBlank(event.getType()),
|
||||
"client", toBlank(replace ? getClientId(event.getRealmId(), event.getClientId()) : event.getClientId()),
|
||||
"client", toBlank(replace ? getClientId(event.getClientId()) : event.getClientId()),
|
||||
"error", toBlank(event.getError()))
|
||||
.increment();
|
||||
}
|
||||
|
@ -51,27 +49,25 @@ public class MicrometerEventListener implements EventListenerProvider, AutoClose
|
|||
@Override
|
||||
public void close() {}
|
||||
|
||||
private String getRealmName(String id) {
|
||||
var model = session.getContext().getRealm();
|
||||
if (id == null || id.equals(model.getId())) {
|
||||
return model.getName();
|
||||
}
|
||||
log.warnv("Failed to resolve realmName for id {0}", id);
|
||||
return id;
|
||||
}
|
||||
|
||||
private String getClientId(String id) {
|
||||
var model = session.getContext().getClient();
|
||||
if (id == null || id.equals(model.getId())) {
|
||||
return model.getClientId();
|
||||
}
|
||||
log.warnv("Failed to resolve clientId for id {0}", id);
|
||||
return id;
|
||||
}
|
||||
|
||||
private String toBlank(Object value) {
|
||||
return value == null ? "" : value.toString();
|
||||
}
|
||||
|
||||
private String getRealmName(String realmId) {
|
||||
var model = session.realms().getRealm(realmId);
|
||||
if (model == null) {
|
||||
log.warnv("Failed to resolve realm with id", realmId);
|
||||
return realmId;
|
||||
}
|
||||
return model.getName();
|
||||
}
|
||||
|
||||
private String getClientId(String realmId, String clientId) {
|
||||
var model = Optional.ofNullable(session.realms().getRealm(realmId))
|
||||
.map(realm -> realm.getClientById(clientId))
|
||||
.orElse(null);
|
||||
if (model == null) {
|
||||
log.warnv("Failed to resolve client with id {} in realm {}", clientId, realmId);
|
||||
return clientId;
|
||||
}
|
||||
return model.getClientId();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue