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/10 13:05:26 UTC
svn commit: r1431307 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/component/
main/java/org/apache/webbeans/component/creation/
test/java/org/apache/webbeans/test/
Author: struberg
Date: Thu Jan 10 12:05:25 2013
New Revision: 1431307
URL: http://svn.apache.org/viewvc?rev=1431307&view=rev
Log:
OWB-753 remove lazy init logic
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java?rev=1431307&r1=1431306&r2=1431307&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java Thu Jan 10 12:05:25 2013
@@ -19,16 +19,12 @@
package org.apache.webbeans.component;
import java.io.Serializable;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.Any;
-import javax.enterprise.inject.Default;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Decorator;
-import org.apache.webbeans.component.creation.ManagedBeanBuilder;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.decorator.AbstractDecoratorMethodHandler;
@@ -48,16 +44,6 @@ public class ManagedBean<T> extends Abst
protected boolean isAbstractDecorator;
- /**
- * Whether the bean is fully initialized or not yet.
- * Only beans scanned from the classpath can be lazily initialized,
- * and only if they do _NOT_ contain any javax.inject or javax.enterprise
- * annotation! In other words: we can skip eager initialisation for
- * beans which only could picked up as auto-@Dependent beans which
- * do not register/ any other beans (e.g. via @Produces)
- */
- private volatile boolean fullInit = true;
-
public ManagedBean(WebBeansContext webBeansContext, Class<T> returnType, AnnotatedType<T> annotatedType)
{
@@ -85,12 +71,6 @@ public class ManagedBean<T> extends Abst
@Override
protected T createComponentInstance(CreationalContext<T> creationalContext)
{
- if (!fullInit)
- {
- lazyInit();
- }
-
-
Constructor<T> con = getConstructor();
InjectableConstructor<T> ic = new InjectableConstructor<T>(con, new InjectionTargetImpl<T>(getInjectionPoints()), (CreationalContextImpl<T>) creationalContext);
@@ -105,36 +85,6 @@ public class ManagedBean<T> extends Abst
return instance;
}
- private synchronized void lazyInit()
- {
- if (!fullInit)
- {
- fullInit = true;
- ManagedBeanBuilder.lazyInitializeManagedBean(this);
- }
- }
-
- public boolean isFullInit()
- {
- return fullInit;
- }
-
- public void setFullInit(boolean fullInit)
- {
- this.fullInit = fullInit;
- }
-
- @Override
- public void addQualifier(Annotation qualifier)
- {
- if (!(qualifier instanceof Default || qualifier instanceof Any))
- {
- // if a bean defines other qualifiers than Default or Any, we need to fully initialize it
- fullInit = true;
- }
- super.addQualifier(qualifier);
- }
-
/**
* Get constructor.
*
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java?rev=1431307&r1=1431306&r2=1431307&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java Thu Jan 10 12:05:25 2013
@@ -256,10 +256,6 @@ public abstract class AbstractBeanBuilde
return null;
}
- protected void defineLazyInit()
- {
- // hook for subclasses
- }
/**
* Returns true if any binding exist
@@ -364,13 +360,6 @@ public abstract class AbstractBeanBuilde
if (stereos.size() == 0)
{
scope = Dependent.class;
-
- if (allowLazyInit && isPurePojoBean(webBeansContext, getBeanType()))
- {
- // take the bean as Dependent but we could lazily initialize it
- // because the bean doesn't contains any CDI feature
- defineLazyInit();
- }
}
else
{
@@ -415,13 +404,6 @@ public abstract class AbstractBeanBuilde
else
{
scope = Dependent.class;
-
- if (allowLazyInit && isPurePojoBean(webBeansContext, getBeanType()))
- {
- // take the bean as Dependent but we could lazily initialize it
- // because the bean doesn't contains any CDI feature
- defineLazyInit();
- }
}
}
}
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=1431307&r1=1431306&r2=1431307&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 Thu Jan 10 12:05:25 2013
@@ -71,8 +71,6 @@ public class ManagedBeanBuilder<T> exten
{
private final WebBeansContext webBeansContext;
- private boolean fullInit = true;
-
/**
* Creates a new creator.
*/
@@ -114,36 +112,9 @@ public class ManagedBeanBuilder<T> exten
public ManagedBean<T> getBean()
{
ManagedBean<T> bean = (ManagedBean<T>)super.getBean();
- bean.setFullInit(fullInit);
return bean;
}
- /**
- * @deprecated makes no sense as only Beans without any annotations are lazy inited. And they don'T have anything to handle...
- */
- public static <T> void lazyInitializeManagedBean(ManagedBean<T> bean)
- {
- ManagedBeanBuilder<T> managedBeanCreator = new ManagedBeanBuilder<T>(bean, bean.getScope());
-
- managedBeanCreator.lazyInitializeManagedBean(bean.getBeanClass(), bean);
- }
-
- /**
- * @deprecated makes no sense as only Beans without any annotations are lazy inited. And they don'T have anything to handle...
- */
- public void lazyInitializeManagedBean(Class<?> clazz, ManagedBean<?> managedBean)
- {
- defineConstructor();
- defineProducerMethods();
- defineProducerFields();
- defineInjectedFields();
- defineInjectedMethods();
- defineObserverMethods();
- WebBeansDecoratorConfig.configureDecorators(managedBean);
- webBeansContext.getWebBeansInterceptorConfig().defineBeanInterceptorStack(managedBean);
-
- defineDisposalMethods(); //Define disposal method after adding producers
- }
public ManagedBean<T> defineManagedBean(ProcessInjectionTarget<T> processInjectionTargetEvent)
{
@@ -170,117 +141,97 @@ public class ManagedBeanBuilder<T> exten
defineName();
defineQualifiers();
- if (managedBean.isFullInit())
- {
- defineConstructor();
- Set<ProducerMethodBean<?>> producerMethods = defineProducerMethods();
- Set<ProducerFieldBean<?>> producerFields = defineProducerFields();
- defineInjectedFields();
- defineInjectedMethods();
-
- Set<ObserverMethod<?>> observerMethods = new HashSet<ObserverMethod<?>>();
- if(managedBean.isEnabled())
- {
- observerMethods = defineObserverMethods();
- }
-
- //Put final InjectionTarget instance
- managedBean.setProducer(processInjectionTargetEvent.getInjectionTarget());
-
- Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
- new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
+ defineConstructor();
+ Set<ProducerMethodBean<?>> producerMethods = defineProducerMethods();
+ Set<ProducerFieldBean<?>> producerFields = defineProducerFields();
+ defineInjectedFields();
+ defineInjectedMethods();
- 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");
+ Set<ObserverMethod<?>> observerMethods = new HashSet<ObserverMethod<?>>();
+ if(managedBean.isEnabled())
+ {
+ observerMethods = defineObserverMethods();
+ }
- annotatedMethods.put(producerMethod, method);
- producerMethod.setProducer((Producer) producerEvent.getProducer());
- }
+ //Put final InjectionTarget instance
+ managedBean.setProducer(processInjectionTargetEvent.getInjectionTarget());
- Map<ProducerFieldBean<?>,AnnotatedField<?>> annotatedFields =
- new HashMap<ProducerFieldBean<?>, AnnotatedField<?>>();
+ Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
+ new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
- 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");
+ 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");
- annotatedFields.put(producerField, field);
- producerField.setProducer((Producer) producerEvent.getProducer());
- }
+ annotatedMethods.put(producerMethod, method);
+ producerMethod.setProducer((Producer) producerEvent.getProducer());
+ }
- Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =
- new HashMap<ObserverMethod<?>, AnnotatedMethod<?>>();
+ Map<ProducerFieldBean<?>,AnnotatedField<?>> annotatedFields =
+ new HashMap<ProducerFieldBean<?>, AnnotatedField<?>>();
- for(ObserverMethod<?> observerMethod : observerMethods)
- {
- ObserverMethodImpl<?> impl = (ObserverMethodImpl<?>)observerMethod;
- AnnotatedMethod<?> method = webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(impl.getObserverMethod(), annotatedType);
+ 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");
- observerMethodsMap.put(observerMethod, method);
- }
+ annotatedFields.put(producerField, field);
+ producerField.setProducer((Producer) producerEvent.getProducer());
+ }
- BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
+ Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =
+ new HashMap<ObserverMethod<?>, AnnotatedMethod<?>>();
- //Fires ProcessManagedBean
- ProcessBeanImpl<T> processBeanEvent = new GProcessManagedBean(managedBean, annotatedType);
- beanManager.fireEvent(processBeanEvent);
- webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessManagedBean event observers for " +
- "managed beans. Look at logs for further details");
+ for(ObserverMethod<?> observerMethod : observerMethods)
+ {
+ ObserverMethodImpl<?> impl = (ObserverMethodImpl<?>)observerMethod;
+ AnnotatedMethod<?> method = webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(impl.getObserverMethod(), annotatedType);
- //Fires ProcessProducerMethod
- webBeansContext.getWebBeansUtil().fireProcessProducerMethodBeanEvent(annotatedMethods, annotatedType);
- webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessProducerMethod event observers for " +
- "producer method beans. Look at logs for further details");
+ observerMethodsMap.put(observerMethod, method);
+ }
- //Fires ProcessProducerField
- webBeansContext.getWebBeansUtil().fireProcessProducerFieldBeanEvent(annotatedFields);
- webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessProducerField event observers for " +
- "producer field beans. Look at logs for further details");
+ BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
- //Fire ObservableMethods
- webBeansContext.getWebBeansUtil().fireProcessObservableMethodBeanEvent(observerMethodsMap);
- webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessObserverMethod event observers for " +
- "observer methods. Look at logs for further details");
+ //Fires ProcessManagedBean
+ ProcessBeanImpl<T> processBeanEvent = new GProcessManagedBean(managedBean, annotatedType);
+ beanManager.fireEvent(processBeanEvent);
+ webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessManagedBean event observers for " +
+ "managed beans. Look at logs for further details");
+
+ //Fires ProcessProducerMethod
+ webBeansContext.getWebBeansUtil().fireProcessProducerMethodBeanEvent(annotatedMethods, annotatedType);
+ webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessProducerMethod event observers for " +
+ "producer method beans. Look at logs for further details");
+
+ //Fires ProcessProducerField
+ webBeansContext.getWebBeansUtil().fireProcessProducerFieldBeanEvent(annotatedFields);
+ webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessProducerField event observers for " +
+ "producer field beans. Look at logs for further details");
+
+ //Fire ObservableMethods
+ webBeansContext.getWebBeansUtil().fireProcessObservableMethodBeanEvent(observerMethodsMap);
+ webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessObserverMethod event observers for " +
+ "observer methods. Look at logs for further details");
- if(!webBeansContext.getWebBeansUtil().isAnnotatedTypeDecoratorOrInterceptor(annotatedType))
+ if(!webBeansContext.getWebBeansUtil().isAnnotatedTypeDecoratorOrInterceptor(annotatedType))
+ {
+ beanManager.addBean(managedBean);
+ for (ProducerMethodBean<?> producerMethod : producerMethods)
{
- beanManager.addBean(managedBean);
- for (ProducerMethodBean<?> producerMethod : producerMethods)
- {
- // add them one after the other to enable serialization handling et al
- beanManager.addBean(producerMethod);
- }
- defineDisposalMethods();//Define disposal method after adding producers
- for (ProducerFieldBean<?> producerField : producerFields)
- {
- // add them one after the other to enable serialization handling et al
- beanManager.addBean(producerField);
- }
+ // add them one after the other to enable serialization handling et al
+ beanManager.addBean(producerMethod);
}
- }
- else
- {
- // we still need to fire a ProcessManagedBean event, even for lazily initiated beans
- // (which most probably are no beans at all...)
-
- BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
-
- //Fires ProcessManagedBean
- ProcessBeanImpl<T> processBeanEvent = new GProcessManagedBean(managedBean, annotatedType);
- beanManager.fireEvent(processBeanEvent);
- webBeansContext.getWebBeansUtil().inspectErrorStack("There are errors that are added by ProcessManagedBean event observers for " +
- "managed beans. Look at logs for further details");
- if(!webBeansContext.getWebBeansUtil().isAnnotatedTypeDecoratorOrInterceptor(annotatedType))
+ defineDisposalMethods();//Define disposal method after adding producers
+ for (ProducerFieldBean<?> producerField : producerFields)
{
- beanManager.addBean(managedBean);
+ // add them one after the other to enable serialization handling et al
+ beanManager.addBean(producerField);
}
}
@@ -433,12 +384,6 @@ public class ManagedBeanBuilder<T> exten
}
}
- @Override
- protected void defineLazyInit()
- {
- fullInit = false;
- }
-
private ManagedBean<T> defineAbstractDecorator(ProcessInjectionTarget<T> processInjectionTargetEvent)
{
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java?rev=1431307&r1=1431306&r2=1431307&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java Thu Jan 10 12:05:25 2013
@@ -530,13 +530,9 @@ public abstract class TestContext implem
managedBeanCreator.defineSerializable();
managedBeanCreator.defineStereoTypes();
- Annotation[] clazzAnns = clazz.getDeclaredAnnotations();
-
defineApiTypes(component, clazz);
managedBeanCreator.defineScopeType("Simple WebBean Component implementation class : " + clazz.getName()
+ " stereotypes must declare same @Scope annotations");
- // we fully initialize the bean in this case.
- component.setFullInit(true);
ManagedBean<T> bean = managedBeanCreator.getBean();
WebBeansUtil.checkGenericType(bean.getReturnType(), bean.getScope());