Author: bergmark
Date: Thu Nov 4 12:38:17 2010
New Revision: 1030908
URL: http://svn.apache.org/viewvc?rev=1030908&view=rev
Log:
[OWB-471] Stop AnnotatedParameter's toString from calling toString on its
callable as that may create an infinite loop and resulting
StackOverflowException.
Added:
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/beans/ProducerBean.java
- copied unchanged from r1021872,
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/beans/ProducerBean.java
Modified:
openwebbeans/branches/owb_1.0.x/webbeans-impl/ (props changed)
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedParameterImpl.java
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/MethodProducer1Test.java
Propchange: openwebbeans/branches/owb_1.0.x/webbeans-impl/
------------------------------------------------------------------------------
svn:mergeinfo = /openwebbeans/trunk/webbeans-impl:1021872
Modified:
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedParameterImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedParameterImpl.java?rev=1030908&r1=1030907&r2=1030908&view=diff
==============================================================================
---
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedParameterImpl.java
(original)
+++
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedParameterImpl.java
Thu Nov 4 12:38:17 2010
@@ -69,7 +69,6 @@ class AnnotatedParameterImpl<X> extends
builder.append("Annotated Parameter");
builder.append(",");
builder.append(super.toString()+ ",");
- builder.append("Annotated Callable : [" +
this.declaringCallable.toString() + "],");
builder.append("Position : " + position);
return builder.toString();
Modified:
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/MethodProducer1Test.java
URL:
http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/MethodProducer1Test.java?rev=1030908&r1=1030907&r2=1030908&view=diff
==============================================================================
---
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/MethodProducer1Test.java
(original)
+++
openwebbeans/branches/owb_1.0.x/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/MethodProducer1Test.java
Thu Nov 4 12:38:17 2010
@@ -24,7 +24,9 @@ import java.util.Collection;
import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.InjectionTarget;
import junit.framework.Assert;
@@ -32,6 +34,7 @@ import org.apache.webbeans.component.Man
import org.apache.webbeans.newtests.AbstractUnitTest;
import org.apache.webbeans.newtests.promethods.beans.InjectorofMethod1Bean;
import org.apache.webbeans.newtests.promethods.beans.MethodTypeProduces1;
+import org.apache.webbeans.newtests.promethods.beans.ProducerBean;
import org.junit.Test;
public class MethodProducer1Test extends AbstractUnitTest
@@ -68,4 +71,26 @@ public class MethodProducer1Test extends
shutDownContainer();
}
+
+ @Test
+ @SuppressWarnings("unchecked")
+ /**
+ * Tests the code path of adding a bean containing producer methods
through
+ * WebBeansAnnotatedTypeUtil.defineManagedBean
+ */
+ public void testProducerAddedByWebBeansAnnotatedTypeUtil()
+ {
+ Collection<URL> beanXmls = new ArrayList<URL>();
+
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+
+ startContainer(beanClasses, beanXmls);
+
+ AnnotatedType<ProducerBean> at =
getBeanManager().createAnnotatedType(ProducerBean.class);
+ InjectionTarget<ProducerBean> it =
getBeanManager().createInjectionTarget(at);
+
+ Assert.assertNotNull(it);
+
+ shutDownContainer();
+ }
}