You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ar...@apache.org on 2013/02/01 12:13:31 UTC

svn commit: r1441386 - in /openwebbeans/trunk: webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/ webbeans-impl/src/main/java/org/apache/webbeans/component/ webbeans-impl/src/main/java/org/apache/webbeans/component/creation/

Author: arne
Date: Fri Feb  1 11:13:30 2013
New Revision: 1441386

URL: http://svn.apache.org/viewvc?rev=1441386&view=rev
Log:
OWB-770: Moved injection points from bean to producer

Modified:
    openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java

Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java?rev=1441386&r1=1441385&r2=1441386&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanBuilder.java Fri Feb  1 11:13:30 2013
@@ -19,6 +19,7 @@
 package org.apache.webbeans.ejb.common.component;
 
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -77,10 +78,14 @@ public abstract class EjbBeanBuilder<T, 
     {
         E bean =  createBean(beanClass, webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes()));
 
-        //X TODO hack to set the InjectionTarget
+        Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>();
+        for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
+        {
+            injectionPoints.add(injectionPoint);
+        }
         InjectionTarget<T> injectionTarget = buildInjectionTarget(
                 bean.getAnnotatedType(),
-                bean.getInjectionPoints(),
+                injectionPoints,
                 webBeansContext,
                 Collections.<AnnotatedMethod<?>>emptyList(),
                 Collections.<AnnotatedMethod<?>>emptyList());
@@ -94,10 +99,6 @@ public abstract class EjbBeanBuilder<T, 
     public E getBean()
     {
         E bean = createBean(annotatedType.getJavaClass());
-        for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
-        {
-            bean.addInjectionPoint(injectionPoint);
-        }
         EjbValidator.validateDecoratorOrInterceptor(bean.getReturnType());
         EjbValidator.validateEjbScopeType(bean);
         EjbValidator.validateGenericBeanType(bean.getReturnType(), bean.getScope());

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=1441386&r1=1441385&r2=1441386&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java Fri Feb  1 11:13:30 2013
@@ -20,12 +20,9 @@ package org.apache.webbeans.component;
 
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
-import java.lang.reflect.Member;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
+import java.util.Collections;
 import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -68,9 +65,6 @@ public abstract class AbstractOwbBean<T>
     /**This bean is enabled or disabled*/
     protected boolean enabled = true;
 
-    /**Beans injection points*/
-    protected Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>();
-
     /** The producer */
     private Producer<T> producer;
 
@@ -282,21 +276,17 @@ public abstract class AbstractOwbBean<T>
     {
         return (Class<T>) getBeanClass();
     }
-
-    /**
-     * {@inheritDoc}
-     */    
-    public void addInjectionPoint(InjectionPoint injectionPoint)
-    {
-        injectionPoints.add(injectionPoint);
-    }
     
     /**
      * {@inheritDoc}
      */    
     public Set<InjectionPoint> getInjectionPoints()
     {
-        return injectionPoints;
+        if (producer == null)
+        {
+            return Collections.<InjectionPoint> emptySet();
+        }
+        return producer.getInjectionPoints();
     }
     
     /**
@@ -323,24 +313,6 @@ public abstract class AbstractOwbBean<T>
         return specializedBean;
     }
     
-    /**
-     * {@inheritDoc}
-     */    
-    public List<InjectionPoint> getInjectionPoint(Member member)
-    {
-        List<InjectionPoint> points = new ArrayList<InjectionPoint>();
-        
-        for(InjectionPoint ip : injectionPoints)
-        {
-            if(ip.getMember().equals(member))
-            {
-                points.add(ip);
-            }
-        }
-        
-        return points;
-    }
-    
      /**
      * {@inheritDoc}
      */    

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java?rev=1441386&r1=1441385&r2=1441386&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java Fri Feb  1 11:13:30 2013
@@ -18,11 +18,7 @@
  */
 package org.apache.webbeans.component;
 
-import java.lang.reflect.Member;
-import java.util.List;
-
 import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.Producer;
 
 import org.apache.webbeans.config.WebBeansContext;
@@ -58,24 +54,6 @@ public interface OwbBean<T> extends Bean
     public WebBeansType getWebBeansType();
     
     /**
-     * Adds new injection point.
-     * 
-     * @param injectionPoint injection point
-     */
-    public void addInjectionPoint(InjectionPoint injectionPoint);
-    
-    /**
-     * Gets injection points for given member.
-     * <p>
-     * For example, if member is field, it gets all
-     * injected field's injection points of bean.
-     * </p>
-     * @param member java member
-     * @return injection points for given member
-     */
-    public List<InjectionPoint> getInjectionPoint(Member member);
-
-    /**
      * Returns bean class type
      * @return bean class type
      */

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java?rev=1441386&r1=1441385&r2=1441386&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java Fri Feb  1 11:13:30 2013
@@ -296,13 +296,13 @@ public class DecoratorBeanBuilder<T>
     {
         DecoratorBean<T> decorator = new DecoratorBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, annotatedType.getJavaClass());
         decorator.setEnabled(webBeansContext.getDecoratorsManager().isDecoratorEnabled(annotatedType.getJavaClass()));
-        InjectionTarget<T> injectionTarget
-                = buildInjectionTarget(annotatedType, decorator.getInjectionPoints(), webBeansContext, getPostConstructMethods(), getPreDestroyMethods());
-        decorator.setProducer(injectionTarget);
+        Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>();
         for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(decorator, annotatedType))
         {
-            decorator.addInjectionPoint(injectionPoint);
+            injectionPoints.add(injectionPoint);
         }
+        InjectionTarget<T> injectionTarget = buildInjectionTarget(annotatedType, injectionPoints, webBeansContext, getPostConstructMethods(), getPreDestroyMethods());
+        decorator.setProducer(injectionTarget);
 
         // we can only do this after the bean injection points got scanned
         defineDelegate(decorator.getInjectionPoints());

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java?rev=1441386&r1=1441385&r2=1441386&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java Fri Feb  1 11:13:30 2013
@@ -37,6 +37,7 @@ import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -331,19 +332,18 @@ public abstract class InterceptorBeanBui
     public B getBean()
     {
         B bean = createBean(annotatedType.getJavaClass(), isInterceptorEnabled(), interceptionMethods);
-
-        //X TODO hack to set the InjectionTarget
+        Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>();
+        for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
+        {
+            injectionPoints.add(injectionPoint);
+        }
         InjectionTarget<T> injectionTarget = new InjectionTargetImpl<T>(
                 bean.getAnnotatedType(),
-                bean.getInjectionPoints(),
+                injectionPoints,
                 webBeansContext,
                 Collections.<AnnotatedMethod<?>>emptyList(),
                 Collections.<AnnotatedMethod<?>>emptyList());
         bean.setProducer(injectionTarget);
-        for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
-        {
-            bean.addInjectionPoint(injectionPoint);
-        }
         return bean;
     }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java?rev=1441386&r1=1441385&r2=1441386&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java Fri Feb  1 11:13:30 2013
@@ -18,7 +18,9 @@
  */
 package org.apache.webbeans.component.creation;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
@@ -69,13 +71,13 @@ public class ManagedBeanBuilder<T, M ext
     {
         M bean = (M)new ManagedBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, annotatedType.getJavaClass());
         bean.setEnabled(webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes()));
+        Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>();
         for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
         {
-            bean.addInjectionPoint(injectionPoint);
+            injectionPoints.add(injectionPoint);
         }
-        
         InjectionTarget<T> injectionTarget
-            = new InjectionTargetImpl<T>(bean.getAnnotatedType(), bean.getInjectionPoints(), webBeansContext, getPostConstructMethods(), getPreDestroyMethods());
+            = new InjectionTargetImpl<T>(bean.getAnnotatedType(), injectionPoints, webBeansContext, getPostConstructMethods(), getPreDestroyMethods());
         bean.setProducer(injectionTarget);
         webBeansContext.getWebBeansUtil().checkManagedBeanCondition(annotatedType);
         WebBeansUtil.checkGenericType(annotatedType.getJavaClass(), beanAttributes.getScope());

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java?rev=1441386&r1=1441385&r2=1441386&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java Fri Feb  1 11:13:30 2013
@@ -67,18 +67,6 @@ public class ProducerMethodBeanBuilder<T
                                                      + " 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);        
     }