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 22:54:09 UTC

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

Author: dblevins
Date: Sat Mar 22 21:54:09 2014
New Revision: 1580338

URL: http://svn.apache.org/r1580338
Log:
TOMEE-1149: BeforeEvent to compliment AfterEvent

Added:
    tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/BeforeEvent.java
      - copied, changed from r1580223, tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/AfterEvent.java
Modified:
    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/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=1580338&r1=1580337&r2=1580338&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 21:54:09 2014
@@ -17,6 +17,7 @@
 package org.apache.openejb.observer;
 
 import org.apache.openejb.observer.event.AfterEvent;
+import org.apache.openejb.observer.event.BeforeEvent;
 import org.apache.openejb.observer.event.ObserverAdded;
 import org.apache.openejb.observer.event.ObserverFailed;
 import org.apache.openejb.observer.event.ObserverRemoved;
@@ -70,6 +71,7 @@ public class ObserverManager {
     public <T> T fireEvent(final T event) {
         if (event == null) throw new IllegalArgumentException("event cannot be null");
 
+        doFire(new BeforeEventImpl<T>(event));
         doFire(event);
         doFire(new AfterEventImpl<T>(event));
         return event;
@@ -193,6 +195,28 @@ public class ObserverManager {
                         return new Invocation(this, m.getValue(), event);
                     }
                 }
+            } else if (method == null && BeforeEventImpl.class.isInstance(event)) {
+                final Type type = new ParameterizedType() {
+                    @Override
+                    public Type[] getActualTypeArguments() {
+                        return new Type[] { BeforeEventImpl.class.cast(event).getEvent().getClass() };
+                    }
+
+                    @Override
+                    public Type getRawType() {
+                        return BeforeEvent.class;
+                    }
+
+                    @Override
+                    public Type getOwnerType() {
+                        return null;
+                    }
+                };
+                for (final Map.Entry<Type, Method> m : methods.entrySet()) {
+                    if (m.getKey().equals(type)) {
+                        return new Invocation(this, m.getValue(), event);
+                    }
+                }
             }
 
             if (method != null) {
@@ -283,4 +307,16 @@ public class ObserverManager {
             return event;
         }
     }
+
+    private static class BeforeEventImpl<T> implements BeforeEvent<T> {
+        private final T event;
+
+        public BeforeEventImpl(final T event) {
+            this.event = event;
+        }
+
+        public T getEvent() {
+            return event;
+        }
+    }
 }

Copied: tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/BeforeEvent.java (from r1580223, tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/AfterEvent.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/BeforeEvent.java?p2=tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/BeforeEvent.java&p1=tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/AfterEvent.java&r1=1580223&r2=1580338&rev=1580338&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/AfterEvent.java (original)
+++ tomee/tomee/trunk/container/openejb-loader/src/main/java/org/apache/openejb/observer/event/BeforeEvent.java Sat Mar 22 21:54:09 2014
@@ -19,6 +19,6 @@ package org.apache.openejb.observer.even
 import org.apache.openejb.observer.Event;
 
 @Event
-public interface AfterEvent<T> {
+public interface BeforeEvent<T> {
     T getEvent();
 }

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=1580338&r1=1580337&r2=1580338&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 21:54:09 2014
@@ -18,6 +18,7 @@ package org.apache.openejb.loader;
 
 import org.apache.openejb.observer.Observes;
 import org.apache.openejb.observer.event.AfterEvent;
+import org.apache.openejb.observer.event.BeforeEvent;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -63,10 +64,11 @@ public class EventTest {
     }
 
     @Test
-    public void observeBoth() {
+    public void observeAll() {
         final SystemInstance s = SystemInstance.get();
 
         assertEvent(s.fireEvent(new BlueEvent()).observed,
+                BlueObserver.beforeBlue,
                 BlueObserver.blue,
                 BlueObserver.afterBlue
         );
@@ -139,6 +141,11 @@ public class EventTest {
 
         private static final String blue = "BlueObserver.blue";
         private static final String afterBlue = "BlueObserver.afterBlue";
+        private static final String beforeBlue = "BlueObserver.beforeBlue";
+
+        public void observeBefore(final @Observes BeforeEvent<BlueEvent> event) {
+            event.getEvent().observed.add(beforeBlue);
+        }
 
         public void observe(final @Observes BlueEvent event) {
             event.observed.add(blue);