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 2014/07/01 20:17:52 UTC

svn commit: r1607156 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: container/ intercept/ portable/

Author: arne
Date: Tue Jul  1 18:17:52 2014
New Revision: 1607156

URL: http://svn.apache.org/r1607156
Log:
Fixed interceptor order (superclass first)

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1607156&r1=1607155&r2=1607156&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Tue Jul  1 18:17:52 2014
@@ -1092,8 +1092,8 @@ public class BeanManagerImpl implements 
                         type,
                         factory.createInjectionPoints(null),
                         webBeansContext,
-                        interceptorUtil.getLifecycleMethods(type, PostConstruct.class, true),
-                        interceptorUtil.getLifecycleMethods(type, PreDestroy.class, true));
+                        interceptorUtil.getLifecycleMethods(type, PostConstruct.class),
+                        interceptorUtil.getLifecycleMethods(type, PreDestroy.class));
         try
         {
             webBeansContext.getWebBeansUtil().validate(injectionTarget.getInjectionPoints(), false);

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java?rev=1607156&r1=1607155&r2=1607156&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionTargetFactoryImpl.java Tue Jul  1 18:17:52 2014
@@ -83,11 +83,11 @@ public class InjectionTargetFactoryImpl<
 
     protected List<AnnotatedMethod<?>> getPostConstructMethods()
     {
-        return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PostConstruct.class, true);
+        return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PostConstruct.class);
     }
 
     protected List<AnnotatedMethod<?>> getPreDestroyMethods()
     {
-        return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PreDestroy.class, false);
+        return webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, PreDestroy.class);
     }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java?rev=1607156&r1=1607155&r2=1607156&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java Tue Jul  1 18:17:52 2014
@@ -166,8 +166,7 @@ public class InterceptorResolutionServic
                 allUsedCdiInterceptors,
                 allUsedEjbInterceptors,
                 classLevelEjbInterceptors,
-                classInterceptorBindings,
-                true);
+                classInterceptorBindings);
 
         addLifecycleMethods(
                 lifecycleMethodInterceptorInfos,
@@ -177,8 +176,7 @@ public class InterceptorResolutionServic
                 allUsedCdiInterceptors,
                 allUsedEjbInterceptors,
                 classLevelEjbInterceptors,
-                classInterceptorBindings,
-                true);
+                classInterceptorBindings);
 
         List<Interceptor<?>> cdiInterceptors = new ArrayList<Interceptor<?>>(allUsedCdiInterceptors);
         Collections.sort(cdiInterceptors, new InterceptorComparator(webBeansContext));
@@ -324,13 +322,12 @@ public class InterceptorResolutionServic
                                      Set<Interceptor<?>> allUsedCdiInterceptors,
                                      Set<Interceptor<?>> allUsedEjbInterceptors,
                                      List<Interceptor<?>> classLevelEjbInterceptors,
-                                     Set<Annotation> classInterceptorBindings,
-                                     boolean parentFirst)
+                                     Set<Annotation> classInterceptorBindings)
     {
         List<AnnotatedMethod<?>> foundMethods = new ArrayList<AnnotatedMethod<?>>();
         BusinessMethodInterceptorInfo methodInterceptorInfo = new BusinessMethodInterceptorInfo();
 
-        List<AnnotatedMethod<?>> lifecycleMethodCandidates = webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, lifeycleAnnotation, parentFirst);
+        List<AnnotatedMethod<?>> lifecycleMethodCandidates = webBeansContext.getInterceptorUtil().getLifecycleMethods(annotatedType, lifeycleAnnotation);
 
         for (AnnotatedMethod<?> lifecycleMethod : lifecycleMethodCandidates)
         {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java?rev=1607156&r1=1607155&r2=1607156&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java Tue Jul  1 18:17:52 2014
@@ -60,7 +60,7 @@ public final class InterceptorUtil
     }
 
 
-    public List<AnnotatedMethod<?>> getLifecycleMethods(AnnotatedType<?> annotatedType, Class<? extends Annotation> annotation, boolean parentFirst)
+    public List<AnnotatedMethod<?>> getLifecycleMethods(AnnotatedType<?> annotatedType, Class<? extends Annotation> annotation)
     {
         List<AnnotatedMethod<?>> lifecycleMethods = new ArrayList<AnnotatedMethod<?>>();
 
@@ -76,14 +76,7 @@ public final class InterceptorUtil
 
                 if (annotatedMethod.isAnnotationPresent(annotation))
                 {
-                    if (parentFirst)
-                    {
-                        lifecycleMethods.add(annotatedMethod);
-                    }
-                    else
-                    {
-                        lifecycleMethods.add(0, annotatedMethod);
-                    }
+                    lifecycleMethods.add(annotatedMethod);
                 }
             }
         }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java?rev=1607156&r1=1607155&r2=1607156&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java Tue Jul  1 18:17:52 2014
@@ -34,7 +34,6 @@ import org.apache.webbeans.intercept.Lif
 import org.apache.webbeans.logger.WebBeansLoggerFacade;
 import org.apache.webbeans.proxy.InterceptorDecoratorProxyFactory;
 import org.apache.webbeans.proxy.InterceptorHandler;
-import org.apache.webbeans.proxy.NormalScopeProxyFactory;
 import org.apache.webbeans.proxy.OwbInterceptorProxy;
 import org.apache.webbeans.proxy.OwbNormalScopeProxy;
 import org.apache.webbeans.spi.ResourceInjectionService;
@@ -57,6 +56,7 @@ import javax.enterprise.inject.spi.Inter
 import javax.inject.Inject;
 import javax.inject.Provider;
 import javax.interceptor.InvocationContext;
+
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Constructor;
@@ -322,41 +322,23 @@ public class InjectionTargetImpl<T> exte
     @Override
     public void preDestroy(T instance)
     {
+        if (instance instanceof OwbNormalScopeProxy)
+        {
+            instance = webBeansContext.getNormalScopeProxyFactory().unwrapInstance(instance);
+        }
+
         Map<Interceptor<?>, ?> interceptorInstances = null;
         T internalInstance = instance;
 
-        if (getInterceptorInfo() != null)
+        if (getInterceptorInfo() != null && instance instanceof OwbInterceptorProxy)
         {
-            if (instance instanceof OwbInterceptorProxy)
-            {
-                InterceptorDecoratorProxyFactory pf = webBeansContext.getInterceptorDecoratorProxyFactory();
-                InterceptorHandler ih = pf.getInterceptorHandler((OwbInterceptorProxy) instance);
-                if (ih instanceof DefaultInterceptorHandler)
-                {
-                    DefaultInterceptorHandler dih = (DefaultInterceptorHandler) ih;
-                    interceptorInstances = dih.getInstances();
-                    internalInstance = (T) dih.getTarget();
-                }
-            }
-            else if (instance instanceof OwbNormalScopeProxy)
+            InterceptorDecoratorProxyFactory pf = webBeansContext.getInterceptorDecoratorProxyFactory();
+            InterceptorHandler ih = pf.getInterceptorHandler((OwbInterceptorProxy) instance);
+            if (ih instanceof DefaultInterceptorHandler)
             {
-                final NormalScopeProxyFactory nspf = webBeansContext.getNormalScopeProxyFactory();
-                final Provider provider = nspf.getInstanceProvider(OwbNormalScopeProxy.class.cast(instance));
-                if (provider != null)
-                {
-                    final Object object = provider.get();
-                    if (object != null && OwbInterceptorProxy.class.isInstance(object))
-                    {
-                        final InterceptorDecoratorProxyFactory pf = webBeansContext.getInterceptorDecoratorProxyFactory();
-                        final InterceptorHandler ih = pf.getInterceptorHandler(OwbInterceptorProxy.class.cast(object));
-                        if (DefaultInterceptorHandler.class.isInstance(ih))
-                        {
-                            final DefaultInterceptorHandler dih = DefaultInterceptorHandler.class.cast(ih);
-                            interceptorInstances = dih.getInstances();
-                            internalInstance = (T) dih.getTarget();
-                        }
-                    }
-                }
+                DefaultInterceptorHandler dih = (DefaultInterceptorHandler) ih;
+                interceptorInstances = dih.getInstances();
+                internalInstance = (T) dih.getTarget();
             }
         }
         else if (preDestroyMethods == null || preDestroyMethods.size() == 0)