BAEL-2274 DDD Bounded Contexts and Java Modules

This commit is contained in:
Alexander Molochko
2020-02-14 08:29:21 +02:00
parent d345e199bf
commit 0e15e1310a
31 changed files with 956 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
package com.baeldung.dddmodules.sharedkernel.events;
import java.util.Map;
public abstract class ApplicationEvent {
protected Map<String, String> payload;
public abstract String getType();
public String getPayloadValue(String key) {
if (this.payload.containsKey(key)) {
return this.payload.get(key);
}
return "";
}
public ApplicationEvent(Map<String, String> payload) {
this.payload = payload;
}
}

View File

@@ -0,0 +1,9 @@
package com.baeldung.dddmodules.sharedkernel.events;
public interface EventBus {
<E extends ApplicationEvent> void publish(E event);
<E extends ApplicationEvent> void subscribe(String eventType, EventSubscriber subscriber);
<E extends ApplicationEvent> void unsubscribe(String eventType, EventSubscriber subscriber);
}

View File

@@ -0,0 +1,5 @@
package com.baeldung.dddmodules.sharedkernel.events;
public interface EventSubscriber {
<E extends ApplicationEvent> void onEvent(E event);
}

View File

@@ -0,0 +1,33 @@
package com.baeldung.dddmodules.sharedkernel.service;
import com.baeldung.dddmodules.sharedkernel.events.ApplicationEvent;
import com.baeldung.dddmodules.sharedkernel.events.EventBus;
import com.baeldung.dddmodules.sharedkernel.events.EventSubscriber;
public interface ApplicationService {
default <E extends ApplicationEvent> void publishEvent(E event) {
EventBus eventBus = getEventBus();
if (eventBus != null) {
eventBus.publish(event);
}
}
default <E extends ApplicationEvent> void subscribe(String eventType, EventSubscriber subscriber) {
EventBus eventBus = getEventBus();
if (eventBus != null) {
eventBus.subscribe(eventType, subscriber);
}
}
default <E extends ApplicationEvent> void unsubscribe(String eventType, EventSubscriber subscriber) {
EventBus eventBus = getEventBus();
if (eventBus != null) {
eventBus.unsubscribe(eventType, subscriber);
}
}
EventBus getEventBus();
void setEventBus(EventBus eventBus);
}

View File

@@ -0,0 +1,4 @@
module com.baeldung.dddmodules.sharedkernel {
exports com.baeldung.dddmodules.sharedkernel.events;
exports com.baeldung.dddmodules.sharedkernel.service;
}