Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* 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) 2003, Arjuna Technologies Limited.
*
* $Id: BusinessActivityTerminatorStub.java,v 1.7.6.1 2005/11/22 10:35:29 kconner Exp $
*/
package com.arjuna.wst11.stub;
import com.arjuna.schemas.ws._2005._10.wsarjtx.NotificationType;
import com.arjuna.webservices.SoapFault;
import com.arjuna.webservices.wsarjtx.ArjunaTXConstants;
import com.arjuna.webservices11.wsaddr.AddressingHelper;
import org.jboss.ws.api.addressing.MAP;
import com.arjuna.webservices11.wsarj.ArjunaContext;
import com.arjuna.webservices11.wsarj.InstanceIdentifier;
import com.arjuna.webservices11.wsarjtx.client.TerminationCoordinatorClient;
import com.arjuna.webservices11.wsarjtx.processors.TerminationParticipantCallback;
import com.arjuna.webservices11.wsarjtx.processors.TerminationParticipantProcessor;
import com.arjuna.wsc11.messaging.MessageId;
import com.arjuna.wst.FaultedException;
import com.arjuna.wst.SystemException;
import com.arjuna.wst.TransactionRolledBackException;
import com.arjuna.wst.UnknownTransactionException;
import com.arjuna.wst11.BusinessActivityTerminator;
import javax.xml.namespace.QName;
import javax.xml.ws.wsaddressing.W3CEndpointReference;
public class BusinessActivityTerminatorStub implements BusinessActivityTerminator
{
private W3CEndpointReference _terminationCoordinator = null;
private final String _id ;
public BusinessActivityTerminatorStub(final String id, final W3CEndpointReference terminationCoordinator)
throws Exception
{
_terminationCoordinator = terminationCoordinator;
_id = id ;
}
public void close ()
throws TransactionRolledBackException, UnknownTransactionException, SystemException
{
final MAP map = AddressingHelper.createNotificationContext(MessageId.getMessageId()) ;
final RequestCallback callback = new RequestCallback() ;
final TerminationParticipantProcessor terminationParticipantProcessor = TerminationParticipantProcessor.getProcessor() ;
terminationParticipantProcessor.registerCallback(_id, callback) ;
try
{
TerminationCoordinatorClient.getClient().sendClose(_terminationCoordinator, map, 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() ;
}
public void cancel ()
throws FaultedException, UnknownTransactionException, SystemException
{
final MAP map = AddressingHelper.createNotificationContext(MessageId.getMessageId()) ;
final RequestCallback callback = new RequestCallback() ;
final TerminationParticipantProcessor terminationParticipantProcessor = TerminationParticipantProcessor.getProcessor() ;
terminationParticipantProcessor.registerCallback(_id, callback) ;
try
{
TerminationCoordinatorClient.getClient().sendCancel(_terminationCoordinator, map, new InstanceIdentifier(_id)) ;
callback.waitUntilTriggered() ;
}
catch (final Throwable th)
{
throw new SystemException() ;
}
finally
{
terminationParticipantProcessor.removeCallback(_id) ;
}
if (callback.hasTriggered())
{
if (callback.receivedCancelled())
{
return ;
}
else if (callback.receivedFaulted())
{
throw new FaultedException() ;
}
final SoapFault soapFault = callback.getSoapFault() ;
if (soapFault != null)
{
final QName subcode = soapFault.getSubcode() ;
if (ArjunaTXConstants.UNKNOWNTRANSACTION_ERROR_CODE_QNAME.equals(subcode))
{
throw new UnknownTransactionException() ;
}
}
}
throw new SystemException() ;
}
public void complete ()
throws FaultedException, UnknownTransactionException, SystemException
{
final MAP map = AddressingHelper.createNotificationContext(MessageId.getMessageId()) ;
final RequestCallback callback = new RequestCallback() ;
final TerminationParticipantProcessor terminationParticipantProcessor = TerminationParticipantProcessor.getProcessor() ;
terminationParticipantProcessor.registerCallback(_id, callback) ;
try
{
TerminationCoordinatorClient.getClient().sendComplete(_terminationCoordinator, map, new InstanceIdentifier(_id)) ;
callback.waitUntilTriggered() ;
}
catch (final Throwable th)
{
throw new SystemException() ;
}
finally
{
terminationParticipantProcessor.removeCallback(_id) ;
}
if (callback.hasTriggered())
{
if (callback.receivedCompleted())
{
return ;
}
else if (callback.receivedFaulted())
{
throw new FaultedException() ;
}
final SoapFault soapFault = callback.getSoapFault() ;
if (soapFault != null)
{
final QName subcode = soapFault.getSubcode() ;
if (ArjunaTXConstants.UNKNOWNTRANSACTION_ERROR_CODE_QNAME.equals(subcode))
{
throw new UnknownTransactionException() ;
}
}
}
throw new SystemException() ;
}
public W3CEndpointReference getEndpoint()
{
return _terminationCoordinator;
}
/*
* this never gets called
*/
public void unknown ()
throws SystemException
{
error() ;
}
/*
* this never gets called
*/
public void error ()
throws SystemException
{
/*
* Since it is never used this has been decommissioned due to problems with using the soap fault service to
* send a fault via a W3C endpoint. the latter is broken now that CXF helpfully puts metadata into the endpoint.
final MAP map = AddressingHelper.createNotificationContext(MessageId.getMessageId()) ;
final SoapFault soapFault = new SoapFault11(SoapFaultType.FAULT_SENDER, ArjunaTXConstants.UNKNOWNERROR_ERROR_CODE_QNAME,
WSTLogger.i18NLogger.get_wst11_stub_BusinessActivityTerminatorStub_1()) ;
try
{
TerminationCoordinatorClient.getClient().sendSoapFault(_terminationCoordinator, map, soapFault, new InstanceIdentifier(_id)) ;
}
catch (final Throwable th)
{
throw new SystemException() ;
}
*/
}
private static class RequestCallback extends TerminationParticipantCallback
{
/**
* The addressing context.
*/
private MAP map ;
/**
* The arjuna context.
*/
private ArjunaContext arjunaContext ;
/**
* The SOAP fault.
*/
private SoapFault soapFault ;
/**
* The completed notification flag.
*/
private boolean completed ;
/**
* The cancelled notification flag.
*/
private boolean cancelled ;
/**
* The closed notification flag.
*/
private boolean closed ;
/**
* The faulted notification flag.
*/
private boolean faulted ;
/**
* Get the addressing context.
* @return The addressing context.
*/
MAP getAddressingProperties()
{
return map ;
}
/**
* Get the arjuna context.
* @return The arjuna context.
*/
ArjunaContext getArjunaContextWS()
{
return arjunaContext ;
}
/**
* Get the SOAP fault.
* @return The SOAP fault.
*/
SoapFault getSoapFault()
{
return soapFault ;
}
/**
* Did we receive a completed notification?
* @return True if completed, false otherwise.
*/
boolean receivedCompleted()
{
return completed ;
}
/**
* Did we receive a cancelled notification?
* @return True if cancelled, false otherwise.
*/
boolean receivedCancelled()
{
return cancelled ;
}
/**
* Did we receive a closed notification?
* @return True if closed, false otherwise.
*/
boolean receivedClosed()
{
return closed ;
}
/**
* Did we receive a faulted notification?
* @return True if faulted, false otherwise.
*/
boolean receivedFaulted()
{
return faulted ;
}
/**
* A completed response.
* @param completed The completed notification.
* @param map The addressing context.
* @param arjunaContext The arjuna context.
*/
public void completed(final NotificationType completed, final MAP map,
final ArjunaContext arjunaContext)
{
this.completed = true ;
this.map = map ;
this.arjunaContext = arjunaContext ;
}
/**
* A cancelled response.
* @param cancelled The cancelled notification.
* @param map The addressing context.
* @param arjunaContext The arjuna context.
*/
public void cancelled(final NotificationType cancelled, final MAP map,
final ArjunaContext arjunaContext)
{
this.cancelled = true ;
this.map = map ;
this.arjunaContext = arjunaContext ;
}
/**
* A closed response.
* @param closed The closed notification.
* @param map The addressing context.
* @param arjunaContext The arjuna context.
*/
public void closed(final NotificationType closed, final MAP map,
final ArjunaContext arjunaContext)
{
this.closed = true ;
this.map = map ;
this.arjunaContext = arjunaContext ;
}
/**
* A faulted response.
* @param faulted The faulted notification.
* @param map The addressing context.
* @param arjunaContext The arjuna context.
*/
public void faulted(final NotificationType faulted, final MAP map,
final ArjunaContext arjunaContext)
{
// TODO - convert wsdl to use NotificationType instead of ExceptionType
this.faulted = true ;
this.map = map ;
this.arjunaContext = arjunaContext ;
}
/**
* A SOAP fault response.
* @param soapFault The SOAP fault.
* @param map The addressing context.
* @param arjunaContext The arjuna context.
*/
public void soapFault(final SoapFault soapFault, final MAP map,
final ArjunaContext arjunaContext)
{
// TODO - pass soap fault to this callback
this.soapFault = soapFault ;
this.map = map ;
this.arjunaContext = arjunaContext ;
}
}
}