[jboss-svn-commits] JBL Code SVN: r24853 - in labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats: jts/extensions and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jan 21 13:18:34 EST 2009
Author: mark.little at jboss.com
Date: 2009-01-21 13:18:34 -0500 (Wed, 21 Jan 2009)
New Revision: 24853
Modified:
labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/ControlWrapper.java
labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/extensions/AtomicTransaction.java
Log:
https://jira.jboss.org/jira/browse/JBTM-474 and https://jira.jboss.org/jira/browse/JBTM-473
Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/ControlWrapper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/ControlWrapper.java 2009-01-21 17:36:07 UTC (rev 24852)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/ControlWrapper.java 2009-01-21 18:18:34 UTC (rev 24853)
@@ -57,6 +57,7 @@
import org.omg.CosTransactions.NoTransaction;
import org.omg.CosTransactions.HeuristicMixed;
import org.omg.CosTransactions.HeuristicHazard;
+import org.omg.CORBA.OBJECT_NOT_EXIST;
import org.omg.CORBA.SystemException;
import org.omg.CORBA.UNKNOWN;
import org.omg.CORBA.BAD_OPERATION;
@@ -453,47 +454,51 @@
return _controlImpl.getImplHandle().getSynchronizations();
}
- public final org.omg.CosTransactions.Status get_status ()
- throws SystemException
- {
- try
- {
- if (_controlImpl != null)
- return _controlImpl.getImplHandle().get_status();
- else
- {
- Coordinator c = null;
+ public final org.omg.CosTransactions.Status get_status () throws SystemException
+ {
+ if (_controlImpl != null)
+ return _controlImpl.getImplHandle().get_status();
+ else
+ {
+ Coordinator c = null;
- try
- {
- c = _control.get_coordinator();
- }
- catch (Unavailable e)
- {
- c = null;
- }
+ try
+ {
+ if (_control != null)
+ c = _control.get_coordinator();
+ else
+ return org.omg.CosTransactions.Status.StatusUnknown;
+ }
+ catch (final OBJECT_NOT_EXIST ex)
+ {
+ // definitely not there so rolled back.
+
+ return org.omg.CosTransactions.Status.StatusRolledBack;
+ }
+ catch (final Exception e)
+ {
+ return org.omg.CosTransactions.Status.StatusUnknown;
+ }
- if (c != null)
- {
- try
- {
- return c.get_status();
- }
- catch (Exception e)
- {
- return org.omg.CosTransactions.Status.StatusUnknown;
- }
- }
- else
- return org.omg.CosTransactions.Status.StatusNoTransaction;
- }
- }
- catch (NullPointerException ex)
- {
- return org.omg.CosTransactions.Status.StatusNoTransaction;
- }
- }
+ try
+ {
+ return c.get_status();
+ }
+ catch (final OBJECT_NOT_EXIST ex)
+ {
+ // definitely not there any more.
+ return org.omg.CosTransactions.Status.StatusRolledBack;
+ }
+ catch (final Exception e)
+ {
+ // who knows?!
+
+ return org.omg.CosTransactions.Status.StatusUnknown;
+ }
+ }
+ }
+
public final XID get_xid (boolean branch) throws SystemException
{
if (_controlImpl != null)
Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/extensions/AtomicTransaction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/extensions/AtomicTransaction.java 2009-01-21 17:36:07 UTC (rev 24852)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/extensions/AtomicTransaction.java 2009-01-21 18:18:34 UTC (rev 24853)
@@ -219,8 +219,6 @@
CurrentImple current = OTSImpleManager.current();
- current.begin();
-
synchronized (_theStatus)
{
if (_theAction != null)
@@ -229,6 +227,8 @@
CompletionStatus.COMPLETED_NO);
}
+ current.begin();
+
_theAction = current.getControlWrapper();
}
@@ -704,7 +704,17 @@
throw new WrongTransaction();
}
- _theAction = OTSImpleManager.current().suspendWrapper();
+ synchronized (_theStatus)
+ {
+ _theAction = OTSImpleManager.current().suspendWrapper();
+
+ /*
+ * Make sure to set the status in case we get called again.
+ */
+
+ if (_theAction == null)
+ _theStatus = org.omg.CosTransactions.Status.StatusNoTransaction;
+ }
}
/**
@@ -914,7 +924,12 @@
}
}
- org.omg.CosTransactions.Status stat = Status.StatusNoTransaction;
+ /*
+ * It shouldn't be possible for _theAction to be null and for the status
+ * to be unset. If it is something went wrong!!
+ */
+
+ org.omg.CosTransactions.Status stat = org.omg.CosTransactions.Status.StatusUnknown;
if (_theAction != null)
{
More information about the jboss-svn-commits
mailing list