public void completeOperation()

in src/org/apache/kandula/coordinator/ba/BACoordinator.java [79:135]


	public void completeOperation(BAActivityContext baContext) throws AbstractKandulaException {
		baContext.lock();
		switch (baContext.getStatus()) {
		case BACoordinatorStatus.STATUS_ACTIVE:
		case BACoordinatorStatus.STATUS_COMPLETING:
			baContext.unlock();
			baContext.setStatus(BACoordinatorStatus.STATUS_COMPLETING);
			Hashtable coordinatorCompletionParticipants = baContext
					.getCoordinatorCompletionParticipants();
			Iterator participantIterator = coordinatorCompletionParticipants.values().iterator();
			baContext.incrementCompletingParticipantCount(coordinatorCompletionParticipants.size());
			BACoordinatorCompletionParticipantServiceStub participantServiceStub;
			try {
				participantServiceStub = new BACoordinatorCompletionParticipantServiceStub(
						KandulaConfiguration.getInstance()
								.getCoordinatorAxis2ConfigurationContext(), null);
			} catch (Exception e1) {
				log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
						+ " : completeOperation : " + e1);
				throw new KandulaGeneralException(e1);
			}
			while (participantIterator.hasNext()) {
				Object object = (participantIterator.next());
				BAParticipantInformation participant = (BAParticipantInformation) object;
				try {
					participantServiceStub._getServiceClient().getOptions().setTo(
							participant.getEpr());
					Complete completeParam = new Complete();
					completeParam.setComplete(new NotificationType());
					participant.setStatus(BACoordinatorStatus.STATUS_COMPLETING);
					participantServiceStub.CompleteOperation(completeParam);
				} catch (Exception e) {
					log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
							+ " : completeOperation :" + participant.getEnlistmentId() + " : " + e);
					throw new KandulaGeneralException(e);
				}
			}
			break;
		case BACoordinatorStatus.STATUS_CANCELLING:
		case BACoordinatorStatus.STATUS_COMPLETED:
		case BACoordinatorStatus.STATUS_CLOSING:
		case BACoordinatorStatus.STATUS_COMPENSATING:
		case BACoordinatorStatus.STATUS_FAULTING:
		case BACoordinatorStatus.STATUS_EXITING:
		case BACoordinatorStatus.STATUS_ENDED:
			baContext.unlock();
			log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
					+ " : completeOperation : Coordinator is in" + baContext.getStatus()
					+ " (invalid) state");
			throw new InvalidStateException("Coordinator is in" + baContext.getStatus() + "state");
		default:
			log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
					+ " : completeOperation : Coordinator is in" + baContext.getStatus()
					+ " (invalid) state, Defaulting");
			throw new InvalidStateException("Coordinator is in" + baContext.getStatus() + "state");
		}
	}