[jboss-svn-commits] JBL Code SVN: r38375 - in labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786: ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jun 26 17:40:55 EDT 2013
Author: jolee
Date: 2013-06-26 17:40:54 -0400 (Wed, 26 Jun 2013)
New Revision: 38375
Added:
labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa/JTATest.java
labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/
labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java
Modified:
labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
Log:
JBTM-1786: Change to TMFAIL for an ABORT on a non-prepared TX
Modified: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java 2013-06-26 21:36:03 UTC (rev 38374)
+++ labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java 2013-06-26 21:40:54 UTC (rev 38375)
@@ -309,7 +309,7 @@
{
if (endAssociation())
{
- _theXAResource.end(_tranID, XAResource.TMSUCCESS);
+ _theXAResource.end(_tranID, XAResource.TMFAIL);
}
}
}
@@ -322,6 +322,19 @@
* Has been marked as rollback-only. We still
* need to call rollback.
*/
+
+ } else if ((e1.errorCode == XAException.XAER_RMERR) || (e1.errorCode == XAException.XAER_RMFAIL)){
+ try {
+ _theXAResource.rollback(_tranID);
+ } catch (XAException e2)
+ {
+ jtaLogger.i18NLogger.warn_resources_arjunacore_rollbackerror(XAHelper.xidToString(_tranID),
+ _theXAResource.toString(), XAHelper.printXAErrorCode(e2), e2);
+
+ removeConnection();
+
+ return TwoPhaseOutcome.FINISH_ERROR;
+ }
}
else
{
Added: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa/JTATest.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa/JTATest.java (rev 0)
+++ labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/xa/JTATest.java 2013-06-26 21:40:54 UTC (rev 38375)
@@ -0,0 +1,136 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2001, 2002,
+ *
+ * Hewlett-Packard Arjuna Labs,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.
+ *
+ * $Id: JTATest.java 2342 2006-03-30 13:06:17Z $
+ */
+
+package com.hp.mwtests.ts.jta.xa;
+
+import static org.junit.Assert.assertTrue;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+import org.junit.Test;
+
+public class JTATest {
+
+ @Test
+ public void test() throws Exception {
+
+ javax.transaction.TransactionManager tm = com.arjuna.ats.jta.TransactionManager
+ .transactionManager();
+
+ tm.begin();
+
+ javax.transaction.Transaction theTransaction = tm.getTransaction();
+
+ assertTrue(theTransaction.enlistResource(new XARMERRXAResource(false)));
+ XARMERRXAResource rollbackCalled = new XARMERRXAResource(true);
+ assertTrue(theTransaction.enlistResource(rollbackCalled));
+
+ tm.rollback();
+ assertTrue(rollbackCalled.getRollbackCalled());
+ }
+
+ private class XARMERRXAResource implements XAResource {
+
+ private boolean returnRMERROutOfEnd;
+ private boolean rollbackCalled;
+
+ public XARMERRXAResource(boolean returnRMERROutOfEnd) {
+ this.returnRMERROutOfEnd = returnRMERROutOfEnd;
+ }
+
+ public boolean getRollbackCalled() {
+ return rollbackCalled;
+ }
+
+ @Override
+ public void commit(Xid xid, boolean onePhase) throws XAException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void end(Xid xid, int flags) throws XAException {
+ if (returnRMERROutOfEnd) {
+ throw new XAException(XAException.XAER_RMERR);
+ }
+ }
+
+ @Override
+ public void forget(Xid xid) throws XAException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public int getTransactionTimeout() throws XAException {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public boolean isSameRM(XAResource xares) throws XAException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public int prepare(Xid xid) throws XAException {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public Xid[] recover(int flag) throws XAException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void rollback(Xid xid) throws XAException {
+ rollbackCalled = true;
+ }
+
+ @Override
+ public boolean setTransactionTimeout(int seconds) throws XAException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void start(Xid xid, int flags) throws XAException {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+}
Modified: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java 2013-06-26 21:36:03 UTC (rev 38374)
+++ labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java 2013-06-26 21:40:54 UTC (rev 38375)
@@ -323,7 +323,7 @@
{
if (endAssociation())
{
- _theXAResource.end(_tranID, XAResource.TMSUCCESS);
+ _theXAResource.end(_tranID, XAResource.TMFAIL);
}
}
}
@@ -336,6 +336,18 @@
* Has been marked as rollback-only. We still
* need to call rollback.
*/
+ } else if ((e1.errorCode == XAException.XAER_RMERR) || (e1.errorCode == XAException.XAER_RMFAIL)){
+ try {
+ _theXAResource.rollback(_tranID);
+ } catch (XAException e2)
+ {
+ jtaxLogger.i18NLogger.warn_jtax_resources_jts_orbspecific_xaerror("XAResourceRecord.rollback",
+ XAHelper.printXAErrorCode(e2), _theXAResource.toString(), XAHelper.xidToString(_tranID), e2);
+
+ removeConnection();
+
+ throw new UNKNOWN();
+ }
}
else
{
Added: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java (rev 0)
+++ labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java 2013-06-26 21:40:54 UTC (rev 38375)
@@ -0,0 +1,146 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2001, 2002,
+ *
+ * Hewlett-Packard Arjuna Labs,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.
+ *
+ * $Id: JTATest.java 2342 2006-03-30 13:06:17Z $
+ */
+
+package com.hp.mwtests.ts.jta.jts.xa;
+
+import static org.junit.Assert.assertTrue;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+import org.junit.Test;
+
+import com.arjuna.ats.internal.jts.ORBManager;
+import com.arjuna.ats.jta.common.jtaPropertyManager;
+import com.arjuna.orbportability.OA;
+import com.arjuna.orbportability.ORB;
+import com.arjuna.orbportability.RootOA;
+
+public class JTSTest {
+ @Test
+ public void test() throws Exception {
+
+ ORB myORB = ORB.getInstance("test");
+ RootOA myOA = OA.getRootOA(myORB);
+ myORB.initORB(new String[] {}, null);
+ myOA.initOA();
+
+ ORBManager.setORB(myORB);
+ ORBManager.setPOA(myOA);
+ jtaPropertyManager.getJTAEnvironmentBean().setTransactionManagerClassName(com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.class.getName());
+ jtaPropertyManager.getJTAEnvironmentBean().setUserTransactionClassName(com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple.class.getName());
+ javax.transaction.TransactionManager tm = com.arjuna.ats.jta.TransactionManager.transactionManager();
+
+ tm.begin();
+
+ javax.transaction.Transaction theTransaction = tm.getTransaction();
+
+ assertTrue(theTransaction.enlistResource(new XARMERRXAResource(false)));
+ assertTrue(theTransaction.enlistResource(new XARMERRXAResource(true)));
+
+ tm.rollback();
+
+ myOA.destroy();
+ myORB.shutdown();
+ }
+
+ private class XARMERRXAResource implements XAResource {
+
+ private boolean returnRMERROutOfEnd;
+
+ public XARMERRXAResource(boolean returnRMERROutOfEnd) {
+ this.returnRMERROutOfEnd = returnRMERROutOfEnd;
+ }
+
+ @Override
+ public void commit(Xid xid, boolean onePhase) throws XAException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void end(Xid xid, int flags) throws XAException {
+ if (returnRMERROutOfEnd) {
+ throw new XAException(XAException.XAER_RMERR);
+ }
+ }
+
+ @Override
+ public void forget(Xid xid) throws XAException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public int getTransactionTimeout() throws XAException {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public boolean isSameRM(XAResource xares) throws XAException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public int prepare(Xid xid) throws XAException {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public Xid[] recover(int flag) throws XAException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void rollback(Xid xid) throws XAException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public boolean setTransactionTimeout(int seconds) throws XAException {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void start(Xid xid, int flags) throws XAException {
+ // TODO Auto-generated method stub
+
+ }
+
+ }
+}
Property changes on: labs/jbosstm/branches/JBOSSTS_4_16_4_Final-JBTM-1786/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/xa/JTSTest.java
___________________________________________________________________
Added: svn:executable
+ *
More information about the jboss-svn-commits
mailing list