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/04/06 21:04:28 UTC
svn commit: r1465291 [1/2] - in /openwebbeans/trunk:
webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/
webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/
webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/ webb...
Author: arne
Date: Sat Apr 6 19:04:24 2013
New Revision: 1465291
URL: http://svn.apache.org/r1465291
Log:
OWB-814: Implemented ProducerFactory and InjectionTargetFactory and use them
Added:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionProducerFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SimpleProducerFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/FieldProducerFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java
- copied, changed from r1451507, openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/DecoratorInjectionTargetFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InterceptorInjectionTargetFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ProducerFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducerFactory.java
Removed:
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java
Modified:
openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java
openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java
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/AbstractProducerBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/DecoratorBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.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/InstanceBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.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/ProducerFieldBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.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/ExtensionBeanBuilder.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/ObserverMethodsBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverMethodImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ExtensionProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerFieldProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProducerMethodProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/decorators/tests/ConversationDecoratorTest.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
openwebbeans/trunk/webbeans-jms/src/main/java/org/apache/webbeans/jms/component/JmsBean.java
Modified: openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java (original)
+++ openwebbeans/trunk/webbeans-ee-common/src/main/java/org/apache/webbeans/ee/common/beans/PrincipalBean.java Sat Apr 6 19:04:24 2013
@@ -21,6 +21,7 @@ package org.apache.webbeans.ee.common.be
import java.security.Principal;
import org.apache.webbeans.component.BuildInOwbBean;
+import org.apache.webbeans.component.SimpleProducerFactory;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.portable.ProviderBasedProxyProducer;
@@ -30,8 +31,10 @@ public class PrincipalBean extends Build
public PrincipalBean(WebBeansContext webBeansContext)
{
- super(webBeansContext, WebBeansType.PRINCIPAL, Principal.class);
- setProducer(new ProviderBasedProxyProducer<Principal>(webBeansContext, Principal.class, new PrincipalProvider(webBeansContext)));
+ super(webBeansContext,
+ WebBeansType.PRINCIPAL,
+ Principal.class,
+ new SimpleProducerFactory<Principal>(new ProviderBasedProxyProducer<Principal>(webBeansContext, Principal.class, new PrincipalProvider(webBeansContext))));
}
@Override
Modified: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java (original)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/UserTransactionBean.java Sat Apr 6 19:04:24 2013
@@ -21,6 +21,7 @@ package org.apache.webbeans.ee.beans;
import javax.transaction.UserTransaction;
import org.apache.webbeans.component.BuildInOwbBean;
+import org.apache.webbeans.component.SimpleProducerFactory;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.portable.ProviderBasedProxyProducer;
@@ -30,8 +31,11 @@ public class UserTransactionBean extends
public UserTransactionBean(WebBeansContext webBeansContext)
{
- super(webBeansContext, WebBeansType.USERTRANSACTION, UserTransaction.class);
- setProducer(new ProviderBasedProxyProducer<UserTransaction>(webBeansContext, UserTransaction.class, new UserTransactionProvider(webBeansContext)));
+ super(webBeansContext,
+ WebBeansType.USERTRANSACTION,
+ UserTransaction.class,
+ new SimpleProducerFactory<UserTransaction>(
+ new ProviderBasedProxyProducer<UserTransaction>(webBeansContext, UserTransaction.class, new UserTransactionProvider(webBeansContext))));
}
@Override
Modified: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java (original)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorBean.java Sat Apr 6 19:04:24 2013
@@ -21,6 +21,7 @@ package org.apache.webbeans.ee.beans;
import javax.validation.Validator;
import org.apache.webbeans.component.BuildInOwbBean;
+import org.apache.webbeans.component.SimpleProducerFactory;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.portable.ProviderBasedProxyProducer;
@@ -30,8 +31,10 @@ public class ValidatorBean extends Build
public ValidatorBean(WebBeansContext webBeansContext)
{
- super(webBeansContext, WebBeansType.VALIDATION, Validator.class);
- setProducer(new ProviderBasedProxyProducer<Validator>(webBeansContext, Validator.class, new ValidatorProvider(webBeansContext)));
+ super(webBeansContext,
+ WebBeansType.VALIDATION,
+ Validator.class,
+ new SimpleProducerFactory<Validator>(new ProviderBasedProxyProducer<Validator>(webBeansContext, Validator.class, new ValidatorProvider(webBeansContext))));
}
@Override
Modified: openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java (original)
+++ openwebbeans/trunk/webbeans-ee/src/main/java/org/apache/webbeans/ee/beans/ValidatorFactoryBean.java Sat Apr 6 19:04:24 2013
@@ -21,6 +21,7 @@ package org.apache.webbeans.ee.beans;
import javax.validation.ValidatorFactory;
import org.apache.webbeans.component.BuildInOwbBean;
+import org.apache.webbeans.component.SimpleProducerFactory;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.portable.ProviderBasedProxyProducer;
@@ -30,8 +31,11 @@ public class ValidatorFactoryBean extend
public ValidatorFactoryBean(WebBeansContext webBeansContext)
{
- super(webBeansContext, WebBeansType.VALIDATIONFACT, ValidatorFactory.class);
- setProducer(new ProviderBasedProxyProducer<ValidatorFactory>(webBeansContext, ValidatorFactory.class, new ValidatorFactoryProvider(webBeansContext)));
+ super(webBeansContext,
+ WebBeansType.VALIDATIONFACT,
+ ValidatorFactory.class,
+ new SimpleProducerFactory<ValidatorFactory>(
+ new ProviderBasedProxyProducer<ValidatorFactory>(webBeansContext, ValidatorFactory.class, new ValidatorFactoryProvider(webBeansContext))));
}
@Override
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=1465291&r1=1465290&r2=1465291&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 Sat Apr 6 19:04:24 2013
@@ -18,8 +18,6 @@
*/
package org.apache.webbeans.ejb.common.component;
-import java.util.Collections;
-import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -76,22 +74,7 @@ public abstract class EjbBeanBuilder<T,
protected final E createBean(Class<T> beanClass)
{
- E bean = createBean(beanClass, webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes()));
-
- Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>();
- for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, annotatedType))
- {
- injectionPoints.add(injectionPoint);
- }
- InjectionTarget<T> injectionTarget = buildInjectionTarget(
- bean.getAnnotatedType(),
- injectionPoints,
- webBeansContext,
- Collections.<AnnotatedMethod<?>>emptyList(),
- Collections.<AnnotatedMethod<?>>emptyList());
- bean.setProducer(injectionTarget);
-
- return bean;
+ return createBean(beanClass, webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, annotatedType.getJavaClass(), beanAttributes.getStereotypes()));
}
protected abstract E createBean(Class<T> beanClass, boolean beanEnabled);
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=1465291&r1=1465290&r2=1465291&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 Sat Apr 6 19:04:24 2013
@@ -22,7 +22,6 @@ import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.util.Collections;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -64,9 +63,6 @@ public abstract class AbstractOwbBean<T>
/**This bean is enabled or disabled*/
protected boolean enabled = true;
- /** The producer */
- private Producer<T> producer;
-
/**
* This string will be used for passivating the Bean.
* It will be created on the first use.
@@ -103,10 +99,7 @@ public abstract class AbstractOwbBean<T>
return beanClass;
}
- public Producer<T> getProducer()
- {
- return producer;
- }
+ public abstract Producer<T> getProducer();
/**
* {@inheritDoc}
@@ -120,6 +113,7 @@ public abstract class AbstractOwbBean<T>
creationalContext = webBeansContext.getCreationalContextFactory().wrappedCreationalContext(creationalContext, this);
}
+ Producer<T> producer = getProducer();
T instance = producer.produce(creationalContext);
if (producer instanceof InjectionTarget)
{
@@ -174,6 +168,7 @@ public abstract class AbstractOwbBean<T>
}
try
{
+ Producer<T> producer = getProducer();
if (producer instanceof InjectionTarget)
{
InjectionTarget<T> injectionTarget = (InjectionTarget<T>)producer;
@@ -236,11 +231,6 @@ public abstract class AbstractOwbBean<T>
/** cache previously calculated result */
private Boolean isPassivationCapable = null;
- public void setProducer(Producer<T> producer)
- {
- this.producer = producer;
- }
-
/**
* Get web bean type of the bean.
*
@@ -268,11 +258,7 @@ public abstract class AbstractOwbBean<T>
*/
public Set<InjectionPoint> getInjectionPoints()
{
- if (producer == null)
- {
- return Collections.<InjectionPoint> emptySet();
- }
- return producer.getInjectionPoints();
+ return getProducer().getInjectionPoints();
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java Sat Apr 6 19:04:24 2013
@@ -23,6 +23,9 @@ import java.lang.reflect.Modifier;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.PassivationCapable;
+import javax.enterprise.inject.spi.Producer;
+
+import org.apache.webbeans.container.ProducerFactory;
/**
@@ -36,6 +39,7 @@ public abstract class AbstractProducerBe
/** Owner of the producer field component */
protected InjectionTargetBean<?> ownerComponent;
private Class<T> returnType;
+ private Producer<T> producer;
/**
* Create a new instance.
@@ -46,11 +50,19 @@ public abstract class AbstractProducerBe
protected AbstractProducerBean(InjectionTargetBean<?> ownerComponent,
WebBeansType webBeansType,
BeanAttributesImpl<T> beanAttributes,
- Class<T> returnType)
+ Class<T> returnType,
+ ProducerFactory<T> producerFactory)
{
super(ownerComponent.getWebBeansContext(), webBeansType, beanAttributes, ownerComponent.getBeanClass());
this.ownerComponent = ownerComponent;
this.returnType = returnType;
+ this.producer = producerFactory.createProducer(this);
+ }
+
+ @Override
+ public Producer<T> getProducer()
+ {
+ return producer;
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java Sat Apr 6 19:04:24 2013
@@ -27,15 +27,15 @@ import org.apache.webbeans.portable.Bean
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.CollectionUtil;
-public class BeanManagerBean extends AbstractOwbBean<BeanManager>
+public class BeanManagerBean extends BuildInOwbBean<BeanManager>
{
public BeanManagerBean(WebBeansContext webBeansContext)
{
super(webBeansContext,
WebBeansType.MANAGER,
new BeanAttributesImpl<BeanManager>(CollectionUtil.<Type>unmodifiableSet(BeanManager.class, Object.class), AnnotationUtil.DEFAULT_AND_ANY_ANNOTATION),
- BeanManager.class);
- setProducer(new BeanManagerProducer(webBeansContext));
+ BeanManager.class,
+ new SimpleProducerFactory<BeanManager>(new BeanManagerProducer(webBeansContext)));
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BuildInOwbBean.java Sat Apr 6 19:04:24 2013
@@ -19,15 +19,39 @@
package org.apache.webbeans.component;
import java.lang.reflect.Type;
+
+import javax.enterprise.inject.spi.Producer;
+
+import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.CollectionUtil;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.ProducerFactory;
public abstract class BuildInOwbBean<T> extends AbstractOwbBean<T>
{
- protected BuildInOwbBean(WebBeansContext webBeansContext, WebBeansType webBeansType, Class<T> returnType)
+ private Producer<T> producer;
+
+ protected BuildInOwbBean(WebBeansContext webBeansContext, WebBeansType webBeansType, Class<T> returnType, ProducerFactory<T> producerFactory)
+ {
+ this(webBeansContext, webBeansType, new BeanAttributesImpl<T>(CollectionUtil.<Type>unmodifiableSet(returnType, Object.class)), returnType, producerFactory);
+ }
+
+ protected BuildInOwbBean(
+ WebBeansContext webBeansContext,
+ WebBeansType webBeansType,
+ BeanAttributesImpl<T> beanAttributes,
+ Class<T> returnType,
+ ProducerFactory<T> producerFactory)
+ {
+ super(webBeansContext, webBeansType, beanAttributes, returnType);
+ Asserts.assertNotNull(producerFactory, "ProducerFactory may not be null");
+ this.producer = producerFactory.createProducer(this);
+ }
+
+ public Producer<T> getProducer()
{
- super(webBeansContext, webBeansType, new BeanAttributesImpl<T>(CollectionUtil.<Type>unmodifiableSet(returnType, Object.class)), returnType);
+ return producer;
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java Sat Apr 6 19:04:24 2013
@@ -36,7 +36,7 @@ import org.apache.webbeans.util.Collecti
* @version $Rev$ $Date$
*
*/
-public class ConversationBean extends InjectionTargetBean<ConversationImpl> implements InterceptedMarker
+public class ConversationBean extends BuildInOwbBean<ConversationImpl> implements InterceptedMarker
{
/**
* Default constructor.
@@ -46,7 +46,6 @@ public class ConversationBean extends In
{
super(webBeansContext,
WebBeansType.CONVERSATION,
- webBeansContext.getAnnotatedElementFactory().newAnnotatedType(ConversationImpl.class),
new BeanAttributesImpl<ConversationImpl>(
CollectionUtil.<Type>unmodifiableSet(Conversation.class, ConversationImpl.class, Object.class),
AnnotationUtil.DEFAULT_AND_ANY_ANNOTATION,
@@ -55,8 +54,9 @@ public class ConversationBean extends In
false,
Collections.<Class<? extends Annotation>>emptySet(),
false),
- ConversationImpl.class);
+ ConversationImpl.class,
+ new SimpleProducerFactory<ConversationImpl>(
+ new ConversationProducer(webBeansContext.getAnnotatedElementFactory().newAnnotatedType(ConversationImpl.class), webBeansContext)));
setEnabled(true);
- setProducer(new ConversationProducer(getAnnotatedType(), webBeansContext));
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/DecoratorBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/DecoratorBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/DecoratorBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/DecoratorBean.java Sat Apr 6 19:04:24 2013
@@ -25,6 +25,7 @@ import java.lang.reflect.Type;
import java.util.Set;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.DecoratorInjectionTargetFactory;
/**
* Decorator Bean implementation.
@@ -53,7 +54,7 @@ public class DecoratorBean<T> extends In
BeanAttributesImpl<T> beanAttributes,
Class<T> beanClass)
{
- super(webBeansContext, webBeansType, annotatedType, beanAttributes, beanClass);
+ super(webBeansContext, webBeansType, annotatedType, beanAttributes, beanClass, new DecoratorInjectionTargetFactory<T>(annotatedType, webBeansContext));
}
public void setDecoratorInfo(Set<Type> decoratedTypes, Type delegateType, Set<Annotation> delegateQualifiers)
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java Sat Apr 6 19:04:24 2013
@@ -32,7 +32,7 @@ import org.apache.webbeans.util.Collecti
*
* @version $Rev$Â $Date$
*/
-public class EventBean<T> extends AbstractOwbBean<Event<T>>
+public class EventBean<T> extends BuildInOwbBean<Event<T>>
{
/**
@@ -45,8 +45,8 @@ public class EventBean<T> extends Abstra
super(webBeansContext,
WebBeansType.OBSERVABLE,
new BeanAttributesImpl<Event<T>>(CollectionUtil.<Type>unmodifiableSet(new TypeLiteral<Event<T>>() {}.getRawType(), Object.class)),
- new TypeLiteral<Event<T>>(){}.getRawType());
- setProducer(new EventProducer<T>(webBeansContext));
+ new TypeLiteral<Event<T>>(){}.getRawType(),
+ new SimpleProducerFactory<Event<T>>(new EventProducer<T>(webBeansContext)));
}
/* (non-Javadoc)
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java Sat Apr 6 19:04:24 2013
@@ -21,7 +21,6 @@ package org.apache.webbeans.component;
import javax.enterprise.context.ApplicationScoped;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.portable.ExtensionProducer;
import org.apache.webbeans.util.AnnotationUtil;
/**
@@ -31,8 +30,7 @@ import org.apache.webbeans.util.Annotati
*
* @param <T> type info
*/
-// TODO : Should not extend InjectionTargetBean, but AbstractOwbBean
-public class ExtensionBean<T> extends InjectionTargetBean<T>
+public class ExtensionBean<T> extends BuildInOwbBean<T>
{
/**
* Creates a new extesion bean.
@@ -44,13 +42,11 @@ public class ExtensionBean<T> extends In
{
super(webBeansContext,
WebBeansType.EXTENSION,
- webBeansContext.getAnnotatedElementFactory().newAnnotatedType(returnType),
new BeanAttributesImpl<T>(
webBeansContext.getAnnotatedElementFactory().getAnnotatedType(returnType).getTypeClosure(),
AnnotationUtil.DEFAULT_AND_ANY_ANNOTATION,
ApplicationScoped.class),
- returnType);
- setEnabled(true);
- setProducer(new ExtensionProducer<T>(getAnnotatedType(), getInjectionPoints(), webBeansContext));
+ returnType,
+ new ExtensionProducerFactory<T>(webBeansContext.getAnnotatedElementFactory().getAnnotatedType(returnType), webBeansContext));
}
}
Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionProducerFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionProducerFactory.java?rev=1465291&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionProducerFactory.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionProducerFactory.java Sat Apr 6 19:04:24 2013
@@ -0,0 +1,51 @@
+/*
+ * 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.component;
+
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Producer;
+
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.ProducerFactory;
+import org.apache.webbeans.portable.ExtensionProducer;
+
+/**
+ * A factory for {@link javax.enterprise.inject.spi.Producer}s that produce CDI {@link javax.enterprise.inject.spi.Extension}s.
+ *
+ * @version $Rev: 1440403 $ $Date: 2013-01-30 14:27:15 +0100 (Mi, 30 Jan 2013) $
+ */
+public class ExtensionProducerFactory<T> implements ProducerFactory<T>
+{
+
+ private AnnotatedType<T> annotatedType;
+ private WebBeansContext webBeansContext;
+
+ public ExtensionProducerFactory(AnnotatedType<T> annotatedType, WebBeansContext webBeansContext)
+ {
+ this.annotatedType = annotatedType;
+ this.webBeansContext = webBeansContext;
+ }
+
+ @Override
+ public Producer<T> createProducer(Bean<T> bean)
+ {
+ return new ExtensionProducer<T>(annotatedType, bean, webBeansContext);
+ }
+}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java Sat Apr 6 19:04:24 2013
@@ -26,15 +26,15 @@ import org.apache.webbeans.config.WebBea
import org.apache.webbeans.portable.InjectionPointProducer;
import org.apache.webbeans.util.CollectionUtil;
-public class InjectionPointBean extends AbstractOwbBean<InjectionPoint>
+public class InjectionPointBean extends BuildInOwbBean<InjectionPoint>
{
public InjectionPointBean(WebBeansContext webBeansContext)
{
super(webBeansContext,
WebBeansType.INJECTIONPOINT,
new BeanAttributesImpl<InjectionPoint>(CollectionUtil.<Type>unmodifiableSet(InjectionPoint.class, Object.class)),
- InjectionPoint.class);
- setProducer(new InjectionPointProducer());
+ InjectionPoint.class,
+ new SimpleProducerFactory<InjectionPoint>(new InjectionPointProducer()));
}
/* (non-Javadoc)
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=1465291&r1=1465290&r2=1465291&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 Sat Apr 6 19:04:24 2013
@@ -29,6 +29,7 @@ import java.util.Map;
import javax.enterprise.inject.spi.AnnotatedType;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.InjectionTargetFactoryImpl;
import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.InterceptionType;
@@ -51,6 +52,16 @@ public abstract class InjectionTargetBea
{
/**Annotated type for bean*/
private AnnotatedType<T> annotatedType;
+ private InjectionTarget<T> injectionTarget;
+
+ protected InjectionTargetBean(WebBeansContext webBeansContext,
+ WebBeansType webBeansType,
+ AnnotatedType<T> annotatedType,
+ BeanAttributesImpl<T> beanAttributes,
+ Class<T> beanClass)
+ {
+ this(webBeansContext, webBeansType, annotatedType, beanAttributes, beanClass, new InjectionTargetFactoryImpl<T>(annotatedType, webBeansContext));
+ }
/**
* Initializes the InjectionTarget Bean part.
@@ -59,17 +70,24 @@ public abstract class InjectionTargetBea
WebBeansType webBeansType,
AnnotatedType<T> annotatedType,
BeanAttributesImpl<T> beanAttributes,
- Class<T> beanClass)
+ Class<T> beanClass,
+ InjectionTargetFactoryImpl<T> factory)
{
super(webBeansContext, webBeansType, beanAttributes, beanClass);
Asserts.assertNotNull(annotatedType, "AnnotatedType may not be null");
this.annotatedType = annotatedType;
+ this.injectionTarget = factory.createInjectionTarget(this);
setEnabled(true);
}
+ public InjectionTarget<T> getProducer()
+ {
+ return injectionTarget;
+ }
+
public InjectionTarget<T> getInjectionTarget()
{
- return (InjectionTarget<T>) getProducer();
+ return injectionTarget;
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java Sat Apr 6 19:04:24 2013
@@ -29,7 +29,7 @@ import org.apache.webbeans.portable.Inst
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.CollectionUtil;
-public class InstanceBean<T> extends AbstractOwbBean<Instance<T>>
+public class InstanceBean<T> extends BuildInOwbBean<Instance<T>>
{
@SuppressWarnings("serial")
@@ -41,8 +41,9 @@ public class InstanceBean<T> extends Abs
new TypeLiteral<Instance<T>>(){}.getRawType(),
new TypeLiteral<Provider<T>>() {}.getRawType(),
Object.class)),
- new TypeLiteral<Instance<T>>(){}.getRawType());
- setProducer(new InstanceProducer<T>(getReturnType(), AnnotationUtil.DEFAULT_AND_ANY_ANNOTATION, webBeansContext));
+ new TypeLiteral<Instance<T>>(){}.getRawType(),
+ new SimpleProducerFactory<Instance<T>>(
+ new InstanceProducer<T>(new TypeLiteral<Instance<T>>(){}.getRawType(), AnnotationUtil.DEFAULT_AND_ANY_ANNOTATION, webBeansContext)));
}
/* (non-Javadoc)
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java Sat Apr 6 19:04:24 2013
@@ -30,6 +30,7 @@ import java.util.Collections;
import java.util.Map;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.InterceptorInjectionTargetFactory;
import org.apache.webbeans.util.ExceptionUtil;
/**
@@ -63,7 +64,8 @@ public abstract class InterceptorBean<T>
WebBeansType.INTERCEPTOR,
annotatedType,
beanAttributes,
- beanClass);
+ beanClass,
+ new InterceptorInjectionTargetFactory<T>(annotatedType, webBeansContext));
this.interceptionMethods = Collections.unmodifiableMap(interceptionMethods);
for (Method[] methods: interceptionMethods.values())
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java Sat Apr 6 19:04:24 2013
@@ -18,15 +18,12 @@
*/
package org.apache.webbeans.component;
-import java.util.Collections;
import java.util.Set;
-import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.InjectionPoint;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.portable.InjectionTargetImpl;
/**
* Component definition with {@link javax.enterprise.inject.New} binding annotation.
@@ -47,8 +44,6 @@ public class NewManagedBean<T> extends M
Set<InjectionPoint> injectionPoints)
{
super(webBeansContext, webBeansType, annotatedType, beanAttributes, beanClass);
- setProducer(new InjectionTargetImpl<T>(
- annotatedType, injectionPoints, webBeansContext, Collections.<AnnotatedMethod<?>>emptyList(), Collections.<AnnotatedMethod<?>>emptyList()));
}
/**
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=1465291&r1=1465290&r2=1465291&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 Sat Apr 6 19:04:24 2013
@@ -39,13 +39,6 @@ public interface OwbBean<T> extends Bean
public Producer<T> getProducer();
/**
- * Sets the producer for this bean
- *
- * @param producer
- */
- public void setProducer(Producer<T> producer);
-
- /**
* Returns bean type.
*
* @return webbeans type
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java Sat Apr 6 19:04:24 2013
@@ -23,6 +23,7 @@ import java.lang.reflect.Field;
import javax.enterprise.context.spi.CreationalContext;
+import org.apache.webbeans.container.ProducerFactory;
import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
@@ -42,9 +43,9 @@ public class ProducerFieldBean<T> extend
*
* @param returnType type of the field decleration
*/
- public ProducerFieldBean(InjectionTargetBean<?> ownerComponent, BeanAttributesImpl<T> beanAttributes, Class<T> returnType)
+ public ProducerFieldBean(InjectionTargetBean<?> ownerComponent, BeanAttributesImpl<T> beanAttributes, Class<T> returnType, ProducerFactory<T> producerFactory)
{
- super(ownerComponent, WebBeansType.PRODUCERFIELD, beanAttributes, returnType);
+ super(ownerComponent, WebBeansType.PRODUCERFIELD, beanAttributes, returnType, producerFactory);
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java Sat Apr 6 19:04:24 2013
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
import javax.enterprise.context.spi.CreationalContext;
+import org.apache.webbeans.component.creation.MethodProducerFactory;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
@@ -52,9 +53,10 @@ public class ProducerMethodBean<T> exten
*/
public <P> ProducerMethodBean(InjectionTargetBean<P> ownerComponent,
BeanAttributesImpl<T> beanAttributes,
- Class<T> returnType)
+ Class<T> returnType,
+ MethodProducerFactory<T, P> producerFactory)
{
- super(ownerComponent, WebBeansType.PRODUCERMETHOD, beanAttributes, returnType);
+ super(ownerComponent, WebBeansType.PRODUCERMETHOD, beanAttributes, returnType, producerFactory);
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java Sat Apr 6 19:04:24 2013
@@ -20,6 +20,7 @@ package org.apache.webbeans.component;
import java.lang.annotation.Annotation;
+import org.apache.webbeans.portable.ProviderBasedProxyProducerFactory;
import org.apache.webbeans.spi.ResourceInjectionService;
import org.apache.webbeans.spi.api.ResourceReference;
@@ -33,7 +34,12 @@ public class ResourceBean<X, T extends A
BeanAttributesImpl<X> beanAttributes,
Class<X> beanClass)
{
- super(ownerComponent, beanAttributes, beanClass);
+ super(ownerComponent,
+ beanAttributes,
+ beanClass,
+ new ProviderBasedProxyProducerFactory<X>(new ResourceProvider<X>(resourceReference, ownerComponent.getWebBeansContext()),
+ beanClass,
+ ownerComponent.getWebBeansContext()));
this.resourceReference = resourceReference;
}
Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SimpleProducerFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SimpleProducerFactory.java?rev=1465291&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SimpleProducerFactory.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SimpleProducerFactory.java Sat Apr 6 19:04:24 2013
@@ -0,0 +1,44 @@
+/*
+ * 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.component;
+
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Producer;
+
+import org.apache.webbeans.container.ProducerFactory;
+
+/**
+ * @version $Rev: 1440403 $ $Date: 2013-01-30 14:27:15 +0100 (Mi, 30 Jan 2013) $
+ */
+public class SimpleProducerFactory<T> implements ProducerFactory<T>
+{
+
+ private Producer<T> producer;
+
+ public SimpleProducerFactory(Producer<T> producer)
+ {
+ this.producer = producer;
+ }
+
+ @Override
+ public Producer<T> createProducer(Bean<T> bean)
+ {
+ return producer;
+ }
+}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractProducerBeanBuilder.java Sat Apr 6 19:04:24 2013
@@ -53,7 +53,7 @@ public abstract class AbstractProducerBe
return parent.getWebBeansContext().getAnnotatedElementFactory().getAnnotatedType(superclass);
}
- protected abstract P createBean(InjectionTargetBean<?> parent, Class<T> beanClass);
+ protected abstract <X> P createBean(InjectionTargetBean<X> parent, Class<T> beanClass);
protected P createBean(Class<T> beanClass)
{
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=1465291&r1=1465290&r2=1465291&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 Sat Apr 6 19:04:24 2013
@@ -24,17 +24,14 @@ import javax.decorator.Delegate;
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Alternative;
import javax.enterprise.inject.Produces;
-import javax.enterprise.inject.spi.AnnotatedConstructor;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedParameter;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.InjectionTarget;
import javax.inject.Inject;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.ArrayList;
@@ -53,8 +50,6 @@ import org.apache.webbeans.config.OwbPar
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
-import org.apache.webbeans.portable.AnnotatedConstructorImpl;
-import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
@@ -275,33 +270,10 @@ public class DecoratorBeanBuilder<T>
}
}
- protected InjectionTarget<T> buildInjectionTarget(AnnotatedType<T> annotatedType, Set<InjectionPoint> points,
- WebBeansContext webBeansContext, List<AnnotatedMethod<?>> postConstructMethods, List<AnnotatedMethod<?>> preDestroyMethods)
- {
- InjectionTarget<T> injectionTarget;
-
- if (Modifier.isAbstract(annotatedType.getJavaClass().getModifiers()))
- {
- injectionTarget = new AbstractDecoratorInjectionTarget<T>(annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
- }
- else
- {
- injectionTarget = new InjectionTargetImpl<T>(annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
- }
- return injectionTarget;
- }
-
public DecoratorBean<T> getBean()
{
DecoratorBean<T> decorator = new DecoratorBean<T>(webBeansContext, WebBeansType.MANAGED, annotatedType, beanAttributes, annotatedType.getJavaClass());
decorator.setEnabled(webBeansContext.getDecoratorsManager().isDecoratorEnabled(annotatedType.getJavaClass()));
- Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>();
- for (InjectionPoint injectionPoint: webBeansContext.getInjectionPointFactory().buildInjectionPoints(decorator, annotatedType))
- {
- 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());
@@ -359,33 +331,4 @@ public class DecoratorBeanBuilder<T>
}
}
}
-
- /**
- * Helper class to swap out the constructor for the proxied subclass.
- */
- private static class AbstractDecoratorInjectionTarget<T> extends InjectionTargetImpl<T>
- {
- private Class<T> proxySubClass = null;
-
- private AbstractDecoratorInjectionTarget(AnnotatedType<T> annotatedType, Set<InjectionPoint> points, WebBeansContext webBeansContext,
- List<AnnotatedMethod<?>> postConstructMethods, List<AnnotatedMethod<?>> preDestroyMethods)
- {
- super(annotatedType, points, webBeansContext, postConstructMethods, preDestroyMethods);
- }
-
- @Override
- protected AnnotatedConstructor<T> createConstructor()
- {
- // create proxy subclass
- ClassLoader classLoader = this.getClass().getClassLoader();
- Class<T> classToProxy = annotatedType.getJavaClass();
-
- proxySubClass = webBeansContext.getSubclassProxyFactory().createImplementedSubclass(classLoader, classToProxy);
-
- //X TODO what about @Inject constructors?
- Constructor<T> ct = webBeansContext.getWebBeansUtil().getNoArgConstructor(proxySubClass);
- return new AnnotatedConstructorImpl<T>(webBeansContext, ct, annotatedType);
- }
-
- }
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ExtensionBeanBuilder.java Sat Apr 6 19:04:24 2013
@@ -37,6 +37,11 @@ public class ExtensionBeanBuilder<T>
this.annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(type);
}
+ public AnnotatedType<T> getAnnotatedType()
+ {
+ return annotatedType;
+ }
+
public ExtensionBean<T> getBean()
{
return new ExtensionBean<T>(webBeansContext, annotatedType.getJavaClass());
Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/FieldProducerFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/FieldProducerFactory.java?rev=1465291&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/FieldProducerFactory.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/FieldProducerFactory.java Sat Apr 6 19:04:24 2013
@@ -0,0 +1,52 @@
+/*
+ * 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.component.creation;
+
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Producer;
+
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.ProducerFactory;
+import org.apache.webbeans.portable.ProducerFieldProducer;
+import org.apache.webbeans.util.Asserts;
+
+public class FieldProducerFactory<T, P> implements ProducerFactory<T>
+{
+
+ private AnnotatedField<? super P> producerField;
+ private Bean<P> parent;
+ private WebBeansContext webBeansContext;
+
+ public FieldProducerFactory(AnnotatedField<? super P> producerField, Bean<P> parent, WebBeansContext webBeansContext)
+ {
+ Asserts.assertNotNull(producerField, "producer method may not be null");
+ Asserts.assertNotNull(webBeansContext, "WebBeansContext may not be null");
+ this.producerField = producerField;
+ this.parent = parent;
+ this.webBeansContext = webBeansContext;
+ }
+
+ @Override
+ public Producer<T> createProducer(Bean<T> bean)
+ {
+ Producer<T> producer = new ProducerFieldProducer<T, P>(parent, producerField, webBeansContext);
+ return webBeansContext.getWebBeansUtil().fireProcessProducerEvent(producer, producerField);
+ }
+}
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=1465291&r1=1465290&r2=1465291&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 Sat Apr 6 19:04:24 2013
@@ -24,8 +24,6 @@ import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedParameter;
import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.InterceptionType;
import javax.interceptor.AroundInvoke;
import javax.interceptor.AroundTimeout;
@@ -35,9 +33,7 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
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;
@@ -47,7 +43,6 @@ import org.apache.webbeans.component.Int
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.plugins.OpenWebBeansEjbLCAPlugin;
-import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
@@ -331,19 +326,6 @@ public abstract class InterceptorBeanBui
public B getBean()
{
- B bean = createBean(annotatedType.getJavaClass(), isInterceptorEnabled(), interceptionMethods);
- 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(),
- injectionPoints,
- webBeansContext,
- Collections.<AnnotatedMethod<?>>emptyList(),
- Collections.<AnnotatedMethod<?>>emptyList());
- bean.setProducer(injectionTarget);
- return bean;
+ return createBean(annotatedType.getJavaClass(), isInterceptorEnabled(), interceptionMethods);
}
}
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=1465291&r1=1465290&r2=1465291&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 Sat Apr 6 19:04:24 2013
@@ -18,22 +18,12 @@
*/
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;
-import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.InjectionTarget;
import org.apache.webbeans.component.BeanAttributesImpl;
import org.apache.webbeans.component.ManagedBean;
import org.apache.webbeans.component.WebBeansType;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.portable.InjectionTargetImpl;
import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.WebBeansUtil;
@@ -71,27 +61,9 @@ 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))
- {
- injectionPoints.add(injectionPoint);
- }
- InjectionTarget<T> injectionTarget
- = new InjectionTargetImpl<T>(bean.getAnnotatedType(), injectionPoints, webBeansContext, getPostConstructMethods(), getPreDestroyMethods());
- bean.setProducer(injectionTarget);
webBeansContext.getWebBeansUtil().checkManagedBeanCondition(annotatedType);
WebBeansUtil.checkGenericType(annotatedType.getJavaClass(), beanAttributes.getScope());
webBeansContext.getDeploymentValidationService().validateProxyable(bean);
return bean;
}
-
- protected List<AnnotatedMethod<?>> getPostConstructMethods()
- {
- return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PostConstruct.class, true);
- }
-
- protected List<AnnotatedMethod<?>> getPreDestroyMethods()
- {
- return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PreDestroy.class, false);
- }
}
Copied: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java (from r1451507, openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java?p2=openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java&p1=openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java&r1=1451507&r2=1465291&rev=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodProducerBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java Sat Apr 6 19:04:24 2013
@@ -29,42 +29,47 @@ import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedParameter;
+import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.Producer;
import javax.inject.Inject;
import javax.inject.Named;
-import org.apache.webbeans.component.OwbBean;
-import org.apache.webbeans.component.ProducerMethodBean;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.ProducerFactory;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.portable.ProducerMethodProducer;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.Asserts;
-public class ProducerMethodProducerBuilder<T, P>
+public class MethodProducerFactory<T, P> implements ProducerFactory<T>
{
- private ProducerMethodBean<T> bean;
- private AnnotatedMethod<P> producerMethod;
- private AnnotatedMethod<P> disposalMethod;
- private Set<InjectionPoint> injectionPoints;
+ private AnnotatedMethod<? super P> producerMethod;
+ private AnnotatedMethod<? super P> disposalMethod;
+ private Bean<P> parent;
+ private WebBeansContext webBeansContext;
- public ProducerMethodProducerBuilder(ProducerMethodBean<T> producerMethodBean)
+ public MethodProducerFactory(AnnotatedMethod<? super P> producerMethod, Bean<P> parent, WebBeansContext webBeansContext)
{
- Asserts.assertNotNull(producerMethodBean);
- this.bean = producerMethodBean;
+ Asserts.assertNotNull(producerMethod, "producer method may not be null");
+ Asserts.assertNotNull(webBeansContext, "WebBeansContext may not be null");
+ this.producerMethod = producerMethod;
+ this.parent = parent;
+ this.webBeansContext = webBeansContext;
+ defineDisposalMethod();
}
- public ProducerMethodProducer<T, P> build(AnnotatedMethod<P> method)
+ @Override
+ public Producer<T> createProducer(Bean<T> bean)
{
- producerMethod = method;
- defineDisposalMethod();
- defineInjectionPoints();
- return new ProducerMethodProducer<T, P>((OwbBean<P>) bean.getParent(), producerMethod, disposalMethod, injectionPoints);
+ Producer<T> producer = new ProducerMethodProducer<T, P>(parent, producerMethod, disposalMethod, createInjectionPoints(bean), webBeansContext);
+ return webBeansContext.getWebBeansUtil().fireProcessProducerEvent(producer, producerMethod);
}
private void defineDisposalMethod()
{
- Set<Annotation> producerQualifiers = bean.getWebBeansContext().getAnnotationManager().getQualifierAnnotations(producerMethod.getAnnotations());
+ Set<Annotation> producerQualifiers = webBeansContext.getAnnotationManager().getQualifierAnnotations(producerMethod.getAnnotations());
if (producerQualifiers.size() == 1 && producerQualifiers.iterator().next().annotationType().equals(Default.class))
{
producerQualifiers = Collections.emptySet();
@@ -77,7 +82,7 @@ public class ProducerMethodProducerBuild
producerQualifiersWithoutNamed.add(qualifier);
}
}
- Set<AnnotatedMethod<? super P>> annotatedMethods = producerMethod.getDeclaringType().getMethods();
+ Set<AnnotatedMethod<? super P>> annotatedMethods = (Set<AnnotatedMethod<? super P>>)(Set<?>)producerMethod.getDeclaringType().getMethods();
for (AnnotatedMethod<? super P> annotatedMethod : annotatedMethods)
{
if (annotatedMethod.getDeclaringType().equals(producerMethod.getDeclaringType()))
@@ -87,7 +92,7 @@ public class ProducerMethodProducerBuild
if (annotatedParameter.isAnnotationPresent(Disposes.class))
{
Set<Annotation> producerQualifiersToCompare = producerQualifiers;
- Set<Annotation> disposalQualifiers = bean.getWebBeansContext().getAnnotationManager().getQualifierAnnotations(annotatedParameter.getAnnotations());
+ Set<Annotation> disposalQualifiers = webBeansContext.getAnnotationManager().getQualifierAnnotations(annotatedParameter.getAnnotations());
if (disposalQualifiers.size() == 1 && disposalQualifiers.iterator().next().annotationType().equals(Default.class))
{
disposalQualifiers = Collections.emptySet();
@@ -168,12 +173,13 @@ public class ProducerMethodProducerBuild
}
}
- private void defineInjectionPoints()
+ protected Set<InjectionPoint> createInjectionPoints(Bean<T> bean)
{
- injectionPoints = new HashSet<InjectionPoint>(bean.getWebBeansContext().getInjectionPointFactory().buildInjectionPoints(bean, producerMethod));
+ Set<InjectionPoint> injectionPoints = new HashSet<InjectionPoint>(webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, producerMethod));
if (disposalMethod != null)
{
- injectionPoints.addAll(bean.getWebBeansContext().getInjectionPointFactory().buildInjectionPoints(bean, disposalMethod));
+ injectionPoints.addAll(webBeansContext.getInjectionPointFactory().buildInjectionPoints(bean, disposalMethod));
}
+ return injectionPoints;
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java Sat Apr 6 19:04:24 2013
@@ -34,6 +34,7 @@ import javax.enterprise.inject.spi.Annot
import javax.enterprise.inject.spi.ObserverMethod;
import javax.inject.Inject;
+import org.apache.webbeans.component.AbstractOwbBean;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
@@ -68,7 +69,7 @@ public class ObserverMethodsBuilder<T, I
/**
* {@inheritDoc}
*/
- public Set<ObserverMethod<?>> defineObserverMethods(InjectionTargetBean<T> bean)
+ public Set<ObserverMethod<?>> defineObserverMethods(AbstractOwbBean<T> bean)
{
Set<ObserverMethod<?>> definedObservers = new HashSet<ObserverMethod<?>>();
Set<AnnotatedMethod<? super T>> annotatedMethods = annotatedType.getMethods();
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeanBuilder.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeanBuilder.java Sat Apr 6 19:04:24 2013
@@ -47,9 +47,9 @@ public class ProducerFieldBeanBuilder<T,
}
@Override
- protected P createBean(InjectionTargetBean<?> owner, Class<T> beanClass)
+ protected <X> P createBean(InjectionTargetBean<X> owner, Class<T> beanClass)
{
- return (P) new ProducerFieldBean<T>(owner, beanAttributes, beanClass);
+ return (P) new ProducerFieldBean<T>(owner, beanAttributes, beanClass, new FieldProducerFactory(annotatedMember, owner, owner.getWebBeansContext()));
}
public P getBean()
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerFieldBeansBuilder.java Sat Apr 6 19:04:24 2013
@@ -35,11 +35,8 @@ import org.apache.webbeans.component.Bea
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.ProducerFieldBean;
import org.apache.webbeans.component.ResourceBean;
-import org.apache.webbeans.component.ResourceProvider;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansConfigurationException;
-import org.apache.webbeans.portable.ProducerFieldProducer;
-import org.apache.webbeans.portable.ProviderBasedProxyProducer;
import org.apache.webbeans.spi.api.ResourceReference;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.Asserts;
@@ -121,12 +118,7 @@ public class ProducerFieldBeansBuilder<T
ResourceBeanBuilder<T, Annotation> resourceBeanCreator
= new ResourceBeanBuilder<T, Annotation>(bean, resourceRef, annotatedField, beanAttributes);
ResourceBean<T, Annotation> resourceBean = resourceBeanCreator.getBean();
- ResourceProvider<T> resourceProvider = new ResourceProvider<T>(resourceBean.getReference(), webBeansContext);
- resourceBean.setProducer(new ProviderBasedProxyProducer<T>(webBeansContext, resourceBean.getReturnType(), resourceProvider));
-
-
resourceBean.setProducerField(field);
-
producerBeans.add(resourceBean);
}
}
@@ -137,7 +129,6 @@ public class ProducerFieldBeansBuilder<T
= new ProducerFieldBeanBuilder<T, ProducerFieldBean<T>>(bean, annotatedField, beanAttributes);
ProducerFieldBean<T> producerFieldBean = producerFieldBeanCreator.getBean();
webBeansContext.getDeploymentValidationService().validateProxyable(producerFieldBean);
- producerFieldBean.setProducer(new ProducerFieldProducer(bean, annotatedField, producerFieldBean.getInjectionPoints()));
producerFieldBean.setProducerField(field);
webBeansContext.getWebBeansUtil().setBeanEnableFlagForProducerBean(bean, producerFieldBean, anns);
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=1465291&r1=1465290&r2=1465291&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 Sat Apr 6 19:04:24 2013
@@ -104,9 +104,11 @@ public class ProducerMethodBeanBuilder<T
}
@Override
- protected ProducerMethodBean<T> createBean(InjectionTargetBean<?> parent, Class<T> beanClass)
+ protected <P> ProducerMethodBean<T> createBean(InjectionTargetBean<P> parent, Class<T> beanClass)
{
- ProducerMethodBean<T> producerMethodBean = new ProducerMethodBean<T>(parent, beanAttributes, beanClass);
+ AnnotatedMethod<P> annotatedMethod = (AnnotatedMethod<P>) annotatedMember;
+ ProducerMethodBean<T> producerMethodBean
+ = new ProducerMethodBean<T>(parent, beanAttributes, beanClass, new MethodProducerFactory<T, P>(annotatedMethod, parent, parent.getWebBeansContext()));
producerMethodBean.setSpecializedBean(specialized);
return producerMethodBean;
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java Sat Apr 6 19:04:24 2013
@@ -98,8 +98,7 @@ public class ProducerMethodBeansBuilder<
{
producerMethodBeanCreator.configureProducerSpecialization(producerMethodBean, (AnnotatedMethod<T>) annotatedMethod);
}
- ProducerMethodProducerBuilder producerBuilder = new ProducerMethodProducerBuilder(producerMethodBean);
- producerMethodBean.setProducer(producerBuilder.build(annotatedMethod));
+ MethodProducerFactory<T, ?> producerFactory = new MethodProducerFactory(annotatedMethod, bean, webBeansContext);
producerMethodBean.setCreatorMethod(annotatedMethod.getJavaMember());
webBeansContext.getWebBeansUtil().setBeanEnableFlagForProducerBean(bean,
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ResourceBeanBuilder.java Sat Apr 6 19:04:24 2013
@@ -39,7 +39,7 @@ public class ResourceBeanBuilder<T, R ex
}
@Override
- protected ResourceBean<T, R> createBean(InjectionTargetBean<?> owner, Class<T> beanClass)
+ protected <X> ResourceBean<T, R> createBean(InjectionTargetBean<X> owner, Class<T> beanClass)
{
return new ResourceBean<T, R>(owner, resourceRef, beanAttributes, beanClass);
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java Sat Apr 6 19:04:24 2013
@@ -25,6 +25,7 @@ import javax.enterprise.context.spi.Crea
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.PassivationCapable;
+import javax.enterprise.inject.spi.Producer;
import org.apache.webbeans.component.AbstractOwbBean;
import org.apache.webbeans.component.BeanAttributesImpl;
@@ -48,6 +49,31 @@ public class ThirdpartyBeanImpl<T> exten
}
@Override
+ public Producer<T> getProducer()
+ {
+ return new Producer<T>()
+ {
+ @Override
+ public T produce(CreationalContext<T> creationalContext)
+ {
+ return bean.create(creationalContext);
+ }
+
+ @Override
+ public void dispose(T instance)
+ {
+ bean.destroy(instance, null);
+ }
+
+ @Override
+ public Set<InjectionPoint> getInjectionPoints()
+ {
+ return bean.getInjectionPoints();
+ }
+ };
+ }
+
+ @Override
public Set<InjectionPoint> getInjectionPoints()
{
return bean.getInjectionPoints();
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1465291&r1=1465290&r2=1465291&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Sat Apr 6 19:04:24 2013
@@ -43,10 +43,8 @@ import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.Decorator;
import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.InjectionTarget;
import javax.enterprise.inject.spi.ObserverMethod;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
-import javax.enterprise.inject.spi.Producer;
import org.apache.webbeans.annotation.AnnotationManager;
import org.apache.webbeans.component.BeanAttributesImpl;
@@ -82,7 +80,6 @@ import org.apache.webbeans.portable.Anno
import org.apache.webbeans.portable.events.ProcessAnnotatedTypeImpl;
import org.apache.webbeans.portable.events.ProcessBeanImpl;
import org.apache.webbeans.portable.events.ProcessInjectionTargetImpl;
-import org.apache.webbeans.portable.events.ProcessProducerImpl;
import org.apache.webbeans.portable.events.discovery.AfterBeanDiscoveryImpl;
import org.apache.webbeans.portable.events.discovery.AfterDeploymentValidationImpl;
import org.apache.webbeans.portable.events.discovery.BeforeBeanDiscoveryImpl;
@@ -878,12 +875,6 @@ public class BeansDeployer
bean = managedBeanCreator.getBean();
- if(processInjectionTargetEvent == null)
- {
- processInjectionTarget = webBeansContext.getWebBeansUtil().createProcessInjectionTargetEvent(bean);
- processInjectionTargetEvent = processInjectionTarget;
- }
-
if (webBeansContext.getDecoratorsManager().containsCustomDecoratorClass(annotatedType.getJavaClass()) ||
webBeansContext.getInterceptorsManager().containsCustomInterceptorClass(annotatedType.getJavaClass()))
{
@@ -903,9 +894,6 @@ public class BeansDeployer
Set<ProducerMethodBean<?>> producerMethods = new ProducerMethodBeansBuilder(bean.getWebBeansContext(), bean.getAnnotatedType()).defineProducerMethods(bean);
Set<ProducerFieldBean<?>> producerFields = new ProducerFieldBeansBuilder(bean.getWebBeansContext(), bean.getAnnotatedType()).defineProducerFields(bean);
- //Put final InjectionTarget instance
- bean.setProducer(processInjectionTargetEvent.getInjectionTarget());
-
ManagedBean<T> managedBean = (ManagedBean<T>)bean;
Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
@@ -913,13 +901,10 @@ public class BeansDeployer
for(ProducerMethodBean<?> producerMethod : producerMethods)
{
AnnotatedMethod<?> method = webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(producerMethod.getCreatorMethod(), annotatedType);
- ProcessProducerImpl<?, ?> producerEvent = webBeansContext.getWebBeansUtil().fireProcessProducerEventForMethod(producerMethod,
- method);
webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessProducer event observers for "
+ "ProducerMethods. Look at logs for further details");
annotatedMethods.put(producerMethod, method);
- producerMethod.setProducer((Producer) producerEvent.getProducer());
}
Map<ProducerFieldBean<?>,AnnotatedField<?>> annotatedFields =
@@ -927,13 +912,10 @@ public class BeansDeployer
for(ProducerFieldBean<?> producerField : producerFields)
{
- AnnotatedField<?> field = webBeansContext.getAnnotatedElementFactory().newAnnotatedField(producerField.getCreatorField(), annotatedType);
- ProcessProducerImpl<?, ?> producerEvent = webBeansContext.getWebBeansUtil().fireProcessProducerEventForField(producerField, field);
webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessProducer event observers for"
+ " ProducerFields. Look at logs for further details");
- annotatedFields.put(producerField, field);
- producerField.setProducer((Producer) producerEvent.getProducer());
+ annotatedFields.put(producerField, null);
}
Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =
@@ -985,21 +967,6 @@ public class BeansDeployer
}
}
}
-
- if(processInjectionTarget != null)
- {
- if(processInjectionTargetEvent != null)
- {
- final InjectionTarget originalInjectionTarget = bean.getInjectionTarget();
- final InjectionTarget updatedInjectionTarget = webBeansContext.getWebBeansUtil()
- .fireProcessInjectionTargetEvent(bean).getInjectionTarget();
- if (updatedInjectionTarget != originalInjectionTarget && bean != null)
- {
- bean.setProducer(updatedInjectionTarget);
- }
- }
- }
-
return true;
}
else