Read model names without lookup by using context object (#8)

This commit is contained in:
Stephan Schnabel 2023-03-13 11:06:34 +01:00 committed by GitHub
parent 4e0c4afc71
commit 579d0a929c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 61 additions and 44 deletions

View file

@ -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();
}
}