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