From a01cfe5a6ad7fdd519e88d2dd3d3ebc1e96d2445 Mon Sep 17 00:00:00 2001 From: Arnaud Simon Date: Wed, 28 May 2008 15:12:31 +0000 Subject: QPID-1094 and QPID-1095: Updated XaResource for handling wrong flag value, updated xa tests for using correct flag values, excluded forget test as the current 0.10 broker does not implement forget. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@660973 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/qpid/client/XAResourceImpl.java | 36 ++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'java/client/src/main') diff --git a/java/client/src/main/java/org/apache/qpid/client/XAResourceImpl.java b/java/client/src/main/java/org/apache/qpid/client/XAResourceImpl.java index 27ec445436..7a107d748b 100644 --- a/java/client/src/main/java/org/apache/qpid/client/XAResourceImpl.java +++ b/java/client/src/main/java/org/apache/qpid/client/XAResourceImpl.java @@ -116,6 +116,17 @@ public class XAResourceImpl implements XAResource { _logger.debug("end tx branch with xid: ", xid); } + switch (flag) + { + case(XAResource.TMSUCCESS): + break; + case(XAResource.TMFAIL): + break; + case(XAResource.TMSUSPEND): + break; + default: + throw new XAException(XAException.XAER_INVAL); + } Future future = _xaSession.getQpidSession() .dtxEnd(convertXid(xid), flag == XAResource.TMFAIL ? Option.FAIL : Option.NO_OPTION, @@ -270,8 +281,18 @@ public class XAResourceImpl implements XAResource { // the flag is ignored Future future = _xaSession.getQpidSession().dtxRecover(); - RecoverResult res = future.get(); - // todo make sure that the keys of the returned map are the xids + RecoverResult res = null; + try + { + res = future.get(); + } + catch (SessionException e) + { + // we need to restore the qpidity session that has been closed + _xaSession.createSession(); + // we should get a single exception + convertExecutionErrorToXAErr( e.getExceptions().get(0).getErrorCode()); + } Xid[] result = new Xid[res.getInDoubt().size()]; int i = 0; for (Object obj : res.getInDoubt()) @@ -366,6 +387,17 @@ public class XAResourceImpl implements XAResource { _logger.debug("start tx branch with xid: ", xid); } + switch (flag) + { + case(XAResource.TMNOFLAGS): + break; + case(XAResource.TMJOIN): + break; + case(XAResource.TMRESUME): + break; + default: + throw new XAException(XAException.XAER_INVAL); + } Future future = _xaSession.getQpidSession() .dtxStart(convertXid(xid), flag == XAResource.TMJOIN ? Option.JOIN : Option.NO_OPTION, -- cgit v1.2.1