[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