Author: dasarath
Date: Mon Jun 18 13:10:20 2007
New Revision: 548472
URL: http://svn.apache.org/viewvc?view=rev&rev=548472
Log:
Hannes Erven, Georg Hicker
Added:
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AbstractCoordinatorIProxy.java
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AtomicCoordinatorIProxy.java
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/MixedCoordinatorIProxy.java
Added:
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AbstractCoordinatorIProxy.java
URL:
http://svn.apache.org/viewvc/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AbstractCoordinatorIProxy.java?view=auto&rev=548472
==============================================================================
---
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AbstractCoordinatorIProxy.java
(added)
+++
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AbstractCoordinatorIProxy.java
Mon Jun 18 13:10:20 2007
@@ -0,0 +1,332 @@
+/*
+ * Copyright 2007 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
under
+ * the License.
+ *
+ * @author Hannes Erven, Georg Hicker
+ */
+package org.apache.kandula.coordinator.ba.initiator;
+
+import java.net.MalformedURLException;
+import java.rmi.RemoteException;
+
+import javax.xml.rpc.ServiceException;
+import javax.xml.soap.Name;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.components.uuid.UUIDGen;
+import org.apache.axis.components.uuid.UUIDGenFactory;
+import org.apache.axis.message.addressing.EndpointReference;
+import org.apache.axis.types.URI.MalformedURIException;
+import org.apache.kandula.coordinator.ActivationStub;
+import org.apache.kandula.coordinator.Callback;
+import org.apache.kandula.coordinator.CoordinationContext;
+import org.apache.kandula.coordinator.CoordinationService;
+import org.apache.kandula.coordinator.TimedOutException;
+import org.apache.kandula.coordinator.ba.coordinator.BACoordinator;
+import org.apache.kandula.wscoor.CreateCoordinationContextResponseType;
+
+import
org.apache.kandula.wsbai.CoordinatorInitiatorProtocolPortType_AllProtocols;
+import org.apache.kandula.wsbai.BAParticipantReferenceType;
+import org.apache.kandula.wsbai.BAParticipantType;
+import org.apache.kandula.wsbai.GetCoordCtxWCodeReqType;
+import org.apache.kandula.wsbai.ListParticipantsReqType;
+
+/**
+ * This class represents the client proxy for calls to the coordinator by the
+ * business activity enabled application.
+ *
+ * It is responsible for handling all communication requirements between a
kandula coordinator
+ * and the application. Since WS-BusinessActivity does not include
specifications for this protocol,
+ * it is mandatory that both the application and the coordination service use
compatible Kandula
+ * versions. @see
org.apache.kandula.coordinator.ba.coordinator.BACoordinator#PROTOCOL_ID_INITIATOR
+ *
+ * This abstract class provides methods common to all business activity
contexts, such as preparing
+ * registration slots for new participants as well as querying the participant
list and handling
+ * coordinator-completion subscribers up to the COMPLETED state.
+ *
+ * Specific subclasse, @see
org.apache.kandula.coordinator.ba.initiator.AtomicCoordinatorIProxy
+ * and @see org.apache.kandula.coordinator.ba.initiator.MixedCoordinatorIProxy
provide methods
+ * specific contexts either with the atomic or mixed outcome assertions.
+ *
+ *
+ * @author Hannes Erven, Georg Hicker (C) 2006
+ *
+ */
+public abstract class AbstractCoordinatorIProxy implements Callback {
+
+ /**
+ * The coordinator's service endpoint location, complete with reference
+ * properties.
+ */
+ protected final EndpointReference coordinatorPort;
+
+ /**
+ * The local endpoint reference as given to the coordinator.
+ */
+ protected final EndpointReference initiatorPort;
+
+ /**
+ * The initiator's participant access GUID as provided by the
coordinator.
+ */
+ protected final String myID;
+
+ /**
+ * The coordination context object that this object manages.
+ */
+ protected final CoordinationContext coordinationContext;
+
+ /**
+ * Retrieves a web service stub for the coordinator's initiator service.
+ * @return The web service stub.
+ */
+ protected abstract CoordinatorInitiatorProtocolPortType_AllProtocols
getCoordinatorStub();
+
+ /**
+ * Tries to register a new initiator for the given coordination context.
+ *
+ * Supported Outcome Types: Atomic and Mixed
+ *
+ * @param ctx
+ * The coordination context to register with
+ * @return The initiator object
+ * @throws AxisFault
+ * @throws RemoteException
+ * @throws ServiceException
+ */
+ public static AbstractCoordinatorIProxy newInstance(final
CoordinationContext ctx)
+ throws AxisFault, RemoteException, ServiceException {
+
+ if (BACoordinator.COORDINATION_TYPE__ATOMIC.equals(
ctx.getCoordinationType().toString() )) {
+ return new AtomicCoordinatorIProxy(ctx);
+
+ }else if (BACoordinator.COORDINATION_TYPE__MIXED.equals(
ctx.getCoordinationType().toString() )) {
+ return new MixedCoordinatorIProxy(ctx);
+
+ }else{
+ throw new IllegalArgumentException("Unsupported context
type: "+ctx.getCoordinationType());
+ }
+ }
+
+ /**
+ * Contact a WS-Coordination Service to have a context with the
specified coordinationType
+ * created.
+ * @param coordinationType The WS-Coordination coordination type to
request.
+ * @return The created CoordinationContext object.
+ * @throws MalformedURLException Configuration Error in
kandula.properties
+ * @throws MalformedURIException Configuration Error in
kandula.properties
+ * @throws RemoteException Error from the Activation Service
+ * @throws AxisFault Error from the Activation Service
+ */
+ protected static CoordinationContext createCoordinationContext(final
String coordinationType) throws AxisFault, RemoteException,
MalformedURIException, MalformedURLException{
+ /*
+ * The endpoint of the activation service to use.
+ */
+ final EndpointReference activationServiceEPR =
CoordinationService
+
.getInstance().getActivationCoordinatorService();
+
+ /*
+ * Contact the activiation service and create a new
coordination context
+ */
+ final CoordinationContext ctx;
+ ctx = new ActivationStub(activationServiceEPR)
+ .createCoordinationContext(coordinationType);
+
+ return ctx;
+ }
+
+ /**
+ * Try to register as initiator in the given coordination context.
+ *
+ * @param ctx
+ * @throws AxisFault
+ * @throws RemoteException
+ * @throws ServiceException
+ */
+ protected AbstractCoordinatorIProxy(
+ final CoordinationContext ctx
+ ) throws AxisFault,
+ RemoteException {
+
+ this.coordinationContext = ctx;
+ final UUIDGen gen = UUIDGenFactory.getUUIDGen();
+ this.myID = "uuid:" + gen.nextUUID();
+
+ // Local initiator services endpoint
+ this.initiatorPort = CoordinationService.getInstance()
+ .getInitiatorService(this, 0);
+
+ // remote coordination services endpoint
+ this.coordinatorPort = ctx.register(
+ BACoordinator.PROTOCOL_ID_INITIATOR,
this.initiatorPort);
+
+ // Check if we got something back...
+ if (this.coordinatorPort == null)
+ throw new NullPointerException("CoordinatorPort has not
been provided, but is required!");
+
+ // OK, everything seems to be good
+ }
+
+ /**
+ * This initiator's ID.
+ * @return My ID.
+ */
+ public String getID() {
+ return this.myID;
+ }
+
+ /**
+ * The context's coordination type (mixed or atomic)
+ * @return The coordination type's URI
+ */
+ public org.apache.axis.types.URI getCoordinationType() {
+ return this.coordinationContext.getCoordinationType();
+ }
+
+ /**
+ * Checks if a given coordinationType is equal to the one of the
Initiator
+ * chosen protocol.
+ *
+ * @param coordinationTypeX
+ * @return <code>true</code> if equal
+ */
+ public boolean testCoordinationTypeEquals(final String
coordinationTypeX) {
+ return coordinationTypeX.equals(
this.getCoordinationType().toString() );
+ }
+
+ /**
+ * Return a coordination context, containing a registration service
that is
+ * tagged with the given matchcode.
+ *
+ * @param participantMatchcode
+ * The matchcode for the participant (ATTENTION: it has to be
+ * unique)
+ * @return a coordination context
+ * @throws RemoteException
+ */
+ public CoordinationContext getCoordinationContextForParticipant(
+ final String participantMatchcode) throws
RemoteException {
+
+ final CreateCoordinationContextResponseType ctxResponseType;
+
+ try {
+ final GetCoordCtxWCodeReqType matchCodeReq =
+ new GetCoordCtxWCodeReqType();
+
+ matchCodeReq.setMatchcode(
+ participantMatchcode
+ );
+
+ ctxResponseType =
this.getCoordinatorStub().getCoordinationContextWithMatchcode(
+ matchCodeReq
+// participantMatchcode
+ );
+ } catch (RemoteException e) {
+ throw e;
+ }
+
+ return new
CoordinationContext(ctxResponseType.getCoordinationContext());
+ }
+
+ /**
+ * List the participants taking part in the transaction
+ *
+ * @return an array of all participants in the transaction and their
+ * associated states
+ * @throws RemoteException
+ */
+ public BAParticipantType[] listParticipants() throws RemoteException {
+ final BAParticipantType[] participantList;
+ final ListParticipantsReqType req = new
ListParticipantsReqType();
+ try {
+ participantList =
this.getCoordinatorStub().listParticipants(req);
+ } catch (RemoteException e) {
+ throw e;
+ }
+ return participantList;
+ }
+
+ /**
+ * complete given participants in the transaction
+ *
+ * @param participantsToComplete
+ * the participants to be completed
+ * @return an array of all participants in the transaction and their
+ * associated states
+ * @throws RemoteException
+ */
+ public BAParticipantType[] completeParticipants(
+ BAParticipantReferenceType[] participantsToComplete
+ ) throws RemoteException {
+
+ final BAParticipantType[] participantList;
+ try {
+ participantList =
this.getCoordinatorStub().completeParticipants(participantsToComplete);
+ } catch (RemoteException e) {
+ throw e;
+ }
+ return participantList;
+ }
+
+
+ /*
+ * === Callback methods ===
+ * @see
org.apache.kandula.coordinator.Callback#onFault(javax.xml.soap.Name)
+ */
+
+
+ /** Callback interface fault handler
+ * @see
org.apache.kandula.coordinator.Callback#onFault(javax.xml.soap.Name)
+ */
+ public void onFault(final Name code) {
+ code.toString();
+ // TODO WSBA Handle faults
+ }
+
+ /** Callback interface timeout handler
+ * @see org.apache.kandula.coordinator.Callback#timeout()
+ */
+ public void timeout() throws TimedOutException {
+ // TODO WSBA Handle timeouts
+ if (false)
+ throw new TimedOutException();
+ }
+
+ /** Callback interface method -- unused
+ * @see org.apache.kandula.coordinator.Callback#getEndpointReference()
+ */
+ public EndpointReference getEndpointReference() {
+ return null;
+ }
+
+ /**
+ * Provides an array with matchcodes of the currently enrolled
participants. This is a
+ * convenience method for calls to the mixed outcome coordinator proxy
that expects
+ * arrays of this type for naming the participants that are subjected
to some call.
+ *
+ * @return Unused?
+ * @throws RemoteException
+ */
+ public BAParticipantReferenceType[] getXAllParticipantReferences()
throws RemoteException{
+ final BAParticipantType[] ps = this.listParticipants();
+
+ if (ps == null || ps.length == 0)
+ return new BAParticipantReferenceType[0];
+
+ final BAParticipantReferenceType[] prs = new
BAParticipantReferenceType[ps.length];
+ for(int i=0; i<ps.length; i++)
+ prs[i] = new
BAParticipantReferenceType(ps[i].getParticipantMatchcode().getParticipantMatchcode());
+
+ return prs;
+ }
+}
Added:
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AtomicCoordinatorIProxy.java
URL:
http://svn.apache.org/viewvc/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AtomicCoordinatorIProxy.java?view=auto&rev=548472
==============================================================================
---
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AtomicCoordinatorIProxy.java
(added)
+++
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/AtomicCoordinatorIProxy.java
Mon Jun 18 13:10:20 2007
@@ -0,0 +1,189 @@
+/*
+ * Copyright 2007 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
under
+ * the License.
+ *
+ * @author Hannes Erven, Georg Hicker
+ */
+package org.apache.kandula.coordinator.ba.initiator;
+
+import java.net.MalformedURLException;
+import java.rmi.RemoteException;
+
+import javax.xml.rpc.ServiceException;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.types.URI.MalformedURIException;
+import org.apache.kandula.coordinator.CoordinationContext;
+import org.apache.kandula.coordinator.ba.coordinator.BACoordinator;
+import org.apache.kandula.wscoor.CreateCoordinationContextResponseType;
+
+import
org.apache.kandula.wsbai.CoordinatorInitiatorProtocolPortType_AllProtocols;
+import org.apache.kandula.wsbai.CoordinatorInitiatorProtocolPortType_Atomic;
+import org.apache.kandula.wsbai.CoordinatorInitiatorProtocol_ServiceLocator;
+import org.apache.kandula.wsbai.BAParticipantType;
+import org.apache.kandula.wsbai.GetCoordCtxWCodeReqType;
+
+/**
+ * This class provides methods for managing business activity contexts with an
AtomicOutcome
+ * assertion.
+ *
+ * Atomic outcome means that there is a single point at which the initiator
application must decide
+ * whether to successfully close the transaction or to "roll back", hence
cancel or compensate all participants.
+ * The coordinator will afterwards reject new participant's registration
requests.
+ *
+ * The final outcome decision can only be made once per coordination context,
and may not be changed afterwards.
+ *
+ * "cancelOrCompensateAllParticipants" tells the coordinator to direct all
participants depending on their
+ * current state to either CANCEL or COMPENSATE. Participants who EXITed
before are ignored, as well as those
+ * who FAULTed. It is always (while the transaction is undecided) allowed to
decide to cancelOrCompensate.
+ *
+ * "closeAllParticipants" tells the coordinator to direct all participants to
CLOSE, while ignoring
+ * those who already EXITed the transaction. It is only allowed to decide to
closeAll when all
+ * participants are in one of the COMPLETED, EXITING or ENDED states.
+ *
+ * @author Hannes Erven, Georg Hicker (C) 2006
+ *
+ */
+public class AtomicCoordinatorIProxy extends AbstractCoordinatorIProxy {
+
+ /**
+ * The stub object, used to make calls to the coordinator
+ */
+ protected final CoordinatorInitiatorProtocolPortType_Atomic
coordinatorStubAtomic;
+
+ /**
+ * Try to register as initiator in the given coordination context.
+ *
+ * @param ctx
+ * @throws AxisFault
+ * @throws RemoteException
+ * @throws ServiceException
+ */
+ protected AtomicCoordinatorIProxy(final CoordinationContext ctx) throws
AxisFault,
+ RemoteException, ServiceException {
+ super(ctx);
+
+ try {
+ this.coordinatorStubAtomic =
CoordinatorInitiatorProtocol_ServiceLocator
+
.getAtomicStub(this.coordinationContext,
+
this.coordinatorPort);
+ } catch (MalformedURLException e) {
+ throw new ServiceException(e);
+ }
+ }
+
+ /**
+ * Return a coordination context, containing a registration service
that is
+ * tagged with the given matchcode.
+ *
+ * @param participantMatchcode
+ * The matchcode for the participant (ATTENTION: it has to be
+ * unique)
+ * @return a coordination context
+ * @throws RemoteException
+ */
+ public CoordinationContext getCoordinationContextForParticipant(
+ final String participantMatchcode) throws
RemoteException {
+
+ final CreateCoordinationContextResponseType ctxResponseType;
+
+ try {
+ final GetCoordCtxWCodeReqType matchCodeReq =
+ new GetCoordCtxWCodeReqType();
+
+ matchCodeReq.setMatchcode(
+ participantMatchcode
+ );
+
+ ctxResponseType =
this.coordinatorStubAtomic.getCoordinationContextWithMatchcode(
+ matchCodeReq
+// participantMatchcode
+ );
+ } catch (RemoteException e) {
+ throw e;
+ }
+
+ return new
CoordinationContext(ctxResponseType.getCoordinationContext());
+ }
+
+ /**
+ * cancel or compensate all participants of the transaction with atomic
+ * outcome
+ *
+ * @return an array of all participants in the transaction and their
+ * associated states
+ * @throws RemoteException
+ */
+ public BAParticipantType[] cancelOrCompensateAllParticipants() throws
RemoteException {
+
+ final BAParticipantType[] participantList;
+ try {
+ participantList =
this.coordinatorStubAtomic.cancelOrCompensateAllParticipants();
+ } catch (RemoteException e) {
+ throw e;
+ }
+ return participantList;
+ }
+
+ /**
+ * close all participants of the transaction with atomic outcome
+ *
+ * @return an array of all participants in the transaction and their
+ * associated states
+ * @throws RemoteException
+ */
+ public BAParticipantType[] closeAllParticipants() throws
RemoteException {
+
+ final BAParticipantType[] participantList;
+ try {
+ participantList =
this.coordinatorStubAtomic.closeAllParticipants();
+ } catch (RemoteException e) {
+ throw e;
+ }
+ return participantList;
+ }
+
+ /**
+ * Return the coordinator stub.
+ * @return The stub.
+ */
+
+ protected CoordinatorInitiatorProtocolPortType_AllProtocols
getCoordinatorStub() {
+ return this.coordinatorStubAtomic;
+ }
+
+ /**
+ * Contacts the configured (see kandula.properties) activation service
to create a new
+ * atomic outcome coordination context, registers itself as initiator
there and returns
+ * the Kandula WSBAI management object for the new transaction.
+ *
+ *
+ * @return The initiator object.
+ * @throws AxisFault A fault from Axis.
+ * @throws RemoteException A fault from the Activation Service.
+ * @throws ServiceException A fault from Axis.
+ * @throws MalformedURLException Configuration error.
+ * @throws MalformedURIException Configuration error.
+ */
+ public static AtomicCoordinatorIProxy createNewContext_WithWSBAI()
+ throws AxisFault, RemoteException, ServiceException,
MalformedURIException, MalformedURLException {
+
+ final CoordinationContext cc =
AbstractCoordinatorIProxy.createCoordinationContext(
+ BACoordinator.COORDINATION_TYPE__ATOMIC
+ );
+
+ return new AtomicCoordinatorIProxy(cc);
+ }
+
+}
Added:
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/MixedCoordinatorIProxy.java
URL:
http://svn.apache.org/viewvc/webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/MixedCoordinatorIProxy.java?view=auto&rev=548472
==============================================================================
---
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/MixedCoordinatorIProxy.java
(added)
+++
webservices/kandula/branches/Kandula_1/src/java/org/apache/kandula/coordinator/ba/initiator/MixedCoordinatorIProxy.java
Mon Jun 18 13:10:20 2007
@@ -0,0 +1,199 @@
+/*
+ * Copyright 2007 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
under
+ * the License.
+ *
+ * @author Hannes Erven, Georg Hicker
+ */
+package org.apache.kandula.coordinator.ba.initiator;
+
+import java.net.MalformedURLException;
+import java.rmi.RemoteException;
+
+import javax.xml.rpc.ServiceException;
+
+import org.apache.axis.AxisFault;
+import org.apache.axis.types.URI.MalformedURIException;
+import org.apache.kandula.coordinator.CoordinationContext;
+import org.apache.kandula.coordinator.ba.coordinator.BACoordinator;
+
+import
org.apache.kandula.wsbai.CoordinatorInitiatorProtocolPortType_AllProtocols;
+import org.apache.kandula.wsbai.CoordinatorInitiatorProtocolPortType_Mixed;
+import org.apache.kandula.wsbai.CoordinatorInitiatorProtocol_ServiceLocator;
+import org.apache.kandula.wsbai.BAParticipantReferenceType;
+import org.apache.kandula.wsbai.BAParticipantType;
+
+/**
+ * This class provides methods for managing business activity contexts with a
MixedOutcome
+ * assertion.
+ *
+ * Mixed outcome means that participants are handled independently. It is
hence perfectly legal
+ * to direct one participant to close, one to compensate and one to cancel.
+ *
+ * The coordinator always checks if the message you intend to send is allowed
in the current state of the
+ * participant, and will silently ignore any commands do not comply with this
rule.
+ *
+ * @author Hannes Erven, Georg Hicker (C) 2006
+ *
+ */
+public class MixedCoordinatorIProxy extends AbstractCoordinatorIProxy {
+
+ /**
+ * The mixed initiator service location
+ */
+ protected final CoordinatorInitiatorProtocolPortType_Mixed
coordinatorStubMixed;
+
+
+ /**
+ * Try to register as initiator in the given coordination context.
+ *
+ * @param ctx
+ * @throws AxisFault
+ * @throws RemoteException
+ * @throws ServiceException
+ */
+ protected MixedCoordinatorIProxy(final CoordinationContext ctx) throws
AxisFault,
+ RemoteException, ServiceException {
+
+ super(ctx);
+
+ try {
+ this.coordinatorStubMixed =
CoordinatorInitiatorProtocol_ServiceLocator
+ .getMixedStub(this.coordinationContext,
+ this.coordinatorPort);
+ } catch (MalformedURLException e) {
+ throw new ServiceException(e);
+ }
+ }
+
+ /**
+ * complete given participants in the transaction
+ *
+ * @param participantsToComplete
+ * the participants to be completed
+ * @return an array of all participants in the transaction and their
+ * associated states
+ * @throws RemoteException
+ */
+ public BAParticipantType[] completeParticipants(
+ BAParticipantReferenceType[] participantsToComplete
+ ) throws RemoteException {
+
+ final BAParticipantType[] participantList;
+ try {
+ participantList =
this.coordinatorStubMixed.completeParticipants(participantsToComplete);
+ } catch (RemoteException e) {
+ throw e;
+ }
+ return participantList;
+ }
+
+
+ /**
+ * cancel given participants in the transaction with mixed outcome
+ *
+ * @param participantsToCancel
+ * the participants to be cancelled
+ * @return an array of all participants in the transaction and their
+ * associated states
+ * @throws RemoteException
+ */
+ public BAParticipantType[] cancelParticipants(
+ BAParticipantReferenceType[] participantsToCancel
+ ) throws RemoteException {
+
+ final BAParticipantType[] participantList;
+ try {
+ participantList =
this.coordinatorStubMixed.cancelParticipants(participantsToCancel);
+ } catch (RemoteException e) {
+ throw e;
+ }
+ return participantList;
+ }
+
+ /**
+ * close given participants in the transaction with mixed outcome
+ *
+ * @param participantsToClose
+ * the participants to be closed
+ * @return an array of all participants in the transaction and their
+ * associated states
+ * @throws RemoteException
+ */
+ public BAParticipantType[] closeParticipants(
+ BAParticipantReferenceType[] participantsToClose
+ ) throws RemoteException {
+
+ final BAParticipantType[] participantList;
+ try {
+ participantList =
this.coordinatorStubMixed.closeParticipants(participantsToClose);
+ } catch (RemoteException e) {
+ throw e;
+ }
+ return participantList;
+ }
+
+ /**
+ * compensate given participants in the transaction with mixed outcome
+ *
+ * @param participantsToCompensate
+ * the participants to be compensated
+ * @return an array of all participants in the transaction and their
+ * associated states
+ * @throws RemoteException
+ */
+ public BAParticipantType[] compensateParticipants(
+ BAParticipantReferenceType[] participantsToCompensate
+ ) throws RemoteException {
+
+ final BAParticipantType[] participantList;
+ try {
+ participantList =
this.coordinatorStubMixed.compensateParticipants(participantsToCompensate);
+ } catch (RemoteException e) {
+ throw e;
+ }
+ return participantList;
+ }
+
+ /**
+ * Return the coordinator stub.
+ * @return The stub.
+ */
+ protected CoordinatorInitiatorProtocolPortType_AllProtocols
getCoordinatorStub() {
+ return this.coordinatorStubMixed;
+ }
+
+ /**
+ * Contacts the configured (see kandula.properties) activation service
to create a new
+ * mixed outcome coordination context, registers itself as initiator
there and returns
+ * the Kandula WSBAI management object for the new transaction.
+ *
+ *
+ * @return The initiator object.
+ * @throws AxisFault A fault from Axis.
+ * @throws RemoteException A fault from the Activation Service.
+ * @throws ServiceException A fault from Axis.
+ * @throws MalformedURLException Configuration error.
+ * @throws MalformedURIException Configuration error.
+ */
+ public static MixedCoordinatorIProxy createNewContext_WithWSBAI()
+ throws AxisFault, RemoteException, ServiceException,
MalformedURIException, MalformedURLException {
+
+ final CoordinationContext cc =
AbstractCoordinatorIProxy.createCoordinationContext(
+ BACoordinator.COORDINATION_TYPE__MIXED
+ );
+
+ return new MixedCoordinatorIProxy(cc);
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]