From a924f25f51d6ce9a2740639cc1634d9c3c26bc48 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 16 Dec 2025 15:26:39 +0100 Subject: [PATCH] preparing event bus Signed-off-by: Stephan Richter --- bus/build.gradle.kts | 6 +++++ .../srsoftware/umbrella/messagebus/Event.java | 4 +++ .../umbrella/messagebus/EventListener.java | 5 ++++ .../umbrella/messagebus/MessageBus.java | 27 +++++++++++++++++++ settings.gradle.kts | 1 + 5 files changed, 43 insertions(+) create mode 100644 bus/build.gradle.kts create mode 100644 bus/src/main/java/de/srsoftware/umbrella/messagebus/Event.java create mode 100644 bus/src/main/java/de/srsoftware/umbrella/messagebus/EventListener.java create mode 100644 bus/src/main/java/de/srsoftware/umbrella/messagebus/MessageBus.java diff --git a/bus/build.gradle.kts b/bus/build.gradle.kts new file mode 100644 index 0000000..5bf8c1c --- /dev/null +++ b/bus/build.gradle.kts @@ -0,0 +1,6 @@ +description = "Umbrella : Messagebus" + +dependencies{ + implementation(project(":core")) +} + diff --git a/bus/src/main/java/de/srsoftware/umbrella/messagebus/Event.java b/bus/src/main/java/de/srsoftware/umbrella/messagebus/Event.java new file mode 100644 index 0000000..d28834c --- /dev/null +++ b/bus/src/main/java/de/srsoftware/umbrella/messagebus/Event.java @@ -0,0 +1,4 @@ +package de.srsoftware.umbrella.messagebus; + +public class Event { +} diff --git a/bus/src/main/java/de/srsoftware/umbrella/messagebus/EventListener.java b/bus/src/main/java/de/srsoftware/umbrella/messagebus/EventListener.java new file mode 100644 index 0000000..52f115f --- /dev/null +++ b/bus/src/main/java/de/srsoftware/umbrella/messagebus/EventListener.java @@ -0,0 +1,5 @@ +package de.srsoftware.umbrella.messagebus; + +public interface EventListener { + public void onEvent(Event event); +} diff --git a/bus/src/main/java/de/srsoftware/umbrella/messagebus/MessageBus.java b/bus/src/main/java/de/srsoftware/umbrella/messagebus/MessageBus.java new file mode 100644 index 0000000..aaa1ad6 --- /dev/null +++ b/bus/src/main/java/de/srsoftware/umbrella/messagebus/MessageBus.java @@ -0,0 +1,27 @@ +package de.srsoftware.umbrella.messagebus; + +import java.util.HashSet; +import java.util.Set; + +public class MessageBus { + private static MessageBus SINGLETON = new MessageBus(); + private Set listeners = new HashSet<>(); + + private MessageBus(){} + + public void dispatch(Event event){ + listeners.parallelStream().forEach(l -> l.onEvent(event)); + } + + public void drop(EventListener listener){ + listeners.remove(listener); + } + + public static MessageBus messageBus(){ + return SINGLETON; + } + + public void register(EventListener listener){ + listeners.add(listener); + } +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 950a44a..aaf9341 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,6 +2,7 @@ rootProject.name = "Umbrella25" include("backend") include("bookmark") +include("bus") include("company") include("contact") include("core")