Author: arne
Date: Fri Jan 4 00:11:22 2013
New Revision: 1428680
URL: http://svn.apache.org/viewvc?rev=1428680&view=rev
Log:
OWB-747: Moved methods from WebBeansUtil to ManagedBeanCreatorImpl
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/ManagedBeanCreatorImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.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=1428680&r1=1428679&r2=1428680&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
Fri Jan 4 00:11:22 2013
@@ -110,7 +110,7 @@ public class ManagedBean<T> extends Abst
ManagedBeanCreatorImpl<T> managedBeanCreator = new
ManagedBeanCreatorImpl<T>(this);
managedBeanCreator.setAnnotatedType(getAnnotatedType());
-
getWebBeansContext().getWebBeansUtil().lazyInitializeManagedBean(getBeanClass(),
this, managedBeanCreator);
+ managedBeanCreator.lazyInitializeManagedBean(getBeanClass(), this);
}
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java?rev=1428680&r1=1428679&r2=1428680&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java
Fri Jan 4 00:11:22 2013
@@ -18,12 +18,36 @@
*/
package org.apache.webbeans.component.creation;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedConstructor;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.ProcessInjectionTarget;
+import javax.enterprise.inject.spi.Producer;
import org.apache.webbeans.component.ManagedBean;
+import org.apache.webbeans.component.ProducerFieldBean;
+import org.apache.webbeans.component.ProducerMethodBean;
+import org.apache.webbeans.config.OWBLogConst;
import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.decorator.DecoratorUtil;
+import org.apache.webbeans.decorator.WebBeansDecoratorConfig;
+import org.apache.webbeans.event.ObserverMethodImpl;
+import org.apache.webbeans.exception.inject.DeploymentException;
+import org.apache.webbeans.logger.WebBeansLoggerFacade;
+import org.apache.webbeans.portable.events.ProcessBeanImpl;
+import org.apache.webbeans.portable.events.ProcessProducerImpl;
+import org.apache.webbeans.portable.events.generics.GProcessManagedBean;
import org.apache.webbeans.util.WebBeansAnnotatedTypeUtil;
import org.apache.webbeans.util.WebBeansUtil;
@@ -101,4 +125,243 @@ public class ManagedBeanCreatorImpl<T> e
return (ManagedBean<T>)super.getBean();
}
+ public void lazyInitializeManagedBean(Class<?> clazz, ManagedBean<?>
managedBean)
+ {
+ defineConstructor();
+ defineProducerMethods();
+ defineProducerFields();
+ defineInjectedFields();
+ defineInjectedMethods();
+ defineObserverMethods();
+ webBeansContext.getDefinitionUtil().defineDecoratorStack(managedBean);
+
webBeansContext.getDefinitionUtil().defineBeanInterceptorStack(managedBean);
+
+ defineDisposalMethods(); //Define disposal method after adding
producers
+ }
+
+ public ManagedBean<T> defineManagedBean(ProcessInjectionTarget<T>
processInjectionTargetEvent, boolean allowLazyInit)
+ {
+ BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
+
+ //Annotated type
+ AnnotatedType<T> annotatedType =
processInjectionTargetEvent.getAnnotatedType();
+ ManagedBean<T> managedBean = getBean();
+
+ Class<T> clazz = annotatedType.getJavaClass();
+
+ defineApiType();
+
+ //Define meta-data
+ defineStereoTypes();
+ //Scope type
+
defineScopeType(WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_MB_IMPL) +
clazz.getName() +
+
WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_SAME_SCOPE),
allowLazyInit);
+
+ defineSerializable();
+
+ //Check for Enabled via Alternative
+
webBeansContext.getWebBeansUtil().setInjectionTargetBeanEnableFlag(managedBean);
+
+ checkCreateConditions();
+
defineName(WebBeansUtil.getManagedBeanDefaultName(clazz.getSimpleName()));
+ defineQualifier();
+
+ 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
+ manager.putProducer(managedBean,
processInjectionTargetEvent.getInjectionTarget());
+
+ Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
+ new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
+
+ 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);
+ manager.putProducer(producerMethod, (Producer)
producerEvent.getProducer());
+ }
+
+ Map<ProducerFieldBean<?>,AnnotatedField<?>> annotatedFields =
+ new HashMap<ProducerFieldBean<?>, AnnotatedField<?>>();
+
+ 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);
+ manager.putProducer(producerField, (Producer)
producerEvent.getProducer());
+ }
+
+ Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =
+ new HashMap<ObserverMethod<?>, AnnotatedMethod<?>>();
+
+ for(ObserverMethod<?> observerMethod : observerMethods)
+ {
+ ObserverMethodImpl<?> impl =
(ObserverMethodImpl<?>)observerMethod;
+ AnnotatedMethod<?> method =
webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(impl.getObserverMethod(),
annotatedType);
+
+ observerMethodsMap.put(observerMethod, method);
+ }
+
+ 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");
+
+ //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))
+ {
+ 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);
+ }
+ }
+ }
+ 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))
+ {
+ beanManager.addBean(managedBean);
+ }
+ }
+
+ return managedBean;
+ }
+
+ public void defineInterceptor(ProcessInjectionTarget<T>
injectionTargetEvent)
+ {
+ Class<?> clazz =
injectionTargetEvent.getAnnotatedType().getJavaClass();
+ AnnotatedType annotatedType = injectionTargetEvent.getAnnotatedType();
+
+ if
(webBeansContext.getInterceptorsManager().isInterceptorEnabled(clazz))
+ {
+ ManagedBean<T> component;
+
+
webBeansContext.getInterceptorUtil().checkInterceptorConditions(annotatedType);
+ component = defineManagedBean(injectionTargetEvent, false);
+
+ if (component != null)
+ {
+ Annotation[] anns = annotatedType.getAnnotations().toArray(new
Annotation[annotatedType.getAnnotations().size()]);
+
webBeansContext.getWebBeansInterceptorConfig().configureInterceptorClass(component,
+
webBeansContext.getAnnotationManager().getInterceptorBindingMetaAnnotations(anns));
+ }
+ else
+ {
+ // TODO could probably be a bit more descriptive
+ throw new DeploymentException("Cannot create Interceptor for
class" + injectionTargetEvent.getAnnotatedType());
+ }
+ }
+
+ }
+
+ /**
+ * Define decorator bean.
+ * @param <T> type info
+ * @param creator bean creator
+ * @param processInjectionTargetEvent
+ */
+ public void defineDecorator(ProcessInjectionTarget<T>
processInjectionTargetEvent)
+ {
+ Class<T> clazz =
processInjectionTargetEvent.getAnnotatedType().getJavaClass();
+ if (webBeansContext.getDecoratorsManager().isDecoratorEnabled(clazz))
+ {
+ ManagedBean<T> delegate = null;
+
+ DecoratorUtil.checkDecoratorConditions(clazz);
+
+ if(Modifier.isAbstract(clazz.getModifiers()))
+ {
+ delegate =
defineAbstractDecorator(processInjectionTargetEvent);
+ }
+ else
+ {
+ delegate = defineManagedBean(processInjectionTargetEvent,
false);
+ }
+
+ if (delegate != null)
+ {
+
delegate.setAnnotatedType(processInjectionTargetEvent.getAnnotatedType());
+ WebBeansDecoratorConfig.configureDecoratorClass(delegate);
+ }
+ else
+ {
+ // TODO could probably be a bit more descriptive
+ throw new DeploymentException("Cannot create Decorator for
class" + processInjectionTargetEvent.getAnnotatedType());
+ }
+ }
+ }
+
+ private ManagedBean<T> defineAbstractDecorator(ProcessInjectionTarget<T>
processInjectionTargetEvent)
+ {
+
+ ManagedBean<T> bean = defineManagedBean(processInjectionTargetEvent,
false);
+ if (bean == null)
+ {
+ // TODO could probably be a bit more descriptive
+ throw new DeploymentException("Cannot create ManagedBean for
class" + processInjectionTargetEvent.getAnnotatedType());
+ }
+
+ //X TODO move proxy instance creation into JavassistProxyFactory!
+ Class clazz =
webBeansContext.getProxyFactory().createAbstractDecoratorProxyClass(bean);
+
+
bean.setConstructor(webBeansContext.getWebBeansUtil().defineConstructor(clazz));
+ bean.setIsAbstractDecorator(true);
+ return bean;
+ }
}
\ No newline at end of file
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=1428680&r1=1428679&r2=1428680&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
Fri Jan 4 00:11:22 2013
@@ -867,8 +867,7 @@ public class BeansDeployer
}
else
{
-
webBeansContext.getWebBeansUtil().defineDecorator(managedBeanCreator,
-
processInjectionTargetEvent);
+
managedBeanCreator.defineDecorator(processInjectionTargetEvent);
}
}
//Interceptor
@@ -884,8 +883,7 @@ public class BeansDeployer
}
else
{
-
webBeansContext.getWebBeansUtil().defineInterceptor(managedBeanCreator,
-
processInjectionTargetEvent);
+
managedBeanCreator.defineInterceptor(processInjectionTargetEvent);
}
}
else
@@ -900,8 +898,7 @@ public class BeansDeployer
{
logger.log(Level.FINE, "Found Managed Bean with class name
: [{0}]", annotatedType.getJavaClass().getName());
}
-
webBeansContext.getWebBeansUtil().defineManagedBean(managedBeanCreator,
-
processInjectionTargetEvent, true);
+
managedBeanCreator.defineManagedBean(processInjectionTargetEvent, true);
}
if(processInjectionTarget != null)
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1428680&r1=1428679&r2=1428680&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Fri Jan 4 00:11:22 2013
@@ -32,7 +32,6 @@ import java.lang.reflect.TypeVariable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -103,13 +102,10 @@ import org.apache.webbeans.container.Bea
import org.apache.webbeans.container.ExternalScope;
import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.conversation.ConversationImpl;
-import org.apache.webbeans.decorator.DecoratorUtil;
import org.apache.webbeans.decorator.WebBeansDecoratorConfig;
-import org.apache.webbeans.event.ObserverMethodImpl;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.exception.helper.ViolationMessageBuilder;
import org.apache.webbeans.exception.inject.DefinitionException;
-import org.apache.webbeans.exception.inject.DeploymentException;
import
org.apache.webbeans.exception.inject.InconsistentSpecializationException;
import org.apache.webbeans.inject.AlternativesManager;
import org.apache.webbeans.intercept.InterceptorData;
@@ -119,8 +115,6 @@ import org.apache.webbeans.plugins.OpenW
import org.apache.webbeans.plugins.PluginLoader;
import org.apache.webbeans.portable.creation.InjectionTargetProducer;
import org.apache.webbeans.portable.creation.ProducerBeansProducer;
-import org.apache.webbeans.portable.events.ProcessBeanImpl;
-import org.apache.webbeans.portable.events.ProcessProducerImpl;
import org.apache.webbeans.portable.events.discovery.ErrorStack;
import org.apache.webbeans.portable.events.generics.GProcessAnnotatedType;
import org.apache.webbeans.portable.events.generics.GProcessBean;
@@ -1931,71 +1925,6 @@ public final class WebBeansUtil
return true;
}
- public <T> void defineInterceptor(ManagedBeanCreatorImpl<T>
managedBeanCreator, ProcessInjectionTarget<T> injectionTargetEvent)
- {
- Class<?> clazz =
injectionTargetEvent.getAnnotatedType().getJavaClass();
- AnnotatedType annotatedType = injectionTargetEvent.getAnnotatedType();
-
- if
(webBeansContext.getInterceptorsManager().isInterceptorEnabled(clazz))
- {
- ManagedBean<T> component;
-
-
webBeansContext.getInterceptorUtil().checkInterceptorConditions(annotatedType);
- component = defineManagedBean(managedBeanCreator,
injectionTargetEvent, false);
-
- if (component != null)
- {
- Annotation[] anns = annotatedType.getAnnotations().toArray(new
Annotation[annotatedType.getAnnotations().size()]);
-
webBeansContext.getWebBeansInterceptorConfig().configureInterceptorClass(component,
-
webBeansContext.getAnnotationManager().getInterceptorBindingMetaAnnotations(anns));
- }
- else
- {
- // TODO could probably be a bit more descriptive
- throw new DeploymentException("Cannot create Interceptor for
class" + injectionTargetEvent.getAnnotatedType());
- }
- }
-
- }
-
-
- /**
- * Define decorator bean.
- * @param <T> type info
- * @param creator bean creator
- * @param processInjectionTargetEvent
- */
- public <T> void defineDecorator(ManagedBeanCreatorImpl<T> creator,
ProcessInjectionTarget<T> processInjectionTargetEvent)
- {
- Class<T> clazz =
processInjectionTargetEvent.getAnnotatedType().getJavaClass();
- if (webBeansContext.getDecoratorsManager().isDecoratorEnabled(clazz))
- {
- ManagedBean<T> delegate = null;
-
- DecoratorUtil.checkDecoratorConditions(clazz);
-
- if(Modifier.isAbstract(clazz.getModifiers()))
- {
- delegate = defineAbstractDecorator(creator,
processInjectionTargetEvent);
- }
- else
- {
- delegate = defineManagedBean(creator,
processInjectionTargetEvent, false);
- }
-
- if (delegate != null)
- {
-
delegate.setAnnotatedType(processInjectionTargetEvent.getAnnotatedType());
- WebBeansDecoratorConfig.configureDecoratorClass(delegate);
- }
- else
- {
- // TODO could probably be a bit more descriptive
- throw new DeploymentException("Cannot create Decorator for
class" + processInjectionTargetEvent.getAnnotatedType());
- }
- }
- }
-
/**
* The result of this invocation get's cached
* @see #isScopeTypeNormalCache
@@ -2554,169 +2483,6 @@ public final class WebBeansUtil
return null;
}
- public <T> ManagedBean<T>
defineAbstractDecorator(ManagedBeanCreatorImpl<T> managedBeanCreator,
ProcessInjectionTarget<T> processInjectionTargetEvent)
- {
-
- ManagedBean<T> bean = defineManagedBean(managedBeanCreator,
processInjectionTargetEvent, false);
- if (bean == null)
- {
- // TODO could probably be a bit more descriptive
- throw new DeploymentException("Cannot create ManagedBean for
class" + processInjectionTargetEvent.getAnnotatedType());
- }
-
- //X TODO move proxy instance creation into JavassistProxyFactory!
- Class clazz =
webBeansContext.getProxyFactory().createAbstractDecoratorProxyClass(bean);
-
- bean.setConstructor(defineConstructor(clazz));
- bean.setIsAbstractDecorator(true);
- return bean;
- }
-
-
- public <T> ManagedBean<T> defineManagedBean(ManagedBeanCreatorImpl<T>
managedBeanCreator, ProcessInjectionTarget<T> processInjectionTargetEvent,
boolean allowLazyInit)
- {
- BeanManagerImpl manager = webBeansContext.getBeanManagerImpl();
-
- //Annotated type
- AnnotatedType<T> annotatedType =
processInjectionTargetEvent.getAnnotatedType();
- ManagedBean<T> managedBean = managedBeanCreator.getBean();
-
- Class<T> clazz = annotatedType.getJavaClass();
-
- managedBeanCreator.defineApiType();
-
- //Define meta-data
- managedBeanCreator.defineStereoTypes();
- //Scope type
-
managedBeanCreator.defineScopeType(WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_MB_IMPL)
+ clazz.getName() +
-
WebBeansLoggerFacade.getTokenString(OWBLogConst.TEXT_SAME_SCOPE),
allowLazyInit);
-
- managedBeanCreator.defineSerializable();
-
- //Check for Enabled via Alternative
- setInjectionTargetBeanEnableFlag(managedBean);
-
- managedBeanCreator.checkCreateConditions();
-
managedBeanCreator.defineName(WebBeansUtil.getManagedBeanDefaultName(clazz.getSimpleName()));
- managedBeanCreator.defineQualifier();
-
- if (managedBean.isFullInit())
- {
- managedBeanCreator.defineConstructor();
- Set<ProducerMethodBean<?>> producerMethods =
managedBeanCreator.defineProducerMethods();
- Set<ProducerFieldBean<?>> producerFields =
managedBeanCreator.defineProducerFields();
- managedBeanCreator.defineInjectedFields();
- managedBeanCreator.defineInjectedMethods();
-
- Set<ObserverMethod<?>> observerMethods = new
HashSet<ObserverMethod<?>>();
- if(managedBean.isEnabled())
- {
- observerMethods = managedBeanCreator.defineObserverMethods();
- }
-
- //Put final InjectionTarget instance
- manager.putProducer(managedBean,
processInjectionTargetEvent.getInjectionTarget());
-
- Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
- new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
-
- for(ProducerMethodBean<?> producerMethod : producerMethods)
- {
- AnnotatedMethod<?> method =
webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(producerMethod.getCreatorMethod(),
annotatedType);
- ProcessProducerImpl<?, ?> producerEvent =
fireProcessProducerEventForMethod(producerMethod,
-
method);
- inspectErrorStack("There are errors that are added by
ProcessProducer event observers for "
- + "ProducerMethods. Look at
logs for further details");
-
- annotatedMethods.put(producerMethod, method);
- manager.putProducer(producerMethod, (Producer)
producerEvent.getProducer());
- }
-
- Map<ProducerFieldBean<?>,AnnotatedField<?>> annotatedFields =
- new HashMap<ProducerFieldBean<?>, AnnotatedField<?>>();
-
- for(ProducerFieldBean<?> producerField : producerFields)
- {
- AnnotatedField<?> field =
webBeansContext.getAnnotatedElementFactory().newAnnotatedField(producerField.getCreatorField(),
annotatedType);
- ProcessProducerImpl<?, ?> producerEvent =
fireProcessProducerEventForField(producerField, field);
- inspectErrorStack("There are errors that are added by
ProcessProducer event observers for"
- + " ProducerFields. Look at
logs for further details");
-
- annotatedFields.put(producerField, field);
- manager.putProducer(producerField, (Producer)
producerEvent.getProducer());
- }
-
- Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =
- new HashMap<ObserverMethod<?>, AnnotatedMethod<?>>();
-
- for(ObserverMethod<?> observerMethod : observerMethods)
- {
- ObserverMethodImpl<?> impl =
(ObserverMethodImpl<?>)observerMethod;
- AnnotatedMethod<?> method =
webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(impl.getObserverMethod(),
annotatedType);
-
- observerMethodsMap.put(observerMethod, method);
- }
-
- BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
-
- //Fires ProcessManagedBean
- ProcessBeanImpl<T> processBeanEvent = new
GProcessManagedBean(managedBean, annotatedType);
- beanManager.fireEvent(processBeanEvent);
- inspectErrorStack("There are errors that are added by
ProcessManagedBean event observers for " +
- "managed beans. Look at logs for further details");
-
- //Fires ProcessProducerMethod
- fireProcessProducerMethodBeanEvent(annotatedMethods,
annotatedType);
- inspectErrorStack("There are errors that are added by
ProcessProducerMethod event observers for " +
- "producer method beans. Look at logs for further details");
-
- //Fires ProcessProducerField
- fireProcessProducerFieldBeanEvent(annotatedFields);
- inspectErrorStack("There are errors that are added by
ProcessProducerField event observers for " +
- "producer field beans. Look at logs for further details");
-
- //Fire ObservableMethods
- fireProcessObservableMethodBeanEvent(observerMethodsMap);
- inspectErrorStack("There are errors that are added by
ProcessObserverMethod event observers for " +
- "observer methods. Look at logs for further details");
-
- if(!isAnnotatedTypeDecoratorOrInterceptor(annotatedType))
- {
- beanManager.addBean(managedBean);
- for (ProducerMethodBean<?> producerMethod : producerMethods)
- {
- // add them one after the other to enable serialization
handling et al
- beanManager.addBean(producerMethod);
- }
- managedBeanCreator.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);
- }
- }
- }
- 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);
- inspectErrorStack("There are errors that are added by
ProcessManagedBean event observers for " +
- "managed beans. Look at logs for further details");
- if(!isAnnotatedTypeDecoratorOrInterceptor(annotatedType))
- {
- beanManager.addBean(managedBean);
- }
- }
-
- return managedBean;
- }
-
/**
* This method will be used in {@link
AfterBeanDiscovery#addBean(javax.enterprise.inject.spi.Bean)}}
*/
@@ -2921,20 +2687,6 @@ public final class WebBeansUtil
return managedBean;
}
- public void lazyInitializeManagedBean(Class<?> clazz, ManagedBean<?>
managedBean, ManagedBeanCreatorImpl<?> managedBeanCreator)
- {
- managedBeanCreator.defineConstructor();
- managedBeanCreator.defineProducerMethods();
- managedBeanCreator.defineProducerFields();
- managedBeanCreator.defineInjectedFields();
- managedBeanCreator.defineInjectedMethods();
- managedBeanCreator.defineObserverMethods();
- webBeansContext.getDefinitionUtil().defineDecoratorStack(managedBean);
-
webBeansContext.getDefinitionUtil().defineBeanInterceptorStack(managedBean);
-
- managedBeanCreator.defineDisposalMethods(); //Define disposal method
after adding producers
- }
-
@SuppressWarnings("unchecked")
public <T> ManagedBean<T> defineAbstractDecorator(AnnotatedType<T> type)
{