From f68ff22aac8d8cb379a3c7047423de1224ed4280 Mon Sep 17 00:00:00 2001 From: Stephan Schnabel Date: Mon, 6 Mar 2023 15:29:24 +0100 Subject: [PATCH] Remove useless delegation from listener to recorder. (#4) --- .../metrics/MicrometerEventListener.java | 26 ++++++++-- .../MicrometerEventListenerFactory.java | 6 +-- .../metrics/MicrometerEventRecorder.java | 51 ------------------- 3 files changed, 24 insertions(+), 59 deletions(-) delete mode 100644 src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventRecorder.java diff --git a/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListener.java b/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListener.java index d630739..dc04ac4 100644 --- a/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListener.java +++ b/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListener.java @@ -4,6 +4,8 @@ import org.keycloak.events.Event; import org.keycloak.events.EventListenerProvider; import org.keycloak.events.admin.AdminEvent; +import io.micrometer.core.instrument.MeterRegistry; + /** * Listener for {@link Event} and {@link AdminEvent}. * @@ -11,22 +13,36 @@ import org.keycloak.events.admin.AdminEvent; */ public class MicrometerEventListener implements EventListenerProvider, AutoCloseable { - private final MicrometerEventRecorder recorder; + private final MeterRegistry registry; - MicrometerEventListener(MicrometerEventRecorder recorder) { - this.recorder = recorder; + public MicrometerEventListener(MeterRegistry registry) { + this.registry = registry; } @Override public void onEvent(Event event) { - recorder.userEvent(event); + registry.counter("keycloak_event_user", + "realm", toBlank(event.getRealmId()), + "type", toBlank(event.getType()), + "client", toBlank(event.getClientId()), + "error", toBlank(event.getError())) + .increment(); } @Override public void onEvent(AdminEvent event, boolean includeRepresentation) { - recorder.adminEvent(event); + registry.counter("keycloak_event_admin", + "realm", toBlank(event.getRealmId()), + "resource", toBlank(event.getResourceType()), + "operation", toBlank(event.getOperationType()), + "error", toBlank(event.getError())) + .increment(); } @Override public void close() {} + + private String toBlank(Object value) { + return value == null ? "" : value.toString(); + } } diff --git a/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListenerFactory.java b/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListenerFactory.java index 9e25a21..f0dea73 100644 --- a/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListenerFactory.java +++ b/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventListenerFactory.java @@ -17,7 +17,7 @@ import io.micrometer.core.instrument.MeterRegistry; */ public class MicrometerEventListenerFactory implements EventListenerProviderFactory { - private MicrometerEventRecorder recorder; + private MeterRegistry registry; @Override public String getId() { @@ -29,12 +29,12 @@ public class MicrometerEventListenerFactory implements EventListenerProviderFact @Override public void postInit(KeycloakSessionFactory factory) { - recorder = new MicrometerEventRecorder(CDI.current().select(MeterRegistry.class).get()); + registry = CDI.current().select(MeterRegistry.class).get(); } @Override public EventListenerProvider create(KeycloakSession session) { - return new MicrometerEventListener(recorder); + return new MicrometerEventListener(registry); } @Override diff --git a/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventRecorder.java b/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventRecorder.java deleted file mode 100644 index 99320c6..0000000 --- a/src/main/java/io/kokuwa/keycloak/metrics/MicrometerEventRecorder.java +++ /dev/null @@ -1,51 +0,0 @@ -package io.kokuwa.keycloak.metrics; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; - -import org.keycloak.events.Event; -import org.keycloak.events.admin.AdminEvent; - -import io.micrometer.core.instrument.Counter; -import io.micrometer.core.instrument.MeterRegistry; - -/** - * Micrometer based recorder for events. - * - * @author Stephan Schnabel - */ -public class MicrometerEventRecorder { - - private final Map counters = new HashMap<>(); - private final MeterRegistry registry; - - MicrometerEventRecorder(MeterRegistry registry) { - this.registry = registry; - } - - void adminEvent(AdminEvent event) { - counter("keycloak_event_admin", - "realm", toBlankIfNull(event.getRealmId()), - "resource", toBlankIfNull(event.getResourceType()), - "operation", toBlankIfNull(event.getOperationType()), - "error", toBlankIfNull(event.getError())); - } - - void userEvent(Event event) { - counter("keycloak_event_user", - "realm", toBlankIfNull(event.getRealmId()), - "type", toBlankIfNull(event.getType()), - "client", toBlankIfNull(event.getClientId()), - "error", toBlankIfNull(event.getError())); - } - - private void counter(String counter, String... tags) { - counters.computeIfAbsent(counter + Arrays.toString(tags), string -> registry.counter(counter, tags)) - .increment(); - } - - private String toBlankIfNull(Object value) { - return value == null ? "" : value.toString(); - } -}