You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2013/01/14 19:59:49 UTC

svn commit: r1433040 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/component/ main/java/org/apache/webbeans/component/creation/ main/java/org/apache/webbeans/portable/ test/java/org/apache/webbeans/test/unittests/inject/

Author: struberg
Date: Mon Jan 14 18:59:48 2013
New Revision: 1433040

URL: http://svn.apache.org/viewvc?rev=1433040&view=rev
Log:
OWB-755 fixed InjectionPoint handling in Producer

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.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/InjectionTargetBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/UserComponentTest.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java?rev=1433040&r1=1433039&r2=1433040&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java Mon Jan 14 18:59:48 2013
@@ -29,10 +29,6 @@ import javax.enterprise.inject.spi.Injec
 
 public abstract class AbstractBean<T> implements Bean<T>
 {
-
-    final Set<InjectionPoint> internalInjectionPoints = new HashSet<InjectionPoint>();
-    private final Set<InjectionPoint> injectionPoints = Collections.unmodifiableSet(internalInjectionPoints);
-    
     private final Set<Type> types;
     private final Set<Annotation> qualifiers;
     private final Class<? extends Annotation> scope;
@@ -105,7 +101,7 @@ public abstract class AbstractBean<T> im
     @Override
     public Set<InjectionPoint> getInjectionPoints()
     {
-        return injectionPoints;
+        return Collections.EMPTY_SET;
     }
 
     @Override

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=1433040&r1=1433039&r2=1433040&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 Mon Jan 14 18:59:48 2013
@@ -35,7 +35,6 @@ import javax.enterprise.inject.CreationE
 import javax.enterprise.inject.Disposes;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.InjectionTarget;
-import javax.enterprise.inject.spi.InterceptionType;
 import javax.enterprise.inject.spi.Producer;
 
 import org.apache.webbeans.config.OWBLogConst;
@@ -43,11 +42,7 @@ import org.apache.webbeans.config.WebBea
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.context.creational.CreationalContextImpl;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
-import org.apache.webbeans.exception.WebBeansException;
-import org.apache.webbeans.intercept.InvocationContextImpl;
 import org.apache.webbeans.logger.WebBeansLoggerFacade;
-import org.apache.webbeans.portable.InjectionTargetImpl;
-import org.apache.webbeans.util.WebBeansUtil;
 
 /**
  * Abstract implementation of the {@link OwbBean} contract. 
@@ -73,7 +68,7 @@ public abstract class AbstractOwbBean<T>
 
     /** The bean allows nullable object */
     protected boolean nullable = true;
-    
+
     /**Beans injection points*/
     protected Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>();
 
@@ -159,59 +154,21 @@ public abstract class AbstractOwbBean<T>
                         creationalContext, this); 
             }
            
-            Producer<T> wrapper = producer;
             //If wrapper not null
-            if(wrapper != null)
+            if(producer != null)
             {
-                instance = wrapper.produce(creationalContext);
-                if (wrapper instanceof InjectionTarget)
+                instance = producer.produce(creationalContext);
+                if (producer instanceof InjectionTarget)
                 {
-                    ((InjectionTarget)wrapper).inject(instance, creationalContext);
-                    ((InjectionTarget)wrapper).postConstruct(instance);
+                    ((InjectionTarget)producer).inject(instance, creationalContext);
+                    ((InjectionTarget)producer).postConstruct(instance);
                 }
             }
             else
             {
-                if(this instanceof InjectionTargetBean)
-                {
-                    //X TODO holy shit. this is completely against the whole bean hierarchy!
-
-                    instance = createInstance(creationalContext); 
-                    InjectionTargetBean<T> injectionTargetBean = (InjectionTargetBean<T>)this;
-                    //Inject resources
-                    injectionTargetBean.injectResources(instance, creationalContext);
-                    
-                    new InjectionTargetImpl<T>(injectionTargetBean.getAnnotatedType(), getInjectionPoints(), webBeansContext, null, null).inject(instance, creationalContext);
-                    
-                    //Post construct
-                    if(getWebBeansType().equals(WebBeansType.MANAGED))
-                    {
-                        // Call Post Construct
-                        if (WebBeansUtil.isContainsInterceptorMethod(injectionTargetBean.getInterceptorStack(), InterceptionType.POST_CONSTRUCT))
-                        {
-                            InvocationContextImpl impl = new InvocationContextImpl(getWebBeansContext(), null, instance, null, null,
-                                    getWebBeansContext().getInterceptorUtil().getInterceptorMethods(injectionTargetBean.getInterceptorStack(),
-                                                                                                    InterceptionType.POST_CONSTRUCT),
-                                                                                                    InterceptionType.POST_CONSTRUCT);
-                            impl.setCreationalContext(creationalContext);
-                            try
-                            {
-                                impl.proceed();
-                            }
-
-                            catch (Exception e)
-                            {
-                                getLogger().log(Level.SEVERE, WebBeansLoggerFacade.constructMessage(OWBLogConst.ERROR_0008, "@PostConstruct."), e);
-                                throw new WebBeansException(e);
-                            }
-                        }            
-                    }        
-                }
-                else
-                {
-                    instance = createInstance(creationalContext);     
-                }
-            }                                    
+                //X TODO review if this is still needed!
+                instance = createInstance(creationalContext);
+            }
         }
         catch (Exception re)
         {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java?rev=1433040&r1=1433039&r2=1433040&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java Mon Jan 14 18:59:48 2013
@@ -125,9 +125,9 @@ public abstract class InjectionTargetBea
     {
         //Create actual bean instance
         T instance = createComponentInstance(creationalContext);
+
+        //X TODO this should not be needed finally!
         //For dependent instance checks
-        T dependentProxy = null;
-        boolean isDependentProxy = false;
         if(getScope() == Dependent.class && !(this instanceof EnterpriseBeanMarker))
         {
             final ProxyFactory proxyFactory = getWebBeansContext().getProxyFactory();
@@ -142,20 +142,23 @@ public abstract class InjectionTargetBea
                 getInjectionTarget().inject(instance, creationalContext);
 
                 //Dependent proxy
-                dependentProxy = result;
-                
-                //This is a dependent
-                isDependentProxy = true;
+                return result;
             }
         }
-                        
-        
-        //If dependent proxy
-        if(isDependentProxy)
+
+        //Inject resources
+        injectResources(instance, creationalContext);
+
+        getInjectionTarget().inject(instance, creationalContext);
+
+        //Post construct
+        if(getWebBeansType().equals(WebBeansType.MANAGED))
         {
-            return dependentProxy;
+            // Call Post Construct
+            //X TODO
         }
-        
+
+
         return instance;
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java?rev=1433040&r1=1433039&r2=1433040&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java Mon Jan 14 18:59:48 2013
@@ -307,7 +307,7 @@ public abstract class AbstractInjectionT
     {
         AnnotationManager annotationManager = webBeansContext.getAnnotationManager();
 
-        Set<AnnotatedField<? super T>> annotatedFields = getAnnotated().getFields();   
+        Set<AnnotatedField<? super T>> annotatedFields = getAnnotated().getFields();
         for(AnnotatedField<? super T> annotatedField: annotatedFields)
         {
             if(Modifier.isPublic(annotatedField.getJavaMember().getModifiers()) && !annotatedField.isStatic())

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java?rev=1433040&r1=1433039&r2=1433040&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java Mon Jan 14 18:59:48 2013
@@ -18,8 +18,6 @@
  */
 package org.apache.webbeans.portable;
 
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.Set;
 
 import javax.enterprise.inject.spi.InjectionPoint;
@@ -32,7 +30,8 @@ public abstract class AbstractProducer<T
 
     public AbstractProducer(Set<InjectionPoint> points)
     {
-        injectionPoints = Collections.unmodifiableSet(new HashSet<InjectionPoint>(points));
+        // this shares the InjectionPoints with the owning component for now
+        injectionPoints = points;
     }
     
     @Override

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/UserComponentTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/UserComponentTest.java?rev=1433040&r1=1433039&r2=1433040&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/UserComponentTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/UserComponentTest.java Mon Jan 14 18:59:48 2013
@@ -18,68 +18,44 @@
  */
 package org.apache.webbeans.test.unittests.inject;
 
-import java.util.List;
+import java.util.ArrayList;
+import java.util.Collection;
 
 import javax.enterprise.inject.spi.BeanManager;
 
 import junit.framework.Assert;
 
-import org.apache.webbeans.component.AbstractOwbBean;
-import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.test.TestContext;
+import org.apache.webbeans.newtests.AbstractUnitTest;
 import org.apache.webbeans.test.component.ContainUserComponent;
 import org.apache.webbeans.test.component.UserComponent;
-import org.junit.Before;
 import org.junit.Test;
 
-public class UserComponentTest extends TestContext
+public class UserComponentTest extends AbstractUnitTest
 {
     BeanManager container = null;
 
-    public UserComponentTest()
-    {
-        super(UserComponentTest.class.getSimpleName());
-    }
-
-    @Before
-    public void init()
-    {
-        this.container = WebBeansContext.getInstance().getBeanManagerImpl();
-        super.init();
-    }
 
     @Test
     public void testTypedComponent() throws Throwable
     {
-        clear();
-
-        defineManagedBean(UserComponent.class);
-        defineManagedBean(ContainUserComponent.class);
-        List<AbstractOwbBean<?>> comps = getComponents();
+        Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+        beanClasses.add(UserComponent.class);
+        beanClasses.add(ContainUserComponent.class);
 
-        Object session = getSession();
-        WebBeansContext.getInstance().getContextFactory().initRequestContext(null);
-        WebBeansContext.getInstance().getContextFactory().initSessionContext(session);
+        startContainer(beanClasses, null);
 
-        Assert.assertEquals(2, comps.size());
-
-        UserComponent userComponent = (UserComponent) getManager().getInstance(comps.get(0));
+        UserComponent userComponent = getInstance(UserComponent.class);
         userComponent.setName("Gurkan");
         userComponent.setSurname("Erdogdu");
 
         Assert.assertNotNull(userComponent);
 
-        Object object = getManager().getInstance(comps.get(1));
-        Assert.assertNotNull(object);
-        Assert.assertTrue(object instanceof ContainUserComponent);
-
-        ContainUserComponent uc = (ContainUserComponent) object;
+        ContainUserComponent uc = getInstance(ContainUserComponent.class);
 
         Assert.assertNotNull(uc.echo());
         Assert.assertEquals(uc.echo(), userComponent.getName() + " " + userComponent.getSurname());
 
-        WebBeansContext.getInstance().getContextFactory().destroyRequestContext(null);
-        WebBeansContext.getInstance().getContextFactory().destroySessionContext(session);
+        shutDownContainer();
     }
 
 }