Skip to content

Commit

Permalink
Unregister uninstalled event listeners
Browse files Browse the repository at this point in the history
Signed-off-by: Alexander Pinčuk <alexander.v.pinchuk@gmail.com>
  • Loading branch information
avpinchuk committed Feb 22, 2024
1 parent 352fc91 commit 5476894
Showing 1 changed file with 14 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import jakarta.inject.Inject;

import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ExecutorService;
Expand Down Expand Up @@ -62,8 +63,11 @@ public void send(final Event<?> event) {

@Override
public void send(final Event<?> event, boolean asynchronously) {
for (final EventListener listener : listeners) {
Method eventMethod = null;
Iterator<EventListener> iterator = listeners.iterator();
while (iterator.hasNext()) {
EventListener listener = iterator.next();

Method eventMethod;
try {
// Check if the listener is interested with his event.
eventMethod = listener.getClass().getMethod("event", Event.class);
Expand All @@ -78,14 +82,15 @@ public void send(final Event<?> event, boolean asynchronously) {
// As a result, an exception like NoClassDefFoundError is thrown
// from getMethod.
logger.log(Level.SEVERE, KernelLoggerInfo.exceptionSendEvent, t);
iterator.remove();
continue;
}
if (eventMethod != null) {
RestrictTo restrictTo = eventMethod.getParameters()[0].getAnnotation(RestrictTo.class);
if (restrictTo != null) {
EventTypes<?> interested = EventTypes.create(restrictTo.value());
if (!event.is(interested)) {
continue;
}

RestrictTo restrictTo = eventMethod.getParameters()[0].getAnnotation(RestrictTo.class);
if (restrictTo != null) {
EventTypes<?> interested = EventTypes.create(restrictTo.value());
if (!event.is(interested)) {
continue;
}
}

Expand Down

0 comments on commit 5476894

Please sign in to comment.