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