[jboss-cvs] JBossAS SVN: r57368 - branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Oct 2 15:49:54 EDT 2006


Author: weston.price at jboss.com
Date: 2006-10-02 15:49:53 -0400 (Mon, 02 Oct 2006)
New Revision: 57368

Modified:
   branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow/MessageEndpointInterceptor.java
Log:
[JBAS-3734] Changed to use state variable rather than CL value for determing before/after invocation
sequence. Removed spurious log messages. 

Modified: branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow/MessageEndpointInterceptor.java
===================================================================
--- branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow/MessageEndpointInterceptor.java	2006-10-02 19:23:58 UTC (rev 57367)
+++ branches/Branch_4_0/server/src/main/org/jboss/ejb/plugins/inflow/MessageEndpointInterceptor.java	2006-10-02 19:49:53 UTC (rev 57368)
@@ -34,6 +34,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.proxy.Interceptor;
 
+
 import EDU.oswego.cs.dl.util.concurrent.SynchronizedBoolean;
 
 /**
@@ -81,9 +82,13 @@
    /** Any suspended transaction */
    protected Transaction suspended = null;
 
+   /** The beforeDeliveryInvoked used to identify sequence of before/after invocation*/
+   protected boolean beforeDeliveryInvoked = false;
+   
    /** The message endpoint factory */
    private JBossMessageEndpointFactory endpointFactory;
    
+   
    // Static --------------------------------------------------------
    
    // Constructors --------------------------------------------------
@@ -173,12 +178,9 @@
    protected void before(Invocation mi) throws Throwable
    {
       // Called out of sequence
-      if (oldClassLoader != null)
+      if (getBeforeDeliveryInvoke())
          throw new IllegalStateException("Missing afterDelivery from the previous beforeDelivery for message endpoint " + getProxyString(mi));
 
-      if (trace)
-         log.trace("MessageEndpoint " + getProxyString(mi) + " released");
-
       // Set the classloader
       MessageDrivenContainer container = getContainer(mi);
       oldClassLoader = GetTCLAction.getContextClassLoader(inUseThread);
@@ -190,9 +192,11 @@
       try
       {
          startTransaction("beforeDelivery", mi, container);
+         setBeforeDeliveryInvoke(true);
       }
       catch (Throwable t)
       {
+         setBeforeDeliveryInvoke(false);
          resetContextClassLoader(mi);
          throw new ResourceException(t);
       }
@@ -207,8 +211,11 @@
    protected void after(Invocation mi) throws Throwable
    {
       // Called out of sequence
-      if (oldClassLoader == null)
+      if(!getBeforeDeliveryInvoke())
+      {
          throw new IllegalStateException("afterDelivery without a previous beforeDelivery for message endpoint " + getProxyString(mi));
+         
+      }
 
       // Finish this delivery committing if we can
       try
@@ -218,6 +225,7 @@
       catch (Throwable t)
       {
          throw new ResourceException(t);
+      
       }
    }
    
@@ -261,6 +269,7 @@
                transaction.setRollbackOnly();
             commit = false;
          }
+         setBeforeDeliveryInvoke(false);
          throw t;
       }
       finally
@@ -297,6 +306,7 @@
       }
       finally
       {
+         setBeforeDeliveryInvoke(false);
          // Reset delivered flag
          delivered = false;
          // Change back to the original context classloader
@@ -468,7 +478,18 @@
       SetTCLAction.setContextClassLoader(inUseThread, oldClassLoader);
       oldClassLoader = null;
    }
-
+   
+   protected void setBeforeDeliveryInvoke(boolean bdi)
+   {
+      this.beforeDeliveryInvoked = bdi;
+      
+   }
+   
+   protected boolean getBeforeDeliveryInvoke()
+   {
+      return this.beforeDeliveryInvoked;
+      
+   }
    /**
     * Release the thread lock
     * 




More information about the jboss-cvs-commits mailing list