You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by be...@apache.org on 2010/06/02 22:32:16 UTC
svn commit: r950749 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/inject/
test/java/org/apache/webbeans/newtests/promethods/
test/java/org/apache/webbeans/newtests/promethods/beans/
Author: bergmark
Date: Wed Jun 2 20:32:16 2010
New Revision: 950749
URL: http://svn.apache.org/viewvc?rev=950749&view=rev
Log:
[OWB-381] Fix NPE in AbstractInjectable when injected is null.
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/PersonProducerTest.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/beans/PersonProducerBean.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java?rev=950749&r1=950748&r2=950749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java Wed Jun 2 20:32:16 2010
@@ -129,7 +129,7 @@ public abstract class AbstractInjectable
if(dependentProducer)
{
- if(!Serializable.class.isAssignableFrom(injected.getClass()))
+ if(injected != null && !Serializable.class.isAssignableFrom(injected.getClass()))
{
throw new IllegalProductException("If a producer method or field of scope @Dependent returns an serializable object for injection " +
"into an injection point "+ injectionPoint +" that requires a passivation capable dependency");
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/PersonProducerTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/PersonProducerTest.java?rev=950749&r1=950748&r2=950749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/PersonProducerTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/PersonProducerTest.java Wed Jun 2 20:32:16 2010
@@ -68,4 +68,30 @@ public class PersonProducerTest extends
shutDownContainer();
}
+
+ @Test
+ @SuppressWarnings("unchecked")
+ public void testNullPersonProducer()
+ {
+ Collection<URL> beanXmls = new ArrayList<URL>();
+
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+ beanClasses.add(Person.class);
+ beanClasses.add(PersonProducerBean.class);
+
+ startContainer(beanClasses, beanXmls);
+
+ Set<Bean<?>> beans = getBeanManager().getBeans("nullInjectedPersonProducer");
+ Assert.assertNotNull(beans);
+ Bean<Person> bean = (Bean<Person>)beans.iterator().next();
+
+ Assert.assertTrue(bean instanceof ProducerMethodBean);
+
+ CreationalContext<Person> ctx = getBeanManager().createCreationalContext(bean);
+
+ Object reference = getBeanManager().getReference(bean, Person.class, ctx);
+ Assert.assertNull(reference);
+
+ shutDownContainer();
+ }
}
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/beans/PersonProducerBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/beans/PersonProducerBean.java?rev=950749&r1=950748&r2=950749&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/beans/PersonProducerBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/beans/PersonProducerBean.java Wed Jun 2 20:32:16 2010
@@ -18,7 +18,7 @@
*/
package org.apache.webbeans.newtests.promethods.beans;
-import javax.enterprise.context.SessionScoped;
+import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Produces;
import javax.inject.Named;
@@ -27,9 +27,20 @@ import org.apache.webbeans.newtests.prom
public class PersonProducerBean
{
- @Produces @SessionScoped @Named("personProducer")
+ @Produces @Named("personProducer")
public Person producer()
{
return new Person();
}
+
+ @Produces @Dependent @Named("nullPersonProducer")
+ public Person nullProducer()
+ {
+ return null;
+ }
+
+ @Produces @Dependent @Named("nullInjectedPersonProducer")
+ public Person nullInjectedPersonProducer(@Named("nullPersonProducer") Person p){
+ return p;
+ }
}