[jboss-cvs] JBoss Messaging SVN: r3123 - in trunk/src/main/org/jboss/jms: client/container and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Sep 19 12:16:05 EDT 2007


Author: timfox
Date: 2007-09-19 12:16:04 -0400 (Wed, 19 Sep 2007)
New Revision: 3123

Modified:
   trunk/src/main/org/jboss/jms/client/JBossConnectionConsumer.java
   trunk/src/main/org/jboss/jms/client/container/SessionAspect.java
   trunk/src/main/org/jboss/jms/client/state/SessionState.java
   trunk/src/main/org/jboss/jms/server/bridge/Bridge.java
Log:
http://jira.jboss.com/jira/browse/JBMESSAGING-1068


Modified: trunk/src/main/org/jboss/jms/client/JBossConnectionConsumer.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/JBossConnectionConsumer.java	2007-09-19 15:21:20 UTC (rev 3122)
+++ trunk/src/main/org/jboss/jms/client/JBossConnectionConsumer.java	2007-09-19 16:16:04 UTC (rev 3123)
@@ -34,6 +34,7 @@
 
 import org.jboss.jms.client.delegate.DelegateSupport;
 import org.jboss.jms.client.state.ConsumerState;
+import org.jboss.jms.client.state.SessionState;
 import org.jboss.jms.delegate.ConnectionDelegate;
 import org.jboss.jms.delegate.ConsumerDelegate;
 import org.jboss.jms.delegate.SessionDelegate;
@@ -121,6 +122,10 @@
       // Create a consumer. The ClientConsumer knows we are a connection consumer so will
       // not call pre or postDeliver so messages won't be acked, or stored in session/tx.
       sess = conn.createSessionDelegate(false, Session.CLIENT_ACKNOWLEDGE, false);
+      
+      SessionState sstate = (SessionState)((DelegateSupport)sess).getState();
+      
+      sstate.setTreatAsNonTransactedWhenNotEnlisted(false);
 
       cons = sess.createConsumerDelegate(dest, messageSelector, false, subName, true, true);
 

Modified: trunk/src/main/org/jboss/jms/client/container/SessionAspect.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/container/SessionAspect.java	2007-09-19 15:21:20 UTC (rev 3122)
+++ trunk/src/main/org/jboss/jms/client/container/SessionAspect.java	2007-09-19 16:16:04 UTC (rev 3123)
@@ -912,7 +912,7 @@
     * */
    private boolean isXAAndConsideredNonTransacted(SessionState state)
    {
-      return state.isXA() && (state.getCurrentTxId() instanceof LocalTx) && (state.getDistinguishedListener() == null);
+      return state.isXA() && (state.getCurrentTxId() instanceof LocalTx) && state.getTreatAsNonTransactedWhenNotEnlisted();
    }
 
    // Inner Classes -------------------------------------------------

Modified: trunk/src/main/org/jboss/jms/client/state/SessionState.java
===================================================================
--- trunk/src/main/org/jboss/jms/client/state/SessionState.java	2007-09-19 15:21:20 UTC (rev 3122)
+++ trunk/src/main/org/jboss/jms/client/state/SessionState.java	2007-09-19 16:16:04 UTC (rev 3123)
@@ -101,6 +101,13 @@
    
    //The distinguished message listener - for ASF
    private MessageListener sessionListener;
+   
+   //This is somewhat strange - but some of the MQ and TCK tests expect an XA session to behaviour as AUTO_ACKNOWLEDGE when not enlisted in
+   //a transaction
+   //This is the opposite behaviour as what is required when the XA session handles MDB delivery or when using the message bridge.
+   //In that case we want it to act as transacted, so when the session is subsequently enlisted the work can be converted into the
+   //XA transaction
+   private boolean treatAsNonTransactedWhenNotEnlisted = true;
       
    // Constructors ---------------------------------------------------------------------------------
 
@@ -346,6 +353,16 @@
    
    // Public ---------------------------------------------------------------------------------------
 
+   public void setTreatAsNonTransactedWhenNotEnlisted(boolean b)
+   {
+   	treatAsNonTransactedWhenNotEnlisted = b;
+   }
+   
+   public boolean getTreatAsNonTransactedWhenNotEnlisted()
+   {
+   	return treatAsNonTransactedWhenNotEnlisted;
+   }
+   
    /**
     * @return List<AckInfo>
     */

Modified: trunk/src/main/org/jboss/jms/server/bridge/Bridge.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/bridge/Bridge.java	2007-09-19 15:21:20 UTC (rev 3122)
+++ trunk/src/main/org/jboss/jms/server/bridge/Bridge.java	2007-09-19 16:16:04 UTC (rev 3123)
@@ -44,6 +44,9 @@
 import javax.transaction.TransactionManager;
 import javax.transaction.xa.XAResource;
 
+import org.jboss.jms.client.JBossSession;
+import org.jboss.jms.client.delegate.DelegateSupport;
+import org.jboss.jms.client.state.SessionState;
 import org.jboss.jms.message.JBossMessage;
 import org.jboss.logging.Logger;
 import org.jboss.messaging.core.contract.MessagingComponent;
@@ -969,7 +972,16 @@
                sess = sourceSession;
             }
          }
+         
+         if (usingXA && sourceSession instanceof JBossSession)
+         {
+         	JBossSession jsession = (JBossSession)sourceSession;
+         	
+         	SessionState sstate = (SessionState)((DelegateSupport)jsession.getDelegate()).getState();
             
+         	sstate.setTreatAsNonTransactedWhenNotEnlisted(false);
+         }
+            
          if (subName == null)
          {
             if (selector == null)




More information about the jboss-cvs-commits mailing list