You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2013/04/15 18:03:50 UTC

svn commit: r1468134 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/InjectionTargetBean.java component/InterceptorBean.java component/SelfInterceptorBean.java intercept/InterceptorResolutionService.java

Author: rmannibucau
Date: Mon Apr 15 16:03:50 2013
New Revision: 1468134

URL: http://svn.apache.org/r1468134
Log:
OWB-836 auto interception (alone)

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SelfInterceptorBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java?rev=1468134&r1=1468133&r2=1468134&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java Mon Apr 15 16:03:50 2013
@@ -123,17 +123,11 @@ public abstract class InjectionTargetBea
 
                 if (mii.getEjbInterceptors() != null)
                 {
-                    for (Interceptor<?> i : mii.getEjbInterceptors())
-                    {
-                        activeInterceptors.add(i);
-                    }
+                    Collections.addAll(activeInterceptors, mii.getEjbInterceptors());
                 }
                 if (mii.getCdiInterceptors() != null)
                 {
-                    for (Interceptor<?> i : mii.getCdiInterceptors())
-                    {
-                        activeInterceptors.add(i);
-                    }
+                    Collections.addAll(activeInterceptors, mii.getCdiInterceptors());
                 }
                 if (interceptorInfo.getSelfInterceptorBean() != null)
                 {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java?rev=1468134&r1=1468133&r2=1468134&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InterceptorBean.java Mon Apr 15 16:03:50 2013
@@ -53,7 +53,7 @@ public abstract class InterceptorBean<T>
     /**
      * This is for performance reasons
      */
-    private Method aroundInvokeMethod = null;
+    protected Method aroundInvokeMethod = null;
 
     protected InterceptorBean(WebBeansContext webBeansContext,
                                   AnnotatedType<T> annotatedType,

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SelfInterceptorBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SelfInterceptorBean.java?rev=1468134&r1=1468133&r2=1468134&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SelfInterceptorBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/SelfInterceptorBean.java Mon Apr 15 16:03:50 2013
@@ -52,6 +52,11 @@ public class SelfInterceptorBean<T> exte
                 new InjectionTargetFactoryImpl<T>(annotatedType, webBeansContext));
     }
 
+    public boolean isAroundInvoke()
+    {
+        return aroundInvokeMethod != null;
+    }
+
     /**
      * @return always an empty Set as this interceptor doesn't have any InterceptorBindings
      */

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=1468134&r1=1468133&r2=1468134&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 Mon Apr 15 16:03:50 2013
@@ -116,6 +116,8 @@ public class InterceptorResolutionServic
 
         List<Method> nonInterceptedMethods = new ArrayList<Method>();
 
+        SelfInterceptorBean<T> selfInterceptorBean = resolveSelfInterceptorBean(annotatedType);
+
         // iterate over all methods and build up the interceptor/decorator stack
         for (AnnotatedMethod annotatedMethod : interceptableAnnotatedMethods)
         {
@@ -127,7 +129,7 @@ public class InterceptorResolutionServic
 
             calculateCdiMethodDecorators(methodInterceptorInfo, decorators, annotatedMethod);
 
-            if (methodInterceptorInfo.isEmpty())
+            if (methodInterceptorInfo.isEmpty() && (selfInterceptorBean == null || !selfInterceptorBean.isAroundInvoke()))
             {
                 nonInterceptedMethods.add(annotatedMethod.getJavaMember());
                 continue;
@@ -164,8 +166,6 @@ public class InterceptorResolutionServic
         List<Interceptor<?>> cdiInterceptors = new ArrayList<Interceptor<?>>(allUsedCdiInterceptors);
         Collections.sort(cdiInterceptors, new InterceptorComparator(webBeansContext));
 
-        SelfInterceptorBean<T> selfInterceptorBean = resolveSelfInterceptorBean(annotatedType);
-
         if (Modifier.isFinal(annotatedType.getJavaClass().getModifiers()) &&
             (allUsedEjbInterceptors.size() > 0 || 
              allUsedCdiInterceptors.size() > 0 || 
@@ -227,7 +227,7 @@ public class InterceptorResolutionServic
             return null;
         }
 
-        return (SelfInterceptorBean<T>) sibb.getBean();
+        return sibb.getBean();
     }
 
     private void addLifecycleMethods(Map<InterceptionType, LifecycleMethodInfo> lifecycleMethodInterceptorInfos,