Remove useless delegation from listener to recorder.
This commit is contained in:
parent
a79ba51a2a
commit
c656b2028e
3 changed files with 24 additions and 59 deletions
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<String, Counter> 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();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue