diff --git a/README.md b/README.md
index efe571e..07e8240 100644
--- a/README.md
+++ b/README.md
@@ -108,7 +108,7 @@ To include it inside your project, just add the Maven repository and the depende
dev.kske
event-bus
- 0.0.4
+ 0.1.0
```
diff --git a/pom.xml b/pom.xml
index d1a0f85..396a840 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
dev.kske
event-bus
- 0.0.4
+ 0.1.0
Event Bus
An event handling framework for Java utilizing annotations.
diff --git a/src/main/java/dev/kske/eventbus/EventBus.java b/src/main/java/dev/kske/eventbus/EventBus.java
index a069e00..4905889 100644
--- a/src/main/java/dev/kske/eventbus/EventBus.java
+++ b/src/main/java/dev/kske/eventbus/EventBus.java
@@ -1,5 +1,7 @@
package dev.kske.eventbus;
+import java.lang.System.Logger;
+import java.lang.System.Logger.Level;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -19,6 +21,8 @@ public final class EventBus {
private static EventBus singletonInstance;
+ private static final Logger logger = System.getLogger(EventBus.class.getName());
+
/**
* Produces a singleton instance of the event bus. It is lazily initialized on the first call.
*
@@ -26,8 +30,10 @@ public final class EventBus {
* @since 0.0.2
*/
public static EventBus getInstance() {
- if (singletonInstance == null)
+ if (singletonInstance == null) {
+ logger.log(Level.DEBUG, "Initializing singleton event bus instance");
singletonInstance = new EventBus();
+ }
return singletonInstance;
}
@@ -44,6 +50,7 @@ public final class EventBus {
*/
public void dispatch(IEvent event) {
Objects.requireNonNull(event);
+ logger.log(Level.INFO, "Dispatching event {0}", event);
getHandlersFor(event.getClass()).forEach(handler -> handler.execute(event));
}
@@ -84,6 +91,8 @@ public final class EventBus {
Objects.requireNonNull(listener);
if (registeredListeners.contains(listener))
throw new EventBusException(listener + " already registered!");
+ logger.log(Level.INFO, "Registering event listener {0}", listener.getClass().getName());
+ boolean handlerBound = false;
registeredListeners.add(listener);
for (var method : listener.getClass().getDeclaredMethods()) {
@@ -97,9 +106,18 @@ public final class EventBus {
var handler = new EventHandler(listener, method, annotation);
if (!bindings.containsKey(handler.getEventType()))
bindings.put(handler.getEventType(), new TreeSet<>());
+ logger.log(Level.DEBUG, "Binding event handler {0}", handler);
bindings.get(handler.getEventType())
.add(handler);
+ handlerBound = true;
}
+
+ if(!handlerBound)
+ logger.log(
+ Level.WARNING,
+ "No event handlers bound for event listener {0}",
+ listener.getClass().getName()
+ );
}
/**
@@ -110,11 +128,17 @@ public final class EventBus {
*/
public void removeListener(EventListener listener) {
Objects.requireNonNull(listener);
+ logger.log(Level.INFO, "Removing event listener {0}", listener.getClass().getName());
+
for (var binding : bindings.values()) {
var it = binding.iterator();
- while (it.hasNext())
- if (it.next().getListener() == listener)
+ while (it.hasNext()) {
+ var handler = it.next();
+ if (handler.getListener() == listener) {
+ logger.log(Level.DEBUG, "Unbinding event handler {0}", handler);
it.remove();
+ }
+ }
}
registeredListeners.remove(listener);
}
@@ -125,6 +149,7 @@ public final class EventBus {
* @since 0.0.1
*/
public void clearListeners() {
+ logger.log(Level.INFO, "Clearing event listeners");
bindings.clear();
registeredListeners.clear();
}
diff --git a/src/main/java/dev/kske/eventbus/EventHandler.java b/src/main/java/dev/kske/eventbus/EventHandler.java
index 2dfb257..53d9085 100644
--- a/src/main/java/dev/kske/eventbus/EventHandler.java
+++ b/src/main/java/dev/kske/eventbus/EventHandler.java
@@ -77,6 +77,11 @@ final class EventHandler implements Comparable {
return priority == 0 ? hashCode() - other.hashCode() : priority;
}
+ @Override
+ public String toString() {
+ return String.format("EventHandler[method=%s, annotation=%s]", method, annotation);
+ }
+
/**
* Executes the event handler.
*