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/01/04 01:11:22 UTC

svn commit: r1428680 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/ManagedBean.java component/creation/ManagedBeanCreatorImpl.java config/BeansDeployer.java util/WebBeansUtil.java

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)
     {