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();
+    }
 }


Reply via email to