Author: arne
Date: Sun Jan  6 14:53:13 2013
New Revision: 1429532

URL: http://svn.apache.org/viewvc?rev=1429532&view=rev
Log:
OWB-745: moved WebBeansAnnotatedTypeUtil.configureProducerSpecialization to 
ProducerMethodBeanCreatorImpl

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjecionTargetBeanCreator.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanCreator.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjecionTargetBeanCreator.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjecionTargetBeanCreator.java?rev=1429532&r1=1429531&r2=1429532&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjecionTargetBeanCreator.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjecionTargetBeanCreator.java
 Sun Jan  6 14:53:13 2013
@@ -57,6 +57,7 @@ import org.apache.webbeans.container.Inj
 import org.apache.webbeans.exception.WebBeansConfigurationException;
 import org.apache.webbeans.spi.api.ResourceReference;
 import org.apache.webbeans.util.AnnotationUtil;
+import org.apache.webbeans.util.Asserts;
 import org.apache.webbeans.util.ClassUtil;
 import org.apache.webbeans.util.WebBeansAnnotatedTypeUtil;
 import org.apache.webbeans.util.WebBeansUtil;
@@ -429,7 +430,7 @@ public abstract class AbstractInjecionTa
         {
             if(annotatedMethod.isAnnotationPresent(Produces.class) && 
annotatedMethod.getDeclaringType().equals(getAnnotated()))
             {
-                
WebBeansAnnotatedTypeUtil.checkProducerMethodForDeployment(annotatedMethod);
+                checkProducerMethodForDeployment(annotatedMethod);
                 boolean specialize = false;
                 if(annotatedMethod.isAnnotationPresent(Specializes.class))
                 {
@@ -447,7 +448,7 @@ public abstract class AbstractInjecionTa
                 
                 if(specialize)
                 {
-                    
WebBeansAnnotatedTypeUtil.configureProducerSpecialization(producerMethodBean, 
(AnnotatedMethod<T>)annotatedMethod);
+                    
producerMethodBeanCreator.configureProducerSpecialization((AnnotatedMethod<T>) 
annotatedMethod);
                 }
                 
                 if 
(ClassUtil.getClass(annotatedMethod.getBaseType()).isPrimitive())
@@ -488,7 +489,25 @@ public abstract class AbstractInjecionTa
         
         return producerBeans;
     }
-    
+
+    /**
+     * Check producer method is ok for deployment.
+     * 
+     * @param annotatedMethod producer method
+     */
+    private void checkProducerMethodForDeployment(AnnotatedMethod<? super T> 
annotatedMethod)
+    {
+        Asserts.assertNotNull(annotatedMethod, "annotatedMethod argument can 
not be null");
+
+        if (annotatedMethod.isAnnotationPresent(Inject.class) || 
+                annotatedMethod.isAnnotationPresent(Disposes.class) ||  
+                annotatedMethod.isAnnotationPresent(Observes.class))
+        {
+            throw new WebBeansConfigurationException("Producer annotated 
method : " + annotatedMethod + " can not be annotated with"
+                                                     + " 
@Initializer/@Destructor annotation or has a parameter annotated with 
@Disposes/@Observes");
+        }
+    }
+
     private <X> void addFieldInjectionPointMetaData(AnnotatedField<X> 
annotField)
     {
         InjectionPoint injectionPoint = 
webBeansContext.getInjectionPointFactory().getFieldInjectionPointData(getBean(),
 annotField);

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanCreator.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanCreator.java?rev=1429532&r1=1429531&r2=1429532&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanCreator.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanCreator.java
 Sun Jan  6 14:53:13 2013
@@ -18,10 +18,18 @@
  */
 package org.apache.webbeans.component.creation;
 
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.enterprise.inject.Produces;
 import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedParameter;
 
 import org.apache.webbeans.component.InjectionTargetBean;
 import org.apache.webbeans.component.ProducerMethodBean;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.util.AnnotationUtil;
 import org.apache.webbeans.util.ClassUtil;
 
 public class ProducerMethodBeanCreator<T> extends 
AbstractProducerBeanCreator<T>
@@ -39,4 +47,44 @@ public class ProducerMethodBeanCreator<T
     {
         return (ProducerMethodBean<T>)super.getBean();
     }
+
+    public void configureProducerSpecialization(AnnotatedMethod<T> 
annotatedMethod)
+    {
+        List<AnnotatedParameter<T>> annotatedParameters = 
annotatedMethod.getParameters();
+        List<Class<?>> parameters = new ArrayList<Class<?>>();
+        for(AnnotatedParameter<T> annotatedParam : annotatedParameters)
+        {
+            parameters.add(ClassUtil.getClass(annotatedParam.getBaseType()));
+        }
+        
+        Method superMethod = 
ClassUtil.getClassMethodWithTypes(annotatedMethod.getDeclaringType().getJavaClass().getSuperclass(),
 
+                annotatedMethod.getJavaMember().getName(), parameters);
+        if (superMethod == null)
+        {
+            throw new WebBeansConfigurationException("Anontated producer 
method specialization is failed : " + annotatedMethod.getJavaMember().getName()
+                                                     + " not found in super 
class : " + 
annotatedMethod.getDeclaringType().getJavaClass().getSuperclass().getName()
+                                                     + " for annotated method 
: " + annotatedMethod);
+        }
+        
+        if (!AnnotationUtil.hasAnnotation(superMethod.getAnnotations(), 
Produces.class))
+        {
+            throw new WebBeansConfigurationException("Anontated producer 
method specialization is failed : " + annotatedMethod.getJavaMember().getName()
+                                                     + " found in super class 
: " + 
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)
+        {
+            bean.addQualifier(ann);
+        }
+        
+        WebBeansUtil.configuredProducerSpecializedName(bean, 
annotatedMethod.getJavaMember(), superMethod);
+        */
+        
+        getBean().setSpecializedBean(true);        
+    }
 }

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=1429532&r1=1429531&r2=1429532&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
 Sun Jan  6 14:53:13 2013
@@ -20,7 +20,6 @@ package org.apache.webbeans.util;
 
 import org.apache.webbeans.annotation.AnnotationManager;
 import org.apache.webbeans.component.AbstractInjectionTargetBean;
-import org.apache.webbeans.component.AbstractOwbBean;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
 
 import javax.enterprise.event.Observes;
@@ -31,69 +30,10 @@ import javax.enterprise.inject.spi.Annot
 import javax.inject.Inject;
 import java.lang.reflect.Method;
 import java.lang.reflect.TypeVariable;
-import java.util.ArrayList;
 import java.util.List;
 
 public final class WebBeansAnnotatedTypeUtil
-{
-    
-    /**
-     * Check producer method is ok for deployment.
-     * 
-     * @param annotatedMethod producer method
-     */
-    public static <X> void checkProducerMethodForDeployment(AnnotatedMethod<X> 
annotatedMethod)
-    {
-        Asserts.assertNotNull(annotatedMethod, "annotatedMethod argument can 
not be null");
-
-        if (annotatedMethod.isAnnotationPresent(Inject.class) || 
-                annotatedMethod.isAnnotationPresent(Disposes.class) ||  
-                annotatedMethod.isAnnotationPresent(Observes.class))
-        {
-            throw new WebBeansConfigurationException("Producer annotated 
method : " + annotatedMethod + " can not be annotated with"
-                                                     + " 
@Initializer/@Destructor annotation or has a parameter annotated with 
@Disposes/@Observes");
-        }
-    }
-    
-    public static <X> void configureProducerSpecialization(AbstractOwbBean<X> 
bean,AnnotatedMethod<X> annotatedMethod)
-    {
-        List<AnnotatedParameter<X>> annotatedParameters = 
annotatedMethod.getParameters();
-        List<Class<?>> parameters = new ArrayList<Class<?>>();
-        for(AnnotatedParameter<X> annotatedParam : annotatedParameters)
-        {
-            parameters.add(ClassUtil.getClass(annotatedParam.getBaseType()));
-        }
-        
-        Method superMethod = 
ClassUtil.getClassMethodWithTypes(annotatedMethod.getDeclaringType().getJavaClass().getSuperclass(),
 
-                annotatedMethod.getJavaMember().getName(), parameters);
-        if (superMethod == null)
-        {
-            throw new WebBeansConfigurationException("Anontated producer 
method specialization is failed : " + annotatedMethod.getJavaMember().getName()
-                                                     + " not found in super 
class : " + 
annotatedMethod.getDeclaringType().getJavaClass().getSuperclass().getName()
-                                                     + " for annotated method 
: " + annotatedMethod);
-        }
-        
-        if (!AnnotationUtil.hasAnnotation(superMethod.getAnnotations(), 
Produces.class))
-        {
-            throw new WebBeansConfigurationException("Anontated producer 
method specialization is failed : " + annotatedMethod.getJavaMember().getName()
-                                                     + " found in super class 
: " + 
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)
-        {
-            bean.addQualifier(ann);
-        }
-        
-        WebBeansUtil.configuredProducerSpecializedName(bean, 
annotatedMethod.getJavaMember(), superMethod);
-        */
-        
-        bean.setSpecializedBean(true);        
-    }
+{    
     
     /**
      * add the definitions for a &#x0040;Initializer method.


Reply via email to