diff --git a/framework/src/main/java/org/toop/framework/eventbus/EventFlow.java b/framework/src/main/java/org/toop/framework/eventbus/EventFlow.java index dac2344..404db01 100644 --- a/framework/src/main/java/org/toop/framework/eventbus/EventFlow.java +++ b/framework/src/main/java/org/toop/framework/eventbus/EventFlow.java @@ -430,7 +430,7 @@ public class EventFlow { */ public void unsubscribe(Consumer action) { this.listeners.removeIf(handler -> { - if (handler.getAction().equals(action)) { + if (handler.handler().equals(action)) { eventBus.unsubscribe(handler); return true; } @@ -445,7 +445,7 @@ public class EventFlow { */ public void unsubscribe(String name) { this.listeners.removeIf(handler -> { - if (handler.getId().equals(name)) { + if (handler.id().equals(name)) { eventBus.unsubscribe(handler); return true; } diff --git a/framework/src/main/java/org/toop/framework/eventbus/bus/DefaultEventBus.java b/framework/src/main/java/org/toop/framework/eventbus/bus/DefaultEventBus.java index 9aeeb05..c703ee2 100644 --- a/framework/src/main/java/org/toop/framework/eventbus/bus/DefaultEventBus.java +++ b/framework/src/main/java/org/toop/framework/eventbus/bus/DefaultEventBus.java @@ -33,8 +33,8 @@ public class DefaultEventBus implements EventBus { var subs = eventsHolder.get(eventType); if (subs != null) { for (Subscriber subscriber : subs) { - Class eventClass = (Class) subscriber.getEvent(); - Consumer action = (Consumer) subscriber.getAction(); + Class eventClass = (Class) subscriber.event(); + Consumer action = (Consumer) subscriber.handler(); action.accept((EventType) eventClass.cast(event)); } diff --git a/framework/src/main/java/org/toop/framework/eventbus/bus/DisruptorEventBus.java b/framework/src/main/java/org/toop/framework/eventbus/bus/DisruptorEventBus.java index df1502a..9a4d8d4 100644 --- a/framework/src/main/java/org/toop/framework/eventbus/bus/DisruptorEventBus.java +++ b/framework/src/main/java/org/toop/framework/eventbus/bus/DisruptorEventBus.java @@ -109,8 +109,8 @@ public class DisruptorEventBus implements EventBus { @SuppressWarnings("unchecked") private void callListener(Subscriber subscriber, T event) { - Class eventClass = (Class) subscriber.getEvent(); - Consumer action = (Consumer) subscriber.getAction(); + Class eventClass = (Class) subscriber.event(); + Consumer action = (Consumer) subscriber.handler(); action.accept((EventType) eventClass.cast(event)); } diff --git a/framework/src/main/java/org/toop/framework/eventbus/holder/AsyncSubscriberStore.java b/framework/src/main/java/org/toop/framework/eventbus/holder/AsyncSubscriberStore.java index 1cebff7..579b6a3 100644 --- a/framework/src/main/java/org/toop/framework/eventbus/holder/AsyncSubscriberStore.java +++ b/framework/src/main/java/org/toop/framework/eventbus/holder/AsyncSubscriberStore.java @@ -11,16 +11,16 @@ public class AsyncSubscriberStore implements SubscriberStore { @Override public void add(Subscriber sub) { - queues.computeIfAbsent(sub.getEvent(), _ -> new ConcurrentLinkedQueue<>()).add(sub); - rebuildSnapshot(sub.getEvent()); + queues.computeIfAbsent(sub.event(), _ -> new ConcurrentLinkedQueue<>()).add(sub); + rebuildSnapshot(sub.event()); } @Override public void remove(Subscriber sub) { - ConcurrentLinkedQueue> queue = queues.get(sub.getEvent()); + ConcurrentLinkedQueue> queue = queues.get(sub.event()); if (queue != null) { queue.remove(sub); - rebuildSnapshot(sub.getEvent()); + rebuildSnapshot(sub.event()); } } diff --git a/framework/src/main/java/org/toop/framework/eventbus/holder/DefaultSubscriberStore.java b/framework/src/main/java/org/toop/framework/eventbus/holder/DefaultSubscriberStore.java index 970cb04..9991a91 100644 --- a/framework/src/main/java/org/toop/framework/eventbus/holder/DefaultSubscriberStore.java +++ b/framework/src/main/java/org/toop/framework/eventbus/holder/DefaultSubscriberStore.java @@ -13,7 +13,7 @@ public class DefaultSubscriberStore implements SubscriberStore { @Override public void add(Subscriber sub) { - listeners.compute(sub.getEvent(), (_, arr) -> { + listeners.compute(sub.event(), (_, arr) -> { if (arr == null || arr.length == 0) { return new Subscriber[]{sub}; } @@ -28,7 +28,7 @@ public class DefaultSubscriberStore implements SubscriberStore { @Override public void remove(Subscriber sub) { - listeners.computeIfPresent(sub.getEvent(), (_, arr) -> { + listeners.computeIfPresent(sub.event(), (_, arr) -> { int len = arr.length; if (len == 1) { diff --git a/framework/src/main/java/org/toop/framework/eventbus/holder/SyncSubscriberStore.java b/framework/src/main/java/org/toop/framework/eventbus/holder/SyncSubscriberStore.java index cb8397d..594bb34 100644 --- a/framework/src/main/java/org/toop/framework/eventbus/holder/SyncSubscriberStore.java +++ b/framework/src/main/java/org/toop/framework/eventbus/holder/SyncSubscriberStore.java @@ -13,12 +13,12 @@ public class SyncSubscriberStore implements SubscriberStore { @Override public void add(Subscriber sub) { - LISTENERS.computeIfAbsent(sub.getEvent(), _ -> new ArrayList<>()).add(sub); + LISTENERS.computeIfAbsent(sub.event(), _ -> new ArrayList<>()).add(sub); } @Override public void remove(Subscriber sub) { - LISTENERS.getOrDefault(sub.getEvent(), new ArrayList<>()).remove(sub); + LISTENERS.getOrDefault(sub.event(), new ArrayList<>()).remove(sub); LISTENERS.entrySet().removeIf(entry -> entry.getValue().isEmpty()); } diff --git a/framework/src/main/java/org/toop/framework/eventbus/subscriber/DefaultSubscriber.java b/framework/src/main/java/org/toop/framework/eventbus/subscriber/DefaultSubscriber.java index b6a02fc..47f5646 100644 --- a/framework/src/main/java/org/toop/framework/eventbus/subscriber/DefaultSubscriber.java +++ b/framework/src/main/java/org/toop/framework/eventbus/subscriber/DefaultSubscriber.java @@ -2,29 +2,4 @@ package org.toop.framework.eventbus.subscriber; import java.util.function.Consumer; -public class DefaultSubscriber implements Subscriber { - private final K id; - private final Class event; - private final Consumer action; - - public DefaultSubscriber(K id, Class eventClass, Consumer action) { - this.id = id; - this.event = eventClass; - this.action = action; - } - - @Override - public K getId() { - return id; - } - - @Override - public Class getEvent() { - return event; - } - - @Override - public Consumer getAction() { - return action; - } -} +public record DefaultSubscriber(String id, Class event, Consumer handler) implements NamedSubscriber {} diff --git a/framework/src/main/java/org/toop/framework/eventbus/subscriber/IdSubscriber.java b/framework/src/main/java/org/toop/framework/eventbus/subscriber/IdSubscriber.java new file mode 100644 index 0000000..656974a --- /dev/null +++ b/framework/src/main/java/org/toop/framework/eventbus/subscriber/IdSubscriber.java @@ -0,0 +1,3 @@ +package org.toop.framework.eventbus.subscriber; + +public interface IdSubscriber extends Subscriber {} diff --git a/framework/src/main/java/org/toop/framework/eventbus/subscriber/LongIdSubscriber.java b/framework/src/main/java/org/toop/framework/eventbus/subscriber/LongIdSubscriber.java new file mode 100644 index 0000000..0b105d4 --- /dev/null +++ b/framework/src/main/java/org/toop/framework/eventbus/subscriber/LongIdSubscriber.java @@ -0,0 +1,5 @@ +package org.toop.framework.eventbus.subscriber; + +import java.util.function.Consumer; + +public record LongIdSubscriber(Long id, Class event, Consumer handler) implements IdSubscriber {} diff --git a/framework/src/main/java/org/toop/framework/eventbus/subscriber/NamedSubscriber.java b/framework/src/main/java/org/toop/framework/eventbus/subscriber/NamedSubscriber.java new file mode 100644 index 0000000..4b7ad8e --- /dev/null +++ b/framework/src/main/java/org/toop/framework/eventbus/subscriber/NamedSubscriber.java @@ -0,0 +1,3 @@ +package org.toop.framework.eventbus.subscriber; + +public interface NamedSubscriber extends Subscriber {} diff --git a/framework/src/main/java/org/toop/framework/eventbus/subscriber/Subscriber.java b/framework/src/main/java/org/toop/framework/eventbus/subscriber/Subscriber.java index b921836..30ad23e 100644 --- a/framework/src/main/java/org/toop/framework/eventbus/subscriber/Subscriber.java +++ b/framework/src/main/java/org/toop/framework/eventbus/subscriber/Subscriber.java @@ -2,8 +2,8 @@ package org.toop.framework.eventbus.subscriber; import java.util.function.Consumer; -public interface Subscriber { - T getId(); - Class getEvent(); - Consumer getAction(); +public interface Subscriber { + ID id(); + Class event(); + Consumer handler(); }