From afb897300b9fd310a9a580b45b6f233e7325edf3 Mon Sep 17 00:00:00 2001 From: Oleg Date: Tue, 8 Mar 2016 00:56:08 -0800 Subject: [PATCH] Event driven architecture refactored. 1. Renamed Message to Event and Event to AbstractEvent 2. Generified Event and Handler 3. Updated EventDispatcher to make unsafe configuration impossible 4. Updated UML diagram accordingly --- event-driven-architecture/etc/eda.png | Bin 80265 -> 58476 bytes event-driven-architecture/etc/eda.ucls | 158 ++++++++---------- .../src/main/java/com/iluwatar/eda/App.java | 10 +- .../event/{Event.java => AbstractEvent.java} | 10 +- .../iluwatar/eda/event/UserCreatedEvent.java | 2 +- .../iluwatar/eda/event/UserUpdatedEvent.java | 2 +- .../framework/{Message.java => Event.java} | 6 +- .../eda/framework/EventDispatcher.java | 17 +- .../com/iluwatar/eda/framework/Handler.java | 6 +- .../eda/handler/UserCreatedEventHandler.java | 8 +- .../eda/handler/UserUpdatedEventHandler.java | 7 +- .../eda/event/UserCreatedEventTest.java | 6 +- .../eda/framework/EventDispatcherTest.java | 14 +- 13 files changed, 115 insertions(+), 131 deletions(-) rename event-driven-architecture/src/main/java/com/iluwatar/eda/event/{Event.java => AbstractEvent.java} (85%) rename event-driven-architecture/src/main/java/com/iluwatar/eda/framework/{Message.java => Event.java} (91%) diff --git a/event-driven-architecture/etc/eda.png b/event-driven-architecture/etc/eda.png index 38c433a409e06da181798e44e1db1b0b88e589c7..7437264518029acca6c2db4781b69d3b36c1a91a 100644 GIT binary patch literal 58476 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

*&nI)sQ1C8^KMhLOi}&PndASpm%;RT(W=9PU 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 XEPJa~ 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 F{{dVD$#eh! diff --git a/event-driven-architecture/etc/eda.ucls b/event-driven-architecture/etc/eda.ucls index 4ddb8b20c..776bedc81 100644 --- a/event-driven-architecture/etc/eda.ucls +++ b/event-driven-architecture/etc/eda.ucls @@ -4,7 +4,7 @@ - + @@ -15,7 +15,7 @@ project="event-driven-architecture" file="/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java" binary="false" corner="BOTTOM_RIGHT"> - + @@ -26,17 +26,17 @@ project="event-driven-architecture" file="/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java" binary="false" corner="BOTTOM_RIGHT"> - + - - + @@ -46,7 +46,7 @@ - + @@ -56,7 +56,7 @@ - + @@ -66,7 +66,7 @@ - + @@ -76,17 +76,17 @@ - + - - + @@ -94,99 +94,87 @@ - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + + - - + - - - + + + - - + + - - + + - - - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + - - + + diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/App.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/App.java index 4179046c8..866b3c9e9 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/App.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/App.java @@ -22,9 +22,9 @@ */ package com.iluwatar.eda; -import com.iluwatar.eda.event.Event; import com.iluwatar.eda.event.UserCreatedEvent; import com.iluwatar.eda.event.UserUpdatedEvent; +import com.iluwatar.eda.framework.Event; import com.iluwatar.eda.framework.EventDispatcher; import com.iluwatar.eda.handler.UserCreatedEventHandler; import com.iluwatar.eda.handler.UserUpdatedEventHandler; @@ -53,12 +53,12 @@ public class App { public static void main(String[] args) { EventDispatcher dispatcher = new EventDispatcher(); - dispatcher.registerChannel(UserCreatedEvent.class, new UserCreatedEventHandler()); - dispatcher.registerChannel(UserUpdatedEvent.class, new UserUpdatedEventHandler()); + dispatcher.registerHandler(UserCreatedEvent.class, new UserCreatedEventHandler()); + dispatcher.registerHandler(UserUpdatedEvent.class, new UserUpdatedEventHandler()); User user = new User("iluwatar"); - dispatcher.onEvent(new UserCreatedEvent(user)); - dispatcher.onEvent(new UserUpdatedEvent(user)); + dispatcher.dispatch(new UserCreatedEvent(user)); + dispatcher.dispatch(new UserUpdatedEvent(user)); } } diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/Event.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/AbstractEvent.java similarity index 85% rename from event-driven-architecture/src/main/java/com/iluwatar/eda/event/Event.java rename to event-driven-architecture/src/main/java/com/iluwatar/eda/event/AbstractEvent.java index 3ed0f9c9d..54a916c7b 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/Event.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/AbstractEvent.java @@ -23,10 +23,10 @@ package com.iluwatar.eda.event; import com.iluwatar.eda.framework.EventDispatcher; -import com.iluwatar.eda.framework.Message; +import com.iluwatar.eda.framework.Event; /** - * The {@link Event} class serves as a base class for defining custom events happening with your + * The {@link AbstractEvent} class serves as a base class for defining custom events happening with your * system. In this example we have two types of events defined. *

* Events can be distinguished using the {@link #getType() getType} method. */ -public class Event implements Message { +public abstract class AbstractEvent implements Event { /** * Returns the event type as a {@link Class} object * In this example, this method is used by the {@link EventDispatcher} to * dispatch events depending on their type. * - * @return the Event type as a {@link Class}. + * @return the AbstractEvent type as a {@link Class}. */ - public Class getType() { + public Class getType() { return getClass(); } } \ No newline at end of file diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java index e3354aaf2..717ed1a9d 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserCreatedEvent.java @@ -29,7 +29,7 @@ import com.iluwatar.eda.model.User; * This class can be extended to contain details about the user has been created. In this example, * the entire {@link User} object is passed on as data with the event. */ -public class UserCreatedEvent extends Event { +public class UserCreatedEvent extends AbstractEvent { private User user; diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserUpdatedEvent.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserUpdatedEvent.java index 37ca05932..9646957dc 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserUpdatedEvent.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/event/UserUpdatedEvent.java @@ -29,7 +29,7 @@ import com.iluwatar.eda.model.User; * This class can be extended to contain details about the user has been updated. In this example, * the entire {@link User} object is passed on as data with the event. */ -public class UserUpdatedEvent extends Event { +public class UserUpdatedEvent extends AbstractEvent { private User user; diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Message.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Event.java similarity index 91% rename from event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Message.java rename to event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Event.java index ee9c48965..c63d2746f 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Message.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Event.java @@ -23,15 +23,15 @@ package com.iluwatar.eda.framework; /** - * A {@link Message} is an object with a specific type that is associated + * A {@link Event} is an object with a specific type that is associated * to a specific {@link Handler}. */ -public interface Message { +public interface Event { /** * Returns the message type as a {@link Class} object. In this example the message type is * used to handle events by their type. * @return the message type as a {@link Class}. */ - Class getType(); + Class getType(); } diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/EventDispatcher.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/EventDispatcher.java index 69e2cf0e3..9f8e29315 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/EventDispatcher.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/EventDispatcher.java @@ -22,19 +22,16 @@ */ package com.iluwatar.eda.framework; -import com.iluwatar.eda.event.Event; - import java.util.HashMap; import java.util.Map; /** * Handles the routing of {@link Event} messages to associated handlers. * A {@link HashMap} is used to store the association between events and their respective handlers. - * */ public class EventDispatcher { - private Map, Handler> handlers; + private Map, Handler> handlers; public EventDispatcher() { handlers = new HashMap<>(); @@ -46,8 +43,8 @@ public class EventDispatcher { * @param eventType The {@link Event} to be registered * @param handler The {@link Handler} that will be handling the {@link Event} */ - public void registerChannel(Class eventType, - Handler handler) { + public void registerHandler(Class eventType, + Handler handler) { handlers.put(eventType, handler); } @@ -56,8 +53,12 @@ public class EventDispatcher { * * @param event The {@link Event} to be dispatched */ - public void onEvent(Event event) { - handlers.get(event.getClass()).onEvent(event); + @SuppressWarnings("unchecked") + public void dispatch(E event) { + Handler handler = (Handler) handlers.get(event.getClass()); + if (handler != null) { + handler.onEvent(event); + } } } \ No newline at end of file diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Handler.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Handler.java index 9c800a4d4..44bdab6dc 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Handler.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/framework/Handler.java @@ -22,13 +22,11 @@ */ package com.iluwatar.eda.framework; -import com.iluwatar.eda.event.Event; - /** * This interface can be implemented to handle different types of messages. * Every handler is responsible for a single of type message */ -public interface Handler { +public interface Handler { /** * The onEvent method should implement and handle behavior related to the event. @@ -36,5 +34,5 @@ public interface Handler { * a queue to be consumed by other sub systems. * @param event the {@link Event} object to be handled. */ - void onEvent(Event event); + void onEvent(E event); } \ No newline at end of file diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java index c51b3391a..3ef4e8255 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserCreatedEventHandler.java @@ -22,7 +22,6 @@ */ package com.iluwatar.eda.handler; -import com.iluwatar.eda.event.Event; import com.iluwatar.eda.event.UserCreatedEvent; import com.iluwatar.eda.framework.Handler; @@ -32,9 +31,10 @@ import com.iluwatar.eda.framework.Handler; public class UserCreatedEventHandler implements Handler { @Override - public void onEvent(Event message) { + public void onEvent(UserCreatedEvent event) { - UserCreatedEvent userCreatedEvent = (UserCreatedEvent) message; - System.out.printf("User with %s has been Created!", userCreatedEvent.getUser().getUsername()); + System.out.println(String.format( + "User '%s' has been Created!", event.getUser().getUsername())); } + } diff --git a/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java b/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java index 5be4ab5cc..0311d5781 100644 --- a/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java +++ b/event-driven-architecture/src/main/java/com/iluwatar/eda/handler/UserUpdatedEventHandler.java @@ -22,7 +22,6 @@ */ package com.iluwatar.eda.handler; -import com.iluwatar.eda.event.Event; import com.iluwatar.eda.event.UserUpdatedEvent; import com.iluwatar.eda.framework.Handler; @@ -32,9 +31,9 @@ import com.iluwatar.eda.framework.Handler; public class UserUpdatedEventHandler implements Handler { @Override - public void onEvent(Event message) { + public void onEvent(UserUpdatedEvent event) { - UserUpdatedEvent userUpdatedEvent = (UserUpdatedEvent) message; - System.out.printf("User with %s has been Updated!", userUpdatedEvent.getUser().getUsername()); + System.out.println(String.format( + "User '%s' has been Updated!", event.getUser().getUsername())); } } diff --git a/event-driven-architecture/src/test/java/com/iluwatar/eda/event/UserCreatedEventTest.java b/event-driven-architecture/src/test/java/com/iluwatar/eda/event/UserCreatedEventTest.java index 754fac678..b9074faf2 100644 --- a/event-driven-architecture/src/test/java/com/iluwatar/eda/event/UserCreatedEventTest.java +++ b/event-driven-architecture/src/test/java/com/iluwatar/eda/event/UserCreatedEventTest.java @@ -29,13 +29,13 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; /** - * {@link UserCreatedEventTest} tests and verifies {@link Event} behaviour. + * {@link UserCreatedEventTest} tests and verifies {@link AbstractEvent} behaviour. */ public class UserCreatedEventTest { /** - * This unit test should correctly return the {@link Event} class type when calling the - * {@link Event#getType() getType} method. + * This unit test should correctly return the {@link AbstractEvent} class type when calling the + * {@link AbstractEvent#getType() getType} method. */ @Test public void testGetEventType() { diff --git a/event-driven-architecture/src/test/java/com/iluwatar/eda/framework/EventDispatcherTest.java b/event-driven-architecture/src/test/java/com/iluwatar/eda/framework/EventDispatcherTest.java index 8db315ff4..21956afec 100644 --- a/event-driven-architecture/src/test/java/com/iluwatar/eda/framework/EventDispatcherTest.java +++ b/event-driven-architecture/src/test/java/com/iluwatar/eda/framework/EventDispatcherTest.java @@ -22,7 +22,6 @@ */ package com.iluwatar.eda.framework; -import com.iluwatar.eda.framework.EventDispatcher; import com.iluwatar.eda.event.UserCreatedEvent; import com.iluwatar.eda.event.UserUpdatedEvent; import com.iluwatar.eda.handler.UserCreatedEventHandler; @@ -49,8 +48,8 @@ public class EventDispatcherTest { EventDispatcher dispatcher = spy(new EventDispatcher()); UserCreatedEventHandler userCreatedEventHandler = spy(new UserCreatedEventHandler()); UserUpdatedEventHandler userUpdatedEventHandler = spy(new UserUpdatedEventHandler()); - dispatcher.registerChannel(UserCreatedEvent.class, userCreatedEventHandler); - dispatcher.registerChannel(UserUpdatedEvent.class, userUpdatedEventHandler); + dispatcher.registerHandler(UserCreatedEvent.class, userCreatedEventHandler); + dispatcher.registerHandler(UserUpdatedEvent.class, userUpdatedEventHandler); User user = new User("iluwatar"); @@ -58,15 +57,14 @@ public class EventDispatcherTest { UserUpdatedEvent userUpdatedEvent = new UserUpdatedEvent(user); //fire a userCreatedEvent and verify that userCreatedEventHandler has been invoked. - dispatcher.onEvent(userCreatedEvent); + dispatcher.dispatch(userCreatedEvent); verify(userCreatedEventHandler).onEvent(userCreatedEvent); - verify(dispatcher).onEvent(userCreatedEvent); + verify(dispatcher).dispatch(userCreatedEvent); //fire a userCreatedEvent and verify that userUpdatedEventHandler has been invoked. - dispatcher.onEvent(userUpdatedEvent); + dispatcher.dispatch(userUpdatedEvent); verify(userUpdatedEventHandler).onEvent(userUpdatedEvent); - verify(dispatcher).onEvent(userUpdatedEvent); + verify(dispatcher).dispatch(userUpdatedEvent); } - }