[jboss-svn-commits] JBL Code SVN: r31964 - in labs/jbosstm/trunk/ArjunaJTS/jtax: classes/com/arjuna/ats/internal/jta/transaction/jts/jca and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 5 11:39:20 EST 2010


Author: mark.little at jboss.com
Date: 2010-03-05 11:39:20 -0500 (Fri, 05 Mar 2010)
New Revision: 31964

Added:
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/ServerTransactionUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/TransactionImporterUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/lastresource/LastResourceRecordUnitTest.java
Modified:
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/TransactionImporterImple.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/UtilsUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/SubordinateTxUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/XATerminatorImpleUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/subordinate/TransactionImpleUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/twophase/XAResourceRecordUnitTest.java
Log:
https://jira.jboss.org/jira/browse/JBTM-715

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java	2010-03-05 16:32:26 UTC (rev 31963)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -80,7 +80,7 @@
 /**
  * @message com.arjuna.ats.internal.jta.resources.jts.orbspecific.nulltransaction
  *          [com.arjuna.ats.internal.jta.resources.jts.orbspecific.nulltransaction]
- *          {0} - null transaction!
+ *          {0} - null or invalid transaction!
  * @message com.arjuna.ats.internal.jta.resources.jts.orbspecific.xaerror
  *          [com.arjuna.ats.internal.jta.resources.jts.orbspecific.xaerror] {0}
  *          caused an XA error: {1} from resource {2} in transaction {3}
@@ -217,27 +217,20 @@
 					"XAResourceRecord.prepare for " + _tranID);
 		}
 
-		if (!_valid || (_theXAResource == null))
+		if (!_valid || (_theXAResource == null) || (_tranID == null))
 		{
-			removeConnection();
+		    if (jtaxLogger.loggerI18N.isWarnEnabled())
+		    {
+		        jtaxLogger.loggerI18N
+		        .warn(
+		                "com.arjuna.ats.internal.jta.resources.jts.orbspecific.nulltransaction",
+		                new Object[]
+		                           { "XAResourceRecord.prepare" });
+		    }
 
-			return Vote.VoteRollback;
-		}
+		    removeConnection();
 
-		if (_tranID == null)
-		{
-			if (jtaxLogger.loggerI18N.isWarnEnabled())
-			{
-				jtaxLogger.loggerI18N
-						.warn(
-								"com.arjuna.ats.internal.jta.resources.jts.orbspecific.nulltransaction",
-								new Object[]
-								{ "XAResourceRecord.prepare" });
-			}
-
-			removeConnection();
-
-			return Vote.VoteRollback;
+		    return Vote.VoteRollback;
 		}
 
 		try
@@ -350,9 +343,6 @@
 					"XAResourceRecord.rollback for " + _tranID);
 		}
 
-		if (!_valid)
-			return;
-
 		if (_theTransaction != null
 				&& _theTransaction.getXAResourceState(_theXAResource) == TxInfo.OPTIMIZED_ROLLBACK)
 		{
@@ -363,7 +353,7 @@
 			return;
 		}
 
-		if (_tranID == null)
+		if (!_valid || (_tranID == null))
 		{
 			if (jtaxLogger.loggerI18N.isWarnEnabled())
 			{

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/TransactionImporterImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/TransactionImporterImple.java	2010-03-05 16:32:26 UTC (rev 31963)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/jca/TransactionImporterImple.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -101,6 +101,10 @@
 			throw new IllegalArgumentException();
 		
 		TransactionImple recovered = new TransactionImple(actId);
+		
+		if (recovered.baseXid() == null)
+		    throw new IllegalArgumentException();
+		
 		TransactionImple tx = (TransactionImple) _transactions.get(recovered.baseXid());
 
 		if (tx == null)

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/UtilsUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/UtilsUnitTest.java	2010-03-05 16:32:26 UTC (rev 31963)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/UtilsUnitTest.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -55,6 +55,18 @@
         
         assertTrue(XidUtils.getXid(tx.getControlWrapper().get_control(), false) != null);
         
+        try
+        {
+            XidUtils.getXid((Control) null, true);
+            
+            fail();
+        }
+        catch (final IllegalStateException ex)
+        {
+        }
+        
+        assertTrue(XidUtils.getXid(OTSImpleManager.current().get_control(), true) != null);
+        
         OTSImpleManager.current().commit(true);
     }
     

Added: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/ServerTransactionUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/ServerTransactionUnitTest.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/ServerTransactionUnitTest.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -0,0 +1,60 @@
+/*
+ * 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) 2004,
+ *
+ * Arjuna Technologies Ltd,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.  
+ *
+ * $Id: xidcheck.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jta.jts.jca;
+
+import org.junit.Test;
+
+import com.arjuna.ats.arjuna.ObjectType;
+import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.arjuna.state.InputObjectState;
+import com.arjuna.ats.arjuna.state.OutputObjectState;
+import com.arjuna.ats.internal.jta.transaction.jts.subordinate.jca.coordinator.ServerTransaction;
+import com.arjuna.ats.jta.xa.XidImple;
+import com.hp.mwtests.ts.jta.jts.common.TestBase;
+
+import static org.junit.Assert.*;
+
+public class ServerTransactionUnitTest extends TestBase
+{
+    @Test
+    public void test () throws Exception
+    {
+        ServerTransaction st = new ServerTransaction(new Uid(), new XidImple(new Uid()));
+        OutputObjectState os = new OutputObjectState();
+        
+        assertTrue(st.save_state(os, ObjectType.ANDPERSISTENT));
+        
+        InputObjectState is = new InputObjectState(os);
+        
+        assertTrue(st.restore_state(is, ObjectType.ANDPERSISTENT));
+    }
+}

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/SubordinateTxUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/SubordinateTxUnitTest.java	2010-03-05 16:32:26 UTC (rev 31963)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/SubordinateTxUnitTest.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -32,6 +32,7 @@
 package com.hp.mwtests.ts.jta.jts.jca;
 
 import org.junit.Test;
+import org.omg.CosTransactions.WrongTransaction;
 
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.internal.jta.transaction.jts.subordinate.jca.SubordinateAtomicTransaction;
@@ -41,6 +42,20 @@
 
 import static org.junit.Assert.*;
 
+class DummySubordinateAtomicTransaction extends SubordinateAtomicTransaction
+{
+    public DummySubordinateAtomicTransaction ()
+    {
+        super(new Uid());
+    }
+    
+    public boolean checkForCurrent ()
+    {
+        return super.checkForCurrent();
+    }
+}
+
+
 public class SubordinateTxUnitTest extends TestBase
 {
     @Test
@@ -66,5 +81,29 @@
         SubordinateAtomicTransaction saa2 = new SubordinateAtomicTransaction(new Uid(), xid, 0);
         
         assertEquals(saa2.getXid(), xid);
+        
+        try
+        {
+            saa2.end(true);
+            
+            fail();
+        }
+        catch (final WrongTransaction ex)
+        {
+        }
+        
+        try
+        {
+            saa2.abort();
+            
+            fail();
+        }
+        catch (final WrongTransaction ex)
+        {
+        }
+        
+        DummySubordinateAtomicTransaction dsat = new DummySubordinateAtomicTransaction();
+        
+        assertFalse(dsat.checkForCurrent());
     }
 }

Added: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/TransactionImporterUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/TransactionImporterUnitTest.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/TransactionImporterUnitTest.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -0,0 +1,99 @@
+/*
+ * 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) 2004,
+ *
+ * Arjuna Technologies Ltd,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.  
+ *
+ * $Id: xidcheck.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jta.jts.jca;
+
+import org.junit.Test;
+
+import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.internal.jta.transaction.jts.jca.TransactionImporterImple;
+import com.hp.mwtests.ts.jta.jts.common.TestBase;
+
+import static org.junit.Assert.*;
+
+public class TransactionImporterUnitTest extends TestBase
+{
+    @Test
+    public void test () throws Exception
+    {
+        TransactionImporterImple importer = new TransactionImporterImple();
+        
+        try
+        {
+            importer.importTransaction(null);
+            
+            fail();
+        }
+        catch (final IllegalArgumentException ex)
+        {
+        }
+        
+        try
+        {
+            importer.recoverTransaction(null);
+            
+            fail();
+        }
+        catch (final IllegalArgumentException ex)
+        {
+        }
+        
+        try
+        {
+            importer.recoverTransaction(new Uid());
+            
+            fail();
+        }
+        catch (final IllegalArgumentException ex)
+        {
+        }
+        
+        try
+        {
+            importer.getImportedTransaction(null);
+            
+            fail();
+        }
+        catch (final IllegalArgumentException ex)
+        {
+        }
+        
+        try
+        {
+            importer.removeImportedTransaction(null);
+            
+            fail();
+        }
+        catch (final IllegalArgumentException ex)
+        {
+        }
+    }
+}

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/XATerminatorImpleUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/XATerminatorImpleUnitTest.java	2010-03-05 16:32:26 UTC (rev 31963)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/jca/XATerminatorImpleUnitTest.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -170,6 +170,16 @@
 
         try
         {
+            xa.beforeCompletion(xid);
+            
+            fail();
+        }
+        catch (final Exception ex)
+        {
+        }
+        
+        try
+        {
             xa.prepare(xid);
             
             fail();

Added: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/lastresource/LastResourceRecordUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/lastresource/LastResourceRecordUnitTest.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/lastresource/LastResourceRecordUnitTest.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -0,0 +1,62 @@
+/*
+ * 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: SimpleTest.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jta.jts.lastresource;
+
+import org.junit.Test;
+import org.omg.CosTransactions.Vote;
+
+import com.arjuna.ats.internal.jta.resources.jts.orbspecific.LastResourceRecord;
+import com.arjuna.ats.internal.jta.transaction.jts.TransactionImple;
+import com.hp.mwtests.ts.jta.jts.common.DummyXA;
+import com.hp.mwtests.ts.jta.jts.common.TestBase;
+
+import static org.junit.Assert.*;
+
+public class LastResourceRecordUnitTest extends TestBase
+{
+    @Test
+    public void test () throws Exception
+    {
+        TransactionImple tx = new TransactionImple();
+        LastResourceRecord rec = new LastResourceRecord(tx, new DummyXA(false), tx.getTxId(), null);
+        
+        rec.commit();
+        
+        assertEquals(rec.prepare(), Vote.VoteCommit);
+        
+        assertTrue(rec.toString() != null);
+        
+        assertFalse(rec.saveRecord());
+        
+        assertTrue(rec.type() != null);
+    }
+}

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/subordinate/TransactionImpleUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/subordinate/TransactionImpleUnitTest.java	2010-03-05 16:32:26 UTC (rev 31963)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/subordinate/TransactionImpleUnitTest.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -38,11 +38,31 @@
 import com.arjuna.ats.internal.jta.transaction.jts.subordinate.TransactionImple;
 import com.arjuna.ats.internal.jts.OTSImpleManager;
 import com.arjuna.ats.internal.jts.interposition.ServerControlWrapper;
+import com.arjuna.ats.jta.exceptions.InactiveTransactionException;
 import com.arjuna.ats.jta.exceptions.InvalidTerminationStateException;
 import com.hp.mwtests.ts.jta.jts.common.TestBase;
 
 import static org.junit.Assert.*;
 
+class DummyTransactionImple extends TransactionImple
+{
+    public DummyTransactionImple(AtomicTransaction imported)
+    {
+        super(imported);
+    }
+
+    public void commitAndDisassociate () throws javax.transaction.RollbackException, javax.transaction.HeuristicMixedException, javax.transaction.HeuristicRollbackException, java.lang.SecurityException, javax.transaction.SystemException, java.lang.IllegalStateException
+    {
+        super.commitAndDisassociate();
+    }
+
+    public void rollbackAndDisassociate () throws java.lang.IllegalStateException, java.lang.SecurityException, javax.transaction.SystemException
+    {
+        super.rollbackAndDisassociate();
+    }
+}
+
+
 public class TransactionImpleUnitTest extends TestBase
 {   
     @Test
@@ -55,6 +75,8 @@
         assertFalse(tx.equals(null));
         assertTrue(tx.equals(tx));
         assertFalse(tx.equals(new TransactionImple(new AtomicTransaction())));
+        assertFalse(tx.equals(new Object()));
+        assertTrue(tx.toString() != null);
         
         try
         {
@@ -76,6 +98,8 @@
         {
         }
         
+        tx.doBeforeCompletion();
+        
         tx.doPrepare();
         
         try
@@ -108,6 +132,26 @@
         {
         }
         
+        tx.doForget();
+        
         OTSImpleManager.current().rollback();
+        
+        DummyTransactionImple dummy = new DummyTransactionImple(new AtomicTransaction());
+        
+        try
+        {
+            dummy.commitAndDisassociate();
+        }
+        catch (final InactiveTransactionException ex)
+        {
+        }
+        
+        try
+        {
+            dummy.rollbackAndDisassociate();
+        }
+        catch (final InactiveTransactionException ex)
+        {
+        }
     }
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/twophase/XAResourceRecordUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/twophase/XAResourceRecordUnitTest.java	2010-03-05 16:32:26 UTC (rev 31963)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/twophase/XAResourceRecordUnitTest.java	2010-03-05 16:39:20 UTC (rev 31964)
@@ -31,6 +31,9 @@
 
 package com.hp.mwtests.ts.jta.jts.twophase;
 
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
 import org.junit.Test;
 import org.omg.CORBA.TRANSACTION_ROLLEDBACK;
 import org.omg.CORBA.UNKNOWN;
@@ -44,6 +47,7 @@
 import com.arjuna.ats.arjuna.state.OutputObjectState;
 import com.arjuna.ats.internal.jta.resources.jts.orbspecific.XAResourceRecord;
 import com.arjuna.ats.internal.jta.transaction.jts.TransactionImple;
+import com.arjuna.ats.jta.recovery.XARecoveryResource;
 import com.arjuna.ats.jta.xa.XidImple;
 import com.hp.mwtests.ts.jta.common.DummyRecoverableXAConnection;
 import com.hp.mwtests.ts.jta.common.FailureXAResource;
@@ -53,6 +57,25 @@
 
 import static org.junit.Assert.*;
 
+class DummyXAResourceRecord extends XAResourceRecord
+{
+    public DummyXAResourceRecord (TransactionImple tx, XAResource res, Xid xid, Object[] params)
+    {
+        super(tx, res, xid, params);
+    }
+    
+    public void setXAResource (XAResource res)
+    {
+        super.setXAResource(res);
+    }
+    
+    public int recover ()
+    {
+        return super.recover();
+    }
+}
+
+
 public class XAResourceRecordUnitTest extends TestBase
 {
     @Test
@@ -66,12 +89,34 @@
         
         xares = new XAResourceRecord(new TransactionImple(), new DummyXA(false), new XidImple(new Uid()), params);
         
+        xares.merge(null);
+        xares.alter(null);
+        
         assertTrue(xares.type() != null);
         
         assertTrue(xares.toString() != null);
+        
+        assertTrue(xares.get_uid().notEquals(Uid.nullUid()));
     }
     
     @Test
+    public void testRecovery () throws Exception
+    {
+        DummyRecoverableXAConnection rc = new DummyRecoverableXAConnection();
+        Object[] params = new Object[1];
+        
+        params[XAResourceRecord.XACONNECTION] = rc;
+        
+        DummyXAResourceRecord xares = new DummyXAResourceRecord(new TransactionImple(), new DummyXA(false), new XidImple(new Uid()), params);
+        
+        assertEquals(xares.getRecoveryCoordinator(), null);
+        
+        assertEquals(xares.recover(), XARecoveryResource.FAILED_TO_RECOVER);
+        
+        xares.setXAResource(null);
+    }
+    
+    @Test
     public void testPackUnpack () throws Exception
     {
         XAResourceRecord xares;      
@@ -86,6 +131,8 @@
         
         assertTrue(xares.saveState(os));
         
+        xares = new XAResourceRecord();
+        
         InputObjectState is = new InputObjectState(os);
         
         assertTrue(xares.restoreState(is));
@@ -232,5 +279,8 @@
         catch (final UNKNOWN ex)
         {       
         }
+        
+        assertFalse(xares.propagateOnAbort());
+        assertFalse(xares.propagateOnCommit());
     }
 }



More information about the jboss-svn-commits mailing list