Skip to content

Commit

Permalink
changes for support registration event and improve code performance
Browse files Browse the repository at this point in the history
  • Loading branch information
cgeorgilakis committed Jul 27, 2023
1 parent a9d5f4a commit 2f944cd
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 13 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package org.keycloak.metrics.events;

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.keycloak.events.Event;
import org.keycloak.events.EventListenerProvider;
import org.keycloak.events.EventListenerTransaction;
Expand All @@ -21,8 +18,6 @@ public class MetricsCommunicationProvider implements EventListenerProvider {

private KeycloakSession session;
private Set<EventType> includedEvents;
private static final List<EventType> acceptedEventsType = Stream.of(EventType.LOGIN, EventType.LOGIN_ERROR, EventType.IDENTITY_PROVIDER_FIRST_LOGIN).collect(Collectors.toList());

private EventListenerTransaction tx = new EventListenerTransaction(null, this::metricsCommunication);

public MetricsCommunicationProvider(KeycloakSession session, Set<EventType> includedEvents) {
Expand All @@ -33,16 +28,16 @@ public MetricsCommunicationProvider(KeycloakSession session, Set<EventType> incl

@Override
public void onEvent(Event event) {
if (includedEvents.contains(event.getType()))
RealmModel realm = session.realms().getRealm(event.getRealmId());
if (realm.getAttribute(MetricsUtils.AMS_URL) != null && includedEvents.contains(event.getType()))
tx.addEvent(event);
}

private void metricsCommunication(Event event) {
RealmModel realm = session.realms().getRealm(event.getRealmId());
if (realm.getAttribute(MetricsUtils.AMS_URL) != null && acceptedEventsType.contains(event.getType())) {
MetricsTimerProvider timer = (MetricsTimerProvider) session.getProvider(TimerProvider.class, "metrics");
timer.scheduleOnce(new ClusterAwareScheduledTaskRunner(session.getKeycloakSessionFactory(), new MetricsCommunicationTask(event, realm.getId()), 60 * 1000), 30 * 1000, "MetricsCommunicationTask" + event.getId());
}
MetricsTimerProvider timer = (MetricsTimerProvider) session.getProvider(TimerProvider.class, "metrics");
timer.scheduleOnce(new ClusterAwareScheduledTaskRunner(session.getKeycloakSessionFactory(), new MetricsCommunicationTask(event, realm.getId()), 60 * 1000), 30 * 1000, "MetricsCommunicationTask" + event.getId());

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class MetricsCommunicationProviderFactory implements EventListenerProvide

private static final Set<EventType> SUPPORTED_EVENTS = new HashSet<>();
static {
Collections.addAll(SUPPORTED_EVENTS, EventType.LOGIN, EventType.LOGIN_ERROR);
Collections.addAll(SUPPORTED_EVENTS, EventType.LOGIN, EventType.LOGIN_ERROR, EventType.REGISTER);
}

private Set<EventType> includedEvents = new HashSet<>();
Expand Down Expand Up @@ -75,14 +75,14 @@ public List<ProviderConfigProperty> getConfigMetadata() {
.property()
.name("include-events")
.type("string")
.helpText("A comma-separated list of events that should be sent via email to the user's account.")
.helpText("A comma-separated list of events that are supported.")
.options(supportedEvents)
.defaultValue("All events")
.add()
.property()
.name("exclude-events")
.type("string")
.helpText("A comma-separated list of events that should not be sent via email to the user's account.")
.helpText("A comma-separated list of events that are excluded.")
.options(supportedEvents)
.add()
.build();
Expand Down

0 comments on commit 2f944cd

Please sign in to comment.