[webbeans-commits] Webbeans SVN: r803 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/bootstrap and 3 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Wed Jan 7 03:36:58 EST 2009
Author: nickarls
Date: 2009-01-07 03:36:57 -0500 (Wed, 07 Jan 2009)
New Revision: 803
Added:
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/invalid/NewAndOtherBindingType.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/NewBeanTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/valid/AnnotatedConstructorParameter.java
Log:
Better fix for null injection points
Some more @New bootstrap tests
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-07 08:36:57 UTC (rev 803)
@@ -120,6 +120,7 @@
{
super(manager);
this.manager = manager;
+ injectionPoints = new HashSet<AnnotatedItem<?, ?>>();
}
/**
@@ -211,14 +212,6 @@
protected abstract Class<? extends Annotation> getDefaultDeploymentType();
/**
- * Initializes the injection points
- */
- protected void initInjectionPoints()
- {
- injectionPoints = new HashSet<AnnotatedItem<?, ?>>();
- }
-
- /**
* Initializes the name
*/
protected void initName()
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-07 08:36:57 UTC (rev 803)
@@ -153,10 +153,8 @@
/**
* Initializes the injection points
*/
- @Override
protected void initInjectionPoints()
{
- super.initInjectionPoints();
injectableFields = new HashSet<AnnotatedField<Object>>();
for (AnnotatedField<Object> annotatedField : annotatedItem.getMetaAnnotatedFields(BindingType.class))
{
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java 2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EventBean.java 2009-01-07 08:36:57 UTC (rev 803)
@@ -61,11 +61,6 @@
{
validateInjectionPoint();
super.init();
- // TODO: A better place to do this? Event beans also pass through the @New bean
- // parsing in bootstrap so the injectionpoints should not be null. This is usually
- // done in AbstractClassBean, but it's not in the EventBeans inheritance hierarchy.
- // Perhaps just init the injectionPoints to an empty set in AbstractBean...
- super.initInjectionPoints();
checkAnnotatedItem();
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java 2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java 2009-01-07 08:36:57 UTC (rev 803)
@@ -93,10 +93,8 @@
/**
* Initializes the injection points
*/
- @Override
protected void initInjectionPoints()
{
- super.initInjectionPoints();
for (AnnotatedParameter<Object> parameter : method.getParameters())
{
injectionPoints.add(parameter);
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-01-07 08:36:57 UTC (rev 803)
@@ -28,6 +28,7 @@
import java.util.HashSet;
import java.util.Set;
+import javax.webbeans.BindingType;
import javax.webbeans.DefinitionException;
import javax.webbeans.Fires;
import javax.webbeans.Initializer;
@@ -130,9 +131,12 @@
{
Set<AbstractBean<?, ?>> beans = createBeans(classes);
beans.addAll(createStandardBeans());
- // TODO: Is there any better way to do this? Currently, producer method parameters aren't
- // listed in the containing beans injection points since they will be separated into
- // producer beans of their own so we'll have to make a second pass to make sure we hit the
+ // TODO: Is there any better way to do this? Currently, producer method
+ // parameters aren't
+ // listed in the containing beans injection points since they will be
+ // separated into
+ // producer beans of their own so we'll have to make a second pass to make
+ // sure we hit the
// created producer beans also.
registerNewBeans(beans);
getManager().setBeans(beans);
@@ -146,6 +150,10 @@
for (AnnotatedItem<?, ?> injectionPoint : bean.getInjectionPoints())
if (injectionPoint.isAnnotationPresent(New.class))
{
+ if (injectionPoint.getMetaAnnotations(BindingType.class).size() > 1)
+ {
+ throw new DefinitionException("@New cannot be used in conjunction with other binding types");
+ }
if (manager.getEjbDescriptorCache().containsKey(injectionPoint.getType()))
{
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/NewBeanTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/NewBeanTest.java 2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/NewBeanTest.java 2009-01-07 08:36:57 UTC (rev 803)
@@ -16,6 +16,7 @@
import org.jboss.webbeans.test.SpecAssertion;
import org.jboss.webbeans.test.SpecVersion;
import org.jboss.webbeans.test.mock.MockWebBeanDiscovery;
+import org.jboss.webbeans.test.newbean.invalid.NewAndOtherBindingType;
import org.jboss.webbeans.test.newbean.valid.AnnotatedConstructorParameter;
import org.jboss.webbeans.test.newbean.valid.AnnotatedField;
import org.jboss.webbeans.test.newbean.valid.AnnotatedInitializerParameter;
@@ -336,7 +337,7 @@
* requirements of a simple Web Bean implementation class or enterprise Web
* Bean implementation class.
*/
- @Test(groups = { "stub", "new" })
+ @Test(groups = { "new" })
@SpecAssertion(section = "3.9")
public void testNewAnnotationMayBeAppliedToField()
{
@@ -353,7 +354,7 @@
* requirements of a simple Web Bean implementation class or enterprise Web
* Bean implementation class.
*/
- @Test(groups = { "stub", "new" })
+ @Test(groups = { "new" })
@SpecAssertion(section = "3.9")
public void testNewAnnotationMayBeAppliedToProducerMethodParameter()
{
@@ -370,7 +371,7 @@
* requirements of a simple Web Bean implementation class or enterprise Web
* Bean implementation class.
*/
- @Test(groups = { "stub", "new" })
+ @Test(groups = { "new" })
@SpecAssertion(section = "3.9")
public void testNewAnnotationMayBeAppliedToInitializerMethodParameter()
{
@@ -387,7 +388,7 @@
* requirements of a simple Web Bean implementation class or enterprise Web
* Bean implementation class.
*/
- @Test(groups = { "stub", "new" })
+ @Test(groups = { "new" })
@SpecAssertion(section = "3.9")
public void testNewAnnotationMayBeAppliedToConstructorMethodParameter()
{
@@ -403,11 +404,12 @@
* enterprise Web Bean implementation class, a DefinitionException is thrown
* by the container at deployment time.
*/
- @Test(groups = { "stub", "new" })
+ @Test(groups = { "new" }, expectedExceptions = DefinitionException.class)
@SpecAssertion(section = "3.9")
public void testNewAnnotationCannotAppearInConjunctionWithOtherBindingType()
{
- assert false;
+ webBeansBootstrap.setWebBeanDiscovery(new MockWebBeanDiscovery(NewAndOtherBindingType.class));
+ webBeansBootstrap.boot();
}
/**
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/invalid/NewAndOtherBindingType.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/invalid/NewAndOtherBindingType.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/invalid/NewAndOtherBindingType.java 2009-01-07 08:36:57 UTC (rev 803)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.test.newbean.invalid;
+
+import javax.webbeans.Current;
+import javax.webbeans.New;
+
+import org.jboss.webbeans.test.newbean.valid.WrappedBean;
+
+public class NewAndOtherBindingType
+{
+ public @New @Current WrappedBean violation;
+}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/valid/AnnotatedConstructorParameter.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/valid/AnnotatedConstructorParameter.java 2009-01-07 08:26:34 UTC (rev 802)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/newbean/valid/AnnotatedConstructorParameter.java 2009-01-07 08:36:57 UTC (rev 803)
@@ -2,27 +2,12 @@
import javax.webbeans.Initializer;
import javax.webbeans.New;
-import javax.webbeans.Produces;
public class AnnotatedConstructorParameter
{
- @New
- WrappedBean reference;
-
@Initializer
public AnnotatedConstructorParameter(@New WrappedBean reference)
{
}
-
- @Initializer
- public void init(@New WrappedBean reference)
- {
- }
-
- @Produces
- Object produce(@New WrappedBean reference)
- {
- return new Object();
- }
}
More information about the weld-commits
mailing list