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;
+
+@Stateful
+@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);