[webbeans-commits] Webbeans SVN: r291 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/ejb and 3 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Wed Nov 12 05:22:02 EST 2008


Author: nickarls
Date: 2008-11-12 05:22:01 -0500 (Wed, 12 Nov 2008)
New Revision: 291

Added:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/XmlEnterpriseBean.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/invalid/ChowChow.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EjbMetaData.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/EnterpriseBeanDeclarationTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/EnterpriseBeanRemoveMethodTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/util/Util.java
Log:
Minor. Handling of multiple no-args remove methods
XmlEnterpriseBean + creators in Util

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java	2008-11-11 15:47:51 UTC (rev 290)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java	2008-11-12 10:22:01 UTC (rev 291)
@@ -143,10 +143,6 @@
       // <1 (0) @Destructors
       if (getEjbMetaData().getNoArgsRemoveMethod() != null)
       {
-         if (getEjbMetaData().getRemoveMethods().size() > 1)
-         {
-            throw new DefinitionException("Multiple @Remove methods but no @Destructor found");
-         }
          super.removeMethod = checkRemoveMethod(getEjbMetaData().getNoArgsRemoveMethod());
          return;
       }
@@ -155,65 +151,9 @@
       {
          throw new DefinitionException("Only @Dependent scoped enterprise beans can be without remove methods");
       }
-      
-/*      
-      if (getEjbMetaData().isStateful())
-      {
-         if (getEjbMetaData().getRemoveMethods().size() == 1)
-         {
-            super.removeMethod = checkRemoveMethod(getEjbMetaData().getRemoveMethods().iterator().next());
-         }
-         else if (getEjbMetaData().getRemoveMethods().size() > 1)
-         {
-            List<Method> possibleRemoveMethods = new ArrayList<Method>();
-            for (Method removeMethod : getEjbMetaData().getRemoveMethods())
-            {
-               if (removeMethod.isAnnotationPresent(Destructor.class))
-               {
-                  possibleRemoveMethods.add(removeMethod);
-               }
-            }
-            if (possibleRemoveMethods.size() == 1)
-            {
-               super.removeMethod = checkRemoveMethod(possibleRemoveMethods.iterator().next());
-            }
-            else if (possibleRemoveMethods.size() == 2)
-            {
-               Method firstMethod = possibleRemoveMethods.get(0);
-               Method secondMethod = possibleRemoveMethods.get(1);
-               // If the method has both the @Remove and @Destructor annotation, it gets added twice in 
-               // the EjbMetaData constructor.
-               if (!firstMethod.equals(secondMethod)) {
-                  throw new DefinitionException("Multiple remove methods are annotated @Remove/@Destructor for " + getType());
-               }
-               super.removeMethod = checkRemoveMethod(possibleRemoveMethods.iterator().next());
-            }
-            else if (possibleRemoveMethods.size() > 2) 
-            {
-               throw new DefinitionException("Multiple remove methods are annotated @Remove/@Destructor for " + getType());
-            }
-            else if (possibleRemoveMethods.size() == 0)
-            {
-               throw new RuntimeException("Multiple remove methods are declared, and none are annotated @Destructor for " + getType());
-            }
-         }
-         else if (getEjbMetaData().getRemoveMethods().isEmpty() && !getScopeType().equals(Dependent.class))
-         {
-            throw new DefinitionException("No remove methods declared for non-dependent scoped bean " + getType());
-         }
-      }
-      else
-      {
-         List<Method> destroysMethods = Reflections.getMethods(getType(), Destructor.class);
-         if (destroysMethods.size() > 0)
-         {
-            throw new DefinitionException("Only stateful enterprise beans can have methods annotated @Destructor; " + getType() + " is not a stateful enterprise bean");
-         }
-      }
-      */
+
    }
    
-
    private InjectableMethod<?> checkRemoveMethod(Method method)
    {
       if (method.isAnnotationPresent(Destructor.class) && !method.isAnnotationPresent(EJB.REMOVE_ANNOTATION)) {

Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/XmlEnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/XmlEnterpriseBean.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/XmlEnterpriseBean.java	2008-11-12 10:22:01 UTC (rev 291)
@@ -0,0 +1,17 @@
+package org.jboss.webbeans.bean;
+
+import org.jboss.webbeans.ManagerImpl;
+
+public class XmlEnterpriseBean<T> extends EnterpriseBean<T>
+{
+
+   public XmlEnterpriseBean(Class<T> type, ManagerImpl manager)
+   {
+      super(type, manager);
+   }
+   
+   protected boolean isDefinedInXml()
+   {
+      return true;
+   }
+}

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EjbMetaData.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EjbMetaData.java	2008-11-11 15:47:51 UTC (rev 290)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ejb/EjbMetaData.java	2008-11-12 10:22:01 UTC (rev 291)
@@ -33,7 +33,7 @@
    private EjbType ejbType;
    private List<Method> removeMethods = new ArrayList<Method>();
    private List<Method> destructorMethods = new ArrayList<Method>();
-   private Method noArgsRemoveMethod;
+   private List<Method> noArgsRemoveMethods = new ArrayList<Method>();
    
    // TODO Populate this from web.xml
    private String ejbLinkJndiName;
@@ -66,7 +66,7 @@
          {
             removeMethods.add(removeMethod);
             if (removeMethod.getParameterTypes().length == 0) {
-               noArgsRemoveMethod = removeMethod;
+               noArgsRemoveMethods.add(removeMethod);
             }
          }
          for (Method destructorMethod : Reflections.getMethods(type, Destructor.class))
@@ -136,12 +136,7 @@
 
    public Method getNoArgsRemoveMethod()
    {
-      return noArgsRemoveMethod;
+      return noArgsRemoveMethods.size() == 1 ? noArgsRemoveMethods.iterator().next() : null;
    }
 
-   public void setNoArgsRemoveMethod(Method noArgsRemoveMethod)
-   {
-      this.noArgsRemoveMethod = noArgsRemoveMethod;
-   }
-   
 }

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/EnterpriseBeanDeclarationTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/EnterpriseBeanDeclarationTest.java	2008-11-11 15:47:51 UTC (rev 290)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/EnterpriseBeanDeclarationTest.java	2008-11-12 10:22:01 UTC (rev 291)
@@ -126,9 +126,6 @@
       assert false;
    }
 
-
-
-
    @Test(groups="enterpriseBeans")
    @SpecAssertion(section = "3.3.1")
    public void testAnnotatedEnterpriseBean()

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/EnterpriseBeanRemoveMethodTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/EnterpriseBeanRemoveMethodTest.java	2008-11-11 15:47:51 UTC (rev 290)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/EnterpriseBeanRemoveMethodTest.java	2008-11-12 10:22:01 UTC (rev 291)
@@ -5,11 +5,13 @@
 import javax.webbeans.UnremovedException;
 
 import org.jboss.webbeans.bean.EnterpriseBean;
+import org.jboss.webbeans.bean.XmlEnterpriseBean;
 import org.jboss.webbeans.contexts.RequestContext;
 import org.jboss.webbeans.test.AbstractTest;
 import org.jboss.webbeans.test.SpecAssertion;
 import org.jboss.webbeans.test.SpecVersion;
 import org.jboss.webbeans.test.ejb.model.invalid.Armant;
+import org.jboss.webbeans.test.ejb.model.invalid.ChowChow;
 import org.jboss.webbeans.test.ejb.model.invalid.GoldenRetriever;
 import org.jboss.webbeans.test.ejb.model.invalid.JackRussellTerrier;
 import org.jboss.webbeans.test.ejb.model.invalid.Poodle;
@@ -31,14 +33,14 @@
 
    public static boolean tickle = false;
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = "3.3.5")
    public void testStatelessEnterpriseBeansWithRemoveMethodsFails()
    {
       EnterpriseBean<Armant> bean = Util.createEnterpriseBean(Armant.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod", "lifecycle"})
+   @Test(groups={"enterpriseBeans", "removeMethod", "lifecycle"})
    @SpecAssertion(section = "3.3.5")
    public void testStatefulEnterpriseBeanRemoveMethodCalledWhenDestroyedByManager()
    {
@@ -50,21 +52,21 @@
       assert EnterpriseBeanRemoveMethodTest.tickle;
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = "3.3.5")
    public void testStatefulEnterpriseBeanWithoutRemoveMethodMustBeDependentScoped()
    {
       EnterpriseBean<Pumi> bean = Util.createEnterpriseBean(Pumi.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod"})
+   @Test(groups={"enterpriseBeans", "removeMethod"})
    @SpecAssertion(section = "3.3.5")
    public void testStatefulEnterpriseBeanWithoutRemoveMethodMustBeDependentScoped2()
    {
       EnterpriseBean<WelshCorgie> bean = Util.createEnterpriseBean(WelshCorgie.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = UnremovedException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = UnremovedException.class)
    @SpecAssertion(section = "3.3.5")
    public void testStatefulEnterpriseBeanWithoutRemoveMethodMustBeRemovedByApplicationBeforeManager()
    {
@@ -75,7 +77,7 @@
       context.destroy(manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod", "lifecycle"})
+   @Test(groups={"enterpriseBeans", "removeMethod", "lifecycle"})
    @SpecAssertion(section = "3.3.5")
    public void testApplicationRemoveMethodCallRemovesInstanceFromContext()
    {
@@ -87,7 +89,7 @@
       assert instance == null;
    }
 
-   @Test(groups={"ejb3", "removeMethod"})
+   @Test(groups={"enterpriseBeans", "removeMethod"})
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testEnterpriseBeanWithoutDestructorUsesNoArgsRemoveAnnotatedMethodAsRemoveMethod()
    {
@@ -96,7 +98,7 @@
             .getAnnotatedMethod().getName());
    }
 
-   @Test(groups={"ejb3", "removeMethod"})
+   @Test(groups={"enterpriseBeans", "removeMethod"})
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testEnterpriseBeanWithoutDestructorAndNoArgsRemoveAnnotatedMethodHasNoRemoveMethod()
    {
@@ -104,49 +106,49 @@
       assert bean.getRemoveMethod() == null;
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testMultipleDestructorAnnotatedMethodsFails()
    {
       EnterpriseBean<Rottweiler> bean = Util.createEnterpriseBean(Rottweiler.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testDestructorAnnotatedMethodNotRemoveAnnotatedFails()
    {
       EnterpriseBean<RussellTerrier> bean = Util.createEnterpriseBean(RussellTerrier.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testRemoveMethodIsInitializerFails()
    {
       EnterpriseBean<Saluki> bean = Util.createEnterpriseBean(Saluki.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testRemoveMethodIsProducerFails()
    {
       EnterpriseBean<Spitz> bean = Util.createEnterpriseBean(Spitz.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testRemoveMethodWithDisposesParameterFails()
    {
       EnterpriseBean<GoldenRetriever> bean = Util.createEnterpriseBean(GoldenRetriever.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testRemoveMethodWithObservesParameterFails()
    {
       EnterpriseBean<JackRussellTerrier> bean = Util.createEnterpriseBean(JackRussellTerrier.class, manager);
    }
 
-   @Test(groups={"ejb3", "removeMethod"}, expectedExceptions = DefinitionException.class)
+   @Test(groups={"enterpriseBeans", "removeMethod"}, expectedExceptions = DefinitionException.class)
    @SpecAssertion(section = {"3.3.5.1", "3.3.5.2"})
    public void testMultipleRemoveAnnotationsButNoDestructorFails()
    {
@@ -154,21 +156,22 @@
    }
    
    
-   @Test(groups={"ejb3", "removeMethod"})
+   @Test(groups={"enterpriseBeans", "removeMethod"})
    @SpecAssertion(section = "3.3.5.2")
-   public void testXMLDefinedEnterpriseBeanWithMatchingRemoveMethodFails()
+   public void testXMLDefinedEnterpriseBeanWithoutMatchingRemoveMethodFails()
    {
       assert false;
    }
 
-   @Test(groups={"ejb3", "removeMethod"})
+   @Test(groups={"enterpriseBeans", "removeMethod"})
    @SpecAssertion(section = "3.3.5.2")
    public void testXMLDefinedEnterpriseBeanWithMultipleRemoveMethodsFails()
    {
+      XmlEnterpriseBean<ChowChow> bean = Util.createXmlEnterpriseBean(ChowChow.class, manager);
       assert false;
    }
 
-   @Test(groups={"ejb3", "removeMethod"})
+   @Test(groups={"enterpriseBeans", "removeMethod"})
    @SpecAssertion(section = "3.3.5.2")
    public void testXMLDefinedEnterpriseBeanIgnoresBindingAnnotationOnParameters()
    {

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/invalid/ChowChow.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/invalid/ChowChow.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/model/invalid/ChowChow.java	2008-11-12 10:22:01 UTC (rev 291)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.test.ejb.model.invalid;
+
+import javax.ejb.Stateful;
+import javax.webbeans.RequestScoped;
+
+ at Stateful
+ at RequestScoped
+public class ChowChow
+{
+
+}

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/util/Util.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/util/Util.java	2008-11-11 15:47:51 UTC (rev 290)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/util/Util.java	2008-11-12 10:22:01 UTC (rev 291)
@@ -7,6 +7,8 @@
 import org.jboss.webbeans.bean.EnterpriseBean;
 import org.jboss.webbeans.bean.ProducerMethodBean;
 import org.jboss.webbeans.bean.SimpleBean;
+import org.jboss.webbeans.bean.XmlEnterpriseBean;
+import org.jboss.webbeans.bean.XmlSimpleBean;
 
 public class Util
 {
@@ -15,11 +17,21 @@
       return new SimpleBean<T>(clazz, manager);
    }
 
+   public static <T> XmlSimpleBean<T> createXmlSimpleBean(Class<T> clazz, ManagerImpl manager)
+   {
+      return new XmlSimpleBean<T>(clazz, manager);
+   }
+
    public static <T> EnterpriseBean<T> createEnterpriseBean(Class<T> clazz, ManagerImpl manager)
    {
       return new EnterpriseBean<T>(clazz, manager);
    }
-   
+
+   public static <T> XmlEnterpriseBean<T> createXmlEnterpriseBean(Class<T> clazz, ManagerImpl manager)
+   {
+      return new XmlEnterpriseBean<T>(clazz, manager);
+   }
+
    public static <T> ProducerMethodBean<T> createProducerMethodBean(Class<T> type, Method method, ManagerImpl manager, AbstractClassBean<?> declaringBean)
    {
       return new ProducerMethodBean<T>(method, declaringBean, manager);




More information about the weld-commits mailing list