You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by km...@apache.org on 2010/07/26 20:11:14 UTC

svn commit: r979393 - in /openejb/trunk/openejb3/container/openejb-core/src: main/java/org/apache/openejb/config/rules/CheckCallbacks.java test/java/org/apache/openejb/config/rules/CheckInvalidCallbacksTest.java

Author: kmalhi
Date: Mon Jul 26 18:11:14 2010
New Revision: 979393

URL: http://svn.apache.org/viewvc?rev=979393&view=rev
Log:
Tested some more callback keys.
Fixed logic for checking for invalid usage of callback annotations while implementing SessionSynchronization

Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckCallbacks.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckInvalidCallbacksTest.java

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckCallbacks.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckCallbacks.java?rev=979393&r1=979392&r2=979393&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckCallbacks.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/rules/CheckCallbacks.java Mon Jul 26 18:11:14 2010
@@ -332,11 +332,11 @@ public class CheckCallbacks extends Vali
     private void checkSessionSynchronization(Class ejbClass, SessionBean bean) {
         if (SessionSynchronization.class.isAssignableFrom(ejbClass)) {
             if (bean.getAfterBeginMethod() != null || bean.getBeforeCompletionMethod() != null || bean.getAfterCompletionMethod() != null) {
-                fail(bean, "calllback.invalidSessionSynchronizationUse", ejbClass.getName());
+                fail(bean, "callback.sessionSynchronization.invalidUse", ejbClass.getName());
             } else {
                 ClassFinder classFinder = new ClassFinder(ejbClass);
-                if (classFinder.findAnnotatedMethods(AfterBegin.class).size() > 0 || classFinder.findAnnotatedMethods(AfterBegin.class).size() > 0
-                        || classFinder.findAnnotatedMethods(AfterBegin.class).size() > 0) {
+                if (classFinder.findAnnotatedMethods(AfterBegin.class).size() > 0 || classFinder.findAnnotatedMethods(BeforeCompletion.class).size() > 0
+                        || classFinder.findAnnotatedMethods(AfterCompletion.class).size() > 0) {
                     fail(bean, "callback.sessionSynchronization.invalidUse", ejbClass.getName());
                 }
             }

Modified: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckInvalidCallbacksTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckInvalidCallbacksTest.java?rev=979393&r1=979392&r2=979393&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckInvalidCallbacksTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/rules/CheckInvalidCallbacksTest.java Mon Jul 26 18:11:14 2010
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.config.rules;
 
+import java.rmi.RemoteException;
 import java.util.concurrent.Callable;
 
 import javax.annotation.PostConstruct;
@@ -23,12 +24,15 @@ import javax.annotation.PreDestroy;
 import javax.ejb.AfterBegin;
 import javax.ejb.AfterCompletion;
 import javax.ejb.BeforeCompletion;
+import javax.ejb.EJBException;
 import javax.ejb.PostActivate;
 import javax.ejb.PrePassivate;
+import javax.ejb.SessionSynchronization;
 
 import junit.framework.TestCase;
 
 import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.NamedMethod;
 import org.apache.openejb.jee.SingletonBean;
 import org.apache.openejb.jee.StatefulBean;
 import org.apache.openejb.jee.StatelessBean;
@@ -40,13 +44,20 @@ import org.junit.runner.RunWith;
 @RunWith(ValidationRunner.class)
 public class CheckInvalidCallbacksTest extends TestCase {
     @Keys( { @Key(value = "ignoredAnnotation", count = 10, type = KeyType.WARNING), @Key("callback.missing.possibleTypo"), @Key("callback.badReturnType"),
-            @Key("callback.badModifier"), @Key("callback.invalidArguments"), @Key("aroundInvoke.missing") })
+            @Key("callback.badModifier"), @Key("callback.invalidArguments"), @Key("aroundInvoke.missing"), @Key("callback.missing"),
+            @Key(value="callback.sessionSynchronization.invalidUse",count=2) })
     public EjbJar test() throws Exception {
         EjbJar ejbJar = new EjbJar();
         StatelessBean testBean = ejbJar.addEnterpriseBean(new StatelessBean("TestStateless", TestBean.class));
         testBean.addAroundInvoke("wrongMethod");
+        testBean.addPostConstruct("wrongMethod");
         ejbJar.addEnterpriseBean(new SingletonBean("TestSingleton", TestBean.class));
         ejbJar.addEnterpriseBean(new StatefulBean("FooStateful", FooBean.class));
+        ejbJar.addEnterpriseBean(new StatefulBean("BarStateful", BarBean.class));
+        StatefulBean starBean = ejbJar.addEnterpriseBean(new StatefulBean("StarStateful", StarBean.class));
+        starBean.setAfterBeginMethod(new NamedMethod("myAfterBegin"));
+        starBean.setBeforeCompletionMethod(new NamedMethod("myBeforeCompletion"));
+        starBean.setAfterCompletionMethod(new NamedMethod("myAfterCompletion"));
         return ejbJar;
     }
 
@@ -104,4 +115,41 @@ public class CheckInvalidCallbacksTest e
         @AfterCompletion
         public void afterCompletionTypo() {}
     }
+
+    public static class BarBean implements SessionSynchronization {
+        @AfterBegin
+        public void myAfterBegin() {}
+
+        @BeforeCompletion
+        public void myBeforeCompletion() {}
+
+        @AfterCompletion
+        public void myAfterCompletion(boolean committed) {}
+
+        @Override
+        public void afterBegin() throws EJBException, RemoteException {}
+
+        @Override
+        public void afterCompletion(boolean arg0) throws EJBException, RemoteException {}
+
+        @Override
+        public void beforeCompletion() throws EJBException, RemoteException {}
+    }
+
+    public static class StarBean implements SessionSynchronization {
+        public void myAfterBegin() {}
+
+        public void myBeforeCompletion() {}
+
+        public void myAfterCompletion(boolean committed) {}
+
+        @Override
+        public void afterBegin() throws EJBException, RemoteException {}
+
+        @Override
+        public void afterCompletion(boolean arg0) throws EJBException, RemoteException {}
+
+        @Override
+        public void beforeCompletion() throws EJBException, RemoteException {}
+    }
 }
\ No newline at end of file