TerminationCoordinatorClient.getClient().sendClose(_terminationCoordinator, addressingProperties, new InstanceIdentifier(_id)) ;
callback.waitUntilTriggered() ;
}
catch (final Throwable th)
{
throw new SystemException() ;
}
finally
{
terminationParticipantProcessor.removeCallback(_id) ;
}
if (callback.hasTriggered())
{
if (callback.receivedClosed())
{
return ;
}
final SoapFault soapFault = callback.getSoapFault() ;
if (soapFault != null)
{
final QName subcode = soapFault.getSubcode() ;
if (ArjunaTXConstants.TRANSACTIONROLLEDBACK_ERROR_CODE_QNAME.equals(subcode))
{
throw new TransactionRolledBackException();
}
else if (ArjunaTXConstants.UNKNOWNTRANSACTION_ERROR_CODE_QNAME.equals(subcode))
{
throw new UnknownTransactionException() ;
}
}
}
throw new SystemException() ;
}