Log unhandled dead events
This commit is contained in:
parent
0036dc4829
commit
b2fe3a9d6c
@ -18,8 +18,13 @@ public final class DeadEvent {
|
|||||||
this.event = event;
|
this.event = event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return String.format("DeadEvent[eventBus=%s, event=%s]", eventBus, event);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the event bus that originated this event
|
* @return the event bus that dispatched this event
|
||||||
* @since 1.1.0
|
* @since 1.1.0
|
||||||
*/
|
*/
|
||||||
public EventBus getEventBus() { return eventBus; }
|
public EventBus getEventBus() { return eventBus; }
|
||||||
|
@ -84,7 +84,13 @@ public final class EventBus {
|
|||||||
handlers.next().execute(event);
|
handlers.next().execute(event);
|
||||||
}
|
}
|
||||||
} else if (!(event instanceof DeadEvent)) {
|
} else if (!(event instanceof DeadEvent)) {
|
||||||
|
|
||||||
|
// Dispatch dead event
|
||||||
dispatch(new DeadEvent(this, event));
|
dispatch(new DeadEvent(this, event));
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Warn about the dead event not being handled
|
||||||
|
logger.log(Level.WARNING, "{0} not handled", event);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset dispatch state
|
// Reset dispatch state
|
||||||
|
@ -2,7 +2,7 @@ package dev.kske.eventbus.core;
|
|||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
import org.junit.jupiter.api.*;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests the dispatching of a dead event if an event could not be delivered.
|
* Tests the dispatching of a dead event if an event could not be delivered.
|
||||||
@ -12,20 +12,32 @@ import org.junit.jupiter.api.*;
|
|||||||
*/
|
*/
|
||||||
class DeadTest {
|
class DeadTest {
|
||||||
|
|
||||||
EventBus bus;
|
EventBus bus = new EventBus();
|
||||||
String event = "This event has no handler";
|
String event = "This event has no handler";
|
||||||
boolean deadEventHandled;
|
boolean deadEventHandled;
|
||||||
|
|
||||||
@BeforeEach
|
/**
|
||||||
void registerListener() {
|
* Tests dead event delivery.
|
||||||
bus = new EventBus();
|
*
|
||||||
bus.registerListener(this);
|
* @since 1.1.0
|
||||||
}
|
*/
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testDeadEvent() {
|
void testDeadEvent() {
|
||||||
|
bus.registerListener(this);
|
||||||
bus.dispatch(event);
|
bus.dispatch(event);
|
||||||
assertTrue(deadEventHandled);
|
assertTrue(deadEventHandled);
|
||||||
|
bus.removeListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests how the event bus reacts to an unhandled dead event. This should not lead to an
|
||||||
|
* exception or endless recursion and instead be logged.
|
||||||
|
*
|
||||||
|
* @since 1.1.0
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
void testUnhandledDeadEvent() {
|
||||||
|
bus.dispatch(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Event
|
@Event
|
||||||
|
@ -27,8 +27,8 @@ class DispatchTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests {@link EventBus#dispatch(Object)} with multiple handler priorities, a subtype handler
|
* Tests {@link EventBus#dispatch(Object)} with multiple handler priorities, a polymorphic
|
||||||
* and a static handler.
|
* handler and a static handler.
|
||||||
*
|
*
|
||||||
* @since 0.0.1
|
* @since 0.0.1
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user