You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2010/02/26 01:15:06 UTC

svn commit: r916504 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans/newtests/producer/ test/java/org/apache/webbeans/newtests/producer/specializes/ test/java/org/apache/webbeans/test/unittes...

Author: gerdogdu
Date: Fri Feb 26 00:15:05 2010
New Revision: 916504

URL: http://svn.apache.org/viewvc?rev=916504&view=rev
Log:
[OWB-308] thanks to YING WANG

Added:
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/producer/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/producer/specializes/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/producer/specializes/SpecializesProducer1Test.java   (with props)
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/producer/specializes/SpecializesProducer1Test.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java?rev=916504&r1=916503&r2=916504&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java Fri Feb 26 00:15:05 2010
@@ -549,6 +549,8 @@
                     annotatedMethod.getDeclaringType().getJavaClass().getSuperclass().getName() + " is not annotated with @Produces" + " for annotated method : " + annotatedMethod);
         }
 
+        /* To avoid multiple invocations of setBeanName(), following code is delayed to
+         * configSpecializedProducerMethodBeans() when checkSpecializations.
         Annotation[] anns = AnnotationUtil.getQualifierAnnotations(superMethod.getAnnotations());
 
         for (Annotation ann : anns)
@@ -557,6 +559,7 @@
         }
         
         WebBeansUtil.configuredProducerSpecializedName(bean, annotatedMethod.getJavaMember(), superMethod);
+        */
         
         bean.setSpecializedBean(true);        
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=916504&r1=916503&r2=916504&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Fri Feb 26 00:15:05 2010
@@ -1664,7 +1664,14 @@
             	}
                                 
                 AbstractOwbBean<?> comp = (AbstractOwbBean<?>)specialized;
-
+                if (comp.isSpecializedBean())
+               	{
+                	// This comp is already configured in previous invocation
+                	// return directly, else Exception might be fired when set
+                	// bean name again.
+                	return;
+               	}
+                
                 if(superBean.getName() != null)
                 {
                     if(comp.getName() != null)
@@ -1968,6 +1975,8 @@
             throw new WebBeansConfigurationException("Producer method specialization is failed. Method " + method.getName() + " found in super class : " + superClass.getName() + " is not annotated with @Produces");
         }
 
+        /* To avoid multiple invocations of setBeanName(), following code is delayed to
+         * configSpecializedProducerMethodBeans() when checkSpecializations.
         Annotation[] anns = AnnotationUtil.getQualifierAnnotations(superMethod.getAnnotations());
 
         for (Annotation ann : anns)
@@ -1976,7 +1985,8 @@
         }
         
         WebBeansUtil.configuredProducerSpecializedName(component, method, superMethod);
-
+		*/
+        
         component.setSpecializedBean(true);
         
     }

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/producer/specializes/SpecializesProducer1Test.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/producer/specializes/SpecializesProducer1Test.java?rev=916504&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/producer/specializes/SpecializesProducer1Test.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/producer/specializes/SpecializesProducer1Test.java Fri Feb 26 00:15:05 2010
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
+ * or agreed to in writing, software distributed under the License is
+ * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.apache.webbeans.newtests.producer.specializes;
+
+import java.lang.annotation.Annotation;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.util.AnnotationLiteral;
+
+import org.apache.webbeans.newtests.AbstractUnitTest;
+import org.apache.webbeans.test.annotation.binding.Binding1;
+import org.apache.webbeans.test.annotation.binding.Binding2;
+import org.apache.webbeans.test.component.producer.specializes.SpecializesProducer1;
+import org.apache.webbeans.test.component.producer.specializes.superclazz.SpecializesProducer1SuperClazz;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class SpecializesProducer1Test extends AbstractUnitTest
+{
+
+    @Test
+    public void testSpecializedProducer1()
+    {
+        Collection<URL> beanXmls = new ArrayList<URL>();
+        Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+
+        beanClasses.add(SpecializesProducer1SuperClazz.class);
+        beanClasses.add(SpecializesProducer1.class);
+        
+        startContainer(beanClasses, beanXmls);        
+        
+        Annotation binding1 = new AnnotationLiteral<Binding1>()
+        {
+        };
+        Annotation binding2 = new AnnotationLiteral<Binding2>()
+        {
+        };
+
+        Set beans = getBeanManager().getBeans(int.class, new Annotation[] { binding1, binding2 });
+        System.out.print("Size of the bean set is " + beans.size());
+        Assert.assertTrue(beans.size() == 1);
+        Bean<Integer> bean = (Bean<Integer>)beans.iterator().next();
+        CreationalContext<Integer> cc = getBeanManager().createCreationalContext(bean);
+        Integer number = (Integer) getBeanManager().getReference(bean, int.class, cc);
+        
+        Assert.assertEquals(10000, number.intValue());
+        
+        shutDownContainer();       
+        
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/producer/specializes/SpecializesProducer1Test.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/producer/specializes/SpecializesProducer1Test.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/producer/specializes/SpecializesProducer1Test.java?rev=916504&r1=916503&r2=916504&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/producer/specializes/SpecializesProducer1Test.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/producer/specializes/SpecializesProducer1Test.java Fri Feb 26 00:15:05 2010
@@ -55,7 +55,9 @@
         };
 
         Object number = getManager().getInstanceByType(int.class, new Annotation[] { binding1, binding2 });
-
-        Assert.assertEquals(10000, number);
+        //This test is not valid since specialize configuration requires
+        //all producers at deployment step in container. See:
+        //org.apache.webbeans.newtests.producer.specializes.SpecializesProducer1Test
+        //Assert.assertEquals(10000, number);
     }
 }