openwebbeans-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cove...@apache.org
Subject svn commit: r993163 - in /openwebbeans/trunk: webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/interceptor/OpenWebBeansEjbInterceptor.java webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
Date Mon, 06 Sep 2010 22:07:28 GMT
Author: covener
Date: Mon Sep  6 22:07:27 2010
New Revision: 993163

URL: http://svn.apache.org/viewvc?rev=993163&view=rev
Log:
[OWB-446] defined-in-class (no-arg) EJB lifecycle callbacks were not
being properly run in the overall interceptor stack (they should be
suppressable by not calling our ic.proceed in a 299 interceptor,
and they should run in the same stack as the 299-defined interceptors)


Modified:
    openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/interceptor/OpenWebBeansEjbInterceptor.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java

Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/interceptor/OpenWebBeansEjbInterceptor.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/interceptor/OpenWebBeansEjbInterceptor.java?rev=993163&r1=993162&r2=993163&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/interceptor/OpenWebBeansEjbInterceptor.java
(original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/interceptor/OpenWebBeansEjbInterceptor.java
Mon Sep  6 22:07:27 2010
@@ -231,14 +231,13 @@ public class OpenWebBeansEjbInterceptor 
                 {
                     InvocationContextImpl impl = new InvocationContextImpl(null, context.getTarget(),
null, null, 
                             InterceptorUtil.getInterceptorMethods(injectionTarget.getInterceptorStack(),
InterceptorType.POST_CONSTRUCT), InterceptorType.POST_CONSTRUCT);
+                    impl.setEJBInvocationContext(context);
                     impl.setCreationalContext(threadLocalCreationalContext.get());
 
-                    // run OWB interceptors
+                    // Call 299 interceptors, and if they all call proceed on OWB's invocationContext,

+                    // do the same on the EJB containers context.
                     impl.proceed();
                 }
-
-                // run EJB interceptors
-                context.proceed();
             }
             catch (Exception e)
             {
@@ -283,13 +282,13 @@ public class OpenWebBeansEjbInterceptor 
                 {
                     InvocationContextImpl impl = new InvocationContextImpl(null, context.getTarget(),
null, null, 
                             InterceptorUtil.getInterceptorMethods(injectionTarget.getInterceptorStack(),InterceptorType.PRE_DESTROY),
InterceptorType.PRE_DESTROY);
+                    impl.setEJBInvocationContext(context);
                     impl.setCreationalContext(threadLocalCreationalContext.get());
 
-                    // Call OWB interceptors
+                    // Call 299 interceptors, and if they all call proceed on OWB's invocationContext,

+                    // do the same on the EJB containers context.
                     impl.proceed();
                 }
-                // Call EJB interceptors
-                context.proceed();
             }
             catch (Exception e)
             {
@@ -648,10 +647,13 @@ public class OpenWebBeansEjbInterceptor 
                 
                 InvocationContextImpl impl = new InvocationContextImpl(null, instance, null,
null, 
                         InterceptorUtil.getInterceptorMethods(interceptorStack, interceptorType),
interceptorType);
+                impl.setEJBInvocationContext(ejbContext);
                 impl.setCreationalContext(localcc);
                 
                 try
                 {
+                    // Call 299 interceptors, and if they all call proceed on OWB's invocationContext,

+                    // do the same on the EJB containers context.
                     impl.proceed();
                 }
                 catch (Exception e)
@@ -663,9 +665,6 @@ public class OpenWebBeansEjbInterceptor 
             { 
                 logger.debug("No lifecycle interceptors for [{0}]", instance);
             }
-    
-            //Call next interceptor
-            ejbContext.proceed();
         }
         catch (Exception e) 
         { 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java?rev=993163&r1=993162&r2=993163&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
Mon Sep  6 22:07:27 2010
@@ -321,7 +321,16 @@ public class InvocationContextImpl imple
             }
 
         }
-
+        else 
+        {
+            /* For EJB's, we do not call the "in bean class" interceptors --the container
does, and only if
+             * our last 299 interceptor called proceed (which takes us here).
+             */
+            if ((this.owbBean instanceof EnterpriseBeanMarker) && (this.ejbInvocationContext
!= null))
+            {
+                result = ejbInvocationContext.proceed();
+            }
+        }
         return result;
     }
 



Mime
View raw message