You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2014/03/22 20:56:48 UTC

svn commit: r1580307 - in /tomee/tomee/trunk/container/openejb-loader/src: main/java/org/apache/openejb/loader/SystemInstance.java main/java/org/apache/openejb/observer/ObserverManager.java test/java/org/apache/openejb/loader/EventTest.java

Author: dblevins
Date: Sat Mar 22 19:56:47 2014
New Revision: 1580307

URL: http://svn.apache.org/r1580307
Log:
More testing for TOMEE-1189
make fireEvent() return the event for fluent API

Modified:
    tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
    tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java
    tomee/tomee/trunk/container/openejb-loader/src/test/java/org/apache/openejb/loader/EventTest.java

Modified: tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java?rev=1580307&r1=1580306&r2=1580307&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java (original)
+++ tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/SystemInstance.java Sat Mar 22 19:56:47 2014
@@ -104,8 +104,8 @@ public class SystemInstance {
 
     }
 
-    public void fireEvent(Object event) {
-        observerManager.fireEvent(event);
+    public <E> E fireEvent(E event) {
+        return observerManager.fireEvent(event);
     }
 
     public boolean addObserver(Object observer) {

Modified: tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java?rev=1580307&r1=1580306&r2=1580307&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java (original)
+++ tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/ObserverManager.java Sat Mar 22 19:56:47 2014
@@ -67,11 +67,12 @@ public class ObserverManager {
         return removed;
     }
 
-    public <T> void fireEvent(final T event) {
+    public <T> T fireEvent(final T event) {
         if (event == null) throw new IllegalArgumentException("event cannot be null");
 
         doFire(event);
         doFire(new AfterEventImpl<T>(event));
+        return event;
     }
 
     private void doFire(final Object event) {

Modified: tomee/tomee/trunk/container/openejb-loader/src/test/java/org/apache/openejb/loader/EventTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-loader/src/test/java/org/apache/openejb/loader/EventTest.java?rev=1580307&r1=1580306&r2=1580307&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-loader/src/test/java/org/apache/openejb/loader/EventTest.java (original)
+++ tomee/tomee/trunk/container/openejb-loader/src/test/java/org/apache/openejb/loader/EventTest.java Sat Mar 22 19:56:47 2014
@@ -18,61 +18,126 @@ package org.apache.openejb.loader;
 
 import org.apache.openejb.observer.Observes;
 import org.apache.openejb.observer.event.AfterEvent;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 
 public class EventTest {
-    @After
     @Before
     public void reset() {
         SystemInstance.reset();
-        SimpleObserver.id = -1;
+        final SystemInstance s = SystemInstance.get();
+        s.addObserver(new AfterSimpleObserver());
+        s.addObserver(new SimpleObserver());
     }
 
     @Test
     public void simple() {
         final SystemInstance s = SystemInstance.get();
-        assertEquals(-1, SimpleObserver.id);
-        s.addObserver(new SimpleObserver());
-        s.fireEvent(new SimpleEvent());
-        assertEquals(1, SimpleObserver.id);
+        final OrangeEvent orangeEvent = s.fireEvent(new OrangeEvent());
+
+        assertEvent(orangeEvent.observed, SimpleObserver.orange);
     }
 
     @Test
     public void afterEvent() {
         final SystemInstance s = SystemInstance.get();
-        assertEquals(-1, SimpleObserver.id);
-        s.addObserver(new SimpleObserver());
-        s.addObserver(new AfterSimpleObserver());
-        final SimpleEvent event = new SimpleEvent();
-        s.fireEvent(event);
-        assertEquals(1, SimpleObserver.id);
-        assertNotNull(AfterSimpleObserver.event);
-        assertEquals(event, AfterSimpleObserver.event.getEvent());
+
+        assertEvent(s.fireEvent(new GreenEvent()).observed,
+                SimpleObserver.green,
+                AfterSimpleObserver.afterGreen
+        );
+
+        assertEvent(s.fireEvent(new SquareEvent()).observed,
+                AfterSimpleObserver.afterSquare
+        );
     }
 
-    public static class SimpleEvent {}
+    public static class ColorEvent {
+        final List<String> observed = new ArrayList<String>();
+    }
+
+    public static class OrangeEvent extends ColorEvent {
+    }
+
+    public static class GreenEvent extends ColorEvent {
+    }
+
+    public static class SquareEvent {
+        final List<String> observed = new ArrayList<String>();
+    }
+
+
+    public static class ColorObserver {
+        private static final String afterColor = "ColorObserver.afterColor";
+        private static final String color = "ColorObserver.color";
+
+        public void observe(@Observes ColorEvent event) {
+            event.observed.add(color);
+        }
+
+        public void observe(@Observes AfterEvent<ColorEvent> event) {
+            assertThat(event.getEvent(), instanceOf(ColorEvent.class));
+            event.getEvent().observed.add(color);
+        }
+    }
 
     public static class AfterSimpleObserver {
-        private static AfterEvent<SimpleEvent> event;
 
-        public void observe(final @Observes AfterEvent<SimpleEvent> event) {
-            AfterSimpleObserver.event = event;
-            assertThat(event.getEvent(), instanceOf(SimpleEvent.class));
+        private static final String afterGreen = "AfterSimpleObserver.afterGreen";
+        private static final String afterSquare = "AfterSimpleObserver.afterSquare";
+
+        public void afterGreen(final @Observes AfterEvent<GreenEvent> event) {
+            assertThat(event.getEvent(), instanceOf(GreenEvent.class));
+            event.getEvent().observed.add(afterGreen);
+        }
+
+        public void afterSquare(final @Observes AfterEvent<SquareEvent> event) {
+            assertThat(event.getEvent(), instanceOf(SquareEvent.class));
+            event.getEvent().observed.add(afterSquare);
         }
     }
 
     public static class SimpleObserver {
-        private static int id = -1;
 
-        public void observe(final @Observes SimpleEvent event) {
-            id = 1;
+        private static final String orange = "SimpleObserver.orange";
+        private static final String green = "SimpleObserver.green";
+
+        public void observe(final @Observes OrangeEvent event) {
+            event.observed.add(orange);
+        }
+
+        public void observe(final @Observes GreenEvent event) {
+            event.observed.add(green);
         }
     }
-}
+
+    private static void assertEvent(List<String> observed, String... expected) {
+        assertEquals(join(expected), join(observed));
+    }
+
+    public static String join(final Object... collection) {
+        return join(Arrays.asList(collection));
+    }
+
+    public static String join(final Collection<?> collection) {
+        final String delimiter = "\n";
+        if (collection.size() == 0) {
+            return "";
+        }
+        final StringBuilder sb = new StringBuilder();
+        for (final Object obj : collection) {
+            sb.append(obj).append(delimiter);
+        }
+        return sb.substring(0, sb.length() - delimiter.length());
+    }
+
+}
\ No newline at end of file