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/14 19:19:06 UTC

svn commit: r1433019 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/creation/ManagedBeanBuilder.java config/BeansDeployer.java

Author: arne
Date: Mon Jan 14 18:19:05 2013
New Revision: 1433019

URL: http://svn.apache.org/viewvc?rev=1433019&view=rev
Log:
OWB-755: Fixed definition of interceptors and decorators

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java

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=1433019&r1=1433018&r2=1433019&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 Mon Jan 14 18:19:05 2013
@@ -122,10 +122,9 @@ public class ManagedBeanBuilder<T, M ext
     /**
      * @deprecated replaced via the various {@link InterceptorBeanBuilder}s
      */
-    public ManagedBean<T> defineInterceptor(ProcessInjectionTarget<T> injectionTargetEvent)
+    public ManagedBean<T> defineInterceptor(AnnotatedType<T> annotatedType)
     {
-        Class<?> clazz = injectionTargetEvent.getAnnotatedType().getJavaClass();
-        AnnotatedType annotatedType = injectionTargetEvent.getAnnotatedType();
+        Class<?> clazz = annotatedType.getJavaClass();
 
         if (webBeansContext.getInterceptorsManager().isInterceptorClassEnabled(clazz))
         {
@@ -143,7 +142,7 @@ public class ManagedBeanBuilder<T, M ext
             else
             {
                 // TODO could probably be a bit more descriptive
-                throw new DeploymentException("Cannot create Interceptor for class" + injectionTargetEvent.getAnnotatedType());
+                throw new DeploymentException("Cannot create Interceptor for class" + annotatedType);
             }
             return component;
         }
@@ -173,9 +172,9 @@ public class ManagedBeanBuilder<T, M ext
      * Define decorator bean.
      * @param processInjectionTargetEvent
      */
-    public ManagedBean<T> defineDecorator(ProcessInjectionTarget<T> processInjectionTargetEvent)
+    public ManagedBean<T> defineDecorator(AnnotatedType<T> annotatedType)
     {
-        Class<T> clazz = processInjectionTargetEvent.getAnnotatedType().getJavaClass();
+        Class<T> clazz = annotatedType.getJavaClass();
         if (webBeansContext.getDecoratorsManager().isDecoratorEnabled(clazz))
         {
             ManagedBean<T> delegate = null;
@@ -184,11 +183,11 @@ public class ManagedBeanBuilder<T, M ext
 
             if(Modifier.isAbstract(clazz.getModifiers()))
             {
-                delegate = defineAbstractDecorator(processInjectionTargetEvent);
+                delegate = defineAbstractDecorator(annotatedType);
             }
             else
             {
-                delegate = defineManagedBean(processInjectionTargetEvent.getAnnotatedType());
+                delegate = defineManagedBean(annotatedType);
             }
 
             if (delegate != null)
@@ -198,7 +197,7 @@ public class ManagedBeanBuilder<T, M ext
             else
             {
                 // TODO could probably be a bit more descriptive
-                throw new DeploymentException("Cannot create Decorator for class" + processInjectionTargetEvent.getAnnotatedType());
+                throw new DeploymentException("Cannot create Decorator for class" + annotatedType);
             }
             return delegate;
         }
@@ -208,14 +207,14 @@ public class ManagedBeanBuilder<T, M ext
         }
     }
 
-    private ManagedBean<T> defineAbstractDecorator(ProcessInjectionTarget<T> processInjectionTargetEvent)
+    private ManagedBean<T> defineAbstractDecorator(AnnotatedType<T> annotatedType)
     {
 
-        ManagedBean<T> bean = defineManagedBean(processInjectionTargetEvent.getAnnotatedType());
+        ManagedBean<T> bean = defineManagedBean(annotatedType);
         if (bean == null)
         {
             // TODO could probably be a bit more descriptive
-            throw new DeploymentException("Cannot create ManagedBean for class" + processInjectionTargetEvent.getAnnotatedType());
+            throw new DeploymentException("Cannot create ManagedBean for class" + annotatedType);
         }
 
         //X TODO move proxy instance creation into JavassistProxyFactory!

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=1433019&r1=1433018&r2=1433019&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 Mon Jan 14 18:19:05 2013
@@ -852,15 +852,8 @@ public class BeansDeployer
                 annotationTypeSet = true;
             }
             
-            InjectionTargetBean<T> bean = managedBeanCreator.defineManagedBean(annotatedType);
-
+            InjectionTargetBean<T> bean;
             GProcessInjectionTarget processInjectionTarget = null;
-            if(processInjectionTargetEvent == null)
-            {
-                processInjectionTarget = webBeansContext.getWebBeansUtil().createProcessInjectionTargetEvent(bean);
-                processInjectionTargetEvent = processInjectionTarget;
-            }
-
             if(WebBeansUtil.isDecorator(annotatedType))
             {
                 if (logger.isLoggable(Level.FINE))
@@ -873,7 +866,7 @@ public class BeansDeployer
                 }
                 else
                 {
-                    bean = managedBeanCreator.defineDecorator(processInjectionTargetEvent);
+                    bean = managedBeanCreator.defineDecorator(annotatedType);
                 }
             }
             else if(WebBeansUtil.isCdiInterceptor(annotatedType))
@@ -882,11 +875,11 @@ public class BeansDeployer
                 {
                     logger.log(Level.FINE, "Found Managed Bean Interceptor with class name : [{0}]", annotatedType.getJavaClass().getName());
                 }
-
+                
                 if (WebBeansContext.TODO_USING_NEW_INTERCEPTORS)
                 {
                     CdiInterceptorBeanBuilder<T> ibb
-                            = new CdiInterceptorBeanBuilder<T>(webBeansContext, annotatedType);
+                    = new CdiInterceptorBeanBuilder<T>(webBeansContext, annotatedType);
                     if (ibb.isInterceptorEnabled())
                     {
                         ibb.defineCdiInterceptorRules();
@@ -898,7 +891,7 @@ public class BeansDeployer
                     {
                         bean = null;
                     }
-
+                    
                 }
                 else
                 {
@@ -908,12 +901,21 @@ public class BeansDeployer
                     }
                     else
                     {
-                        bean = managedBeanCreator.defineInterceptor(processInjectionTargetEvent);
+                        bean = managedBeanCreator.defineInterceptor(annotatedType);
                     }
                 }
             }
             else
             {
+            
+                bean = managedBeanCreator.defineManagedBean(annotatedType);
+
+                if(processInjectionTargetEvent == null)
+                {
+                    processInjectionTarget = webBeansContext.getWebBeansUtil().createProcessInjectionTargetEvent(bean);
+                    processInjectionTargetEvent = processInjectionTarget;
+                }
+
                 if (webBeansContext.getDecoratorsManager().containsCustomDecoratorClass(annotatedType.getJavaClass()) ||
                     webBeansContext.getInterceptorsManager().containsCustomInterceptorClass(annotatedType.getJavaClass()))
                 {
@@ -937,86 +939,83 @@ public class BeansDeployer
                 //Put final InjectionTarget instance
                 bean.setProducer(processInjectionTargetEvent.getInjectionTarget());
 
-                if (bean instanceof ManagedBean)
-                {
-                    ManagedBean<T> managedBean = (ManagedBean<T>)bean;
-                    Map<ProducerMethodBean<?>,AnnotatedMethod<?>> annotatedMethods =
-                            new HashMap<ProducerMethodBean<?>, AnnotatedMethod<?>>();
+                ManagedBean<T> managedBean = (ManagedBean<T>)bean;
+                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");
+                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());
-                    }
+                    annotatedMethods.put(producerMethod, method);
+                    producerMethod.setProducer((Producer) producerEvent.getProducer());
+                }
 
-                    Map<ProducerFieldBean<?>,AnnotatedField<?>> annotatedFields =
-                            new HashMap<ProducerFieldBean<?>, AnnotatedField<?>>();
+                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");
+                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, field);
+                    producerField.setProducer((Producer) producerEvent.getProducer());
+                }
 
-                    Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =
-                            new HashMap<ObserverMethod<?>, AnnotatedMethod<?>>();
+                Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =
+                        new HashMap<ObserverMethod<?>, AnnotatedMethod<?>>();
 
-                    for(ObserverMethod<?> observerMethod : observerMethods)
-                    {
-                        ObserverMethodImpl<?> impl = (ObserverMethodImpl<?>)observerMethod;
-                        AnnotatedMethod<?> method = webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(impl.getObserverMethod(), annotatedType);
+                for(ObserverMethod<?> observerMethod : observerMethods)
+                {
+                    ObserverMethodImpl<?> impl = (ObserverMethodImpl<?>)observerMethod;
+                    AnnotatedMethod<?> method = webBeansContext.getAnnotatedElementFactory().newAnnotatedMethod(impl.getObserverMethod(), annotatedType);
 
-                        observerMethodsMap.put(observerMethod, method);
-                    }
+                    observerMethodsMap.put(observerMethod, method);
+                }
 
-                    BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
+                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 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 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");
+                //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");
+                //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(bean);
+                    for (ProducerMethodBean<?> producerMethod : producerMethods)
+                    {
+                        // add them one after the other to enable serialization handling et al
+                        beanManager.addBean(producerMethod);
+                    }
+                    managedBeanCreator.validateDisposalMethods(bean);//Define disposal method after adding producers
+                    for (ProducerFieldBean<?> producerField : producerFields)
                     {
-                        beanManager.addBean(bean);
-                        for (ProducerMethodBean<?> producerMethod : producerMethods)
-                        {
-                            // add them one after the other to enable serialization handling et al
-                            beanManager.addBean(producerMethod);
-                        }
-                        managedBeanCreator.validateDisposalMethods(bean);//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(producerField);
                     }
                 }
             }