public void completedOperation()

in src/org/apache/kandula/coordinator/ba/BACoordinator.java [574:668]


	public void completedOperation(final BAActivityContext baContext, String enlistmentID) throws AbstractKandulaException {
		if (baContext == null) {
			throw new IllegalStateException("No Activity Found for this Activity ID");
		}
		BAParticipantInformation baParticipantInformation = baContext.getParticipant(enlistmentID);
	
		if (baParticipantInformation.getProtocol().equals(Constants.WS_BA_PC)) {
			switch (baParticipantInformation.getStatus()) {
			case BACoordinatorStatus.STATUS_COMPLETED:
			case BACoordinatorStatus.STATUS_FAULTING_COMPENSATING:
			case BACoordinatorStatus.STATUS_ENDED:
				break;
			case BACoordinatorStatus.STATUS_ACTIVE:
			case BACoordinatorStatus.STATUS_CANCELLING:
				baParticipantInformation.setStatus(BACoordinatorStatus.STATUS_COMPLETED);
				baContext.decrementCompletingParticipantCount();
				if (!baContext.hasMoreCompleting()) {
					baContext.setStatus(BACoordinatorStatus.STATUS_COMPLETED);
					log.debug("WS_BA : " + baContext.getCoordinationContext().getActivityID()
							+ " : " + "Decision to close.");
					BusinessActivityCallBack callBack = baContext.getCallBack();
					callBack.onComplete();
				}
				break;
			case BACoordinatorStatus.STATUS_CLOSING:
				closeOperation(baContext, baParticipantInformation.getEnlistmentId());
				break;
			case BACoordinatorStatus.STATUS_COMPENSATING:
				compensateOperation(baContext, baParticipantInformation.getEnlistmentId());
				break;
			case BACoordinatorStatus.STATUS_FAULTING_ACTIVE:
			case BACoordinatorStatus.STATUS_EXITING:
				log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
						+ " : atCompleted : Coordinator is in" + baContext.getStatus()
						+ " (invalid) state");
				throw new InvalidStateException("Coordinator is in" + baContext.getStatus()
						+ "state");
			default:
				log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
						+ " : atCompleted : Coordinator is in" + baContext.getStatus()
						+ " (invalid) state, Defaulting");
				throw new InvalidStateException("Coordinator is in" + baContext.getStatus()
						+ "state");
			}
		} else if (baParticipantInformation.getProtocol().equals(Constants.WS_BA_CC)) {
			switch (baParticipantInformation.getStatus()) {
			case BACoordinatorStatus.STATUS_COMPLETED:
			case BACoordinatorStatus.STATUS_FAULTING:
			case BACoordinatorStatus.STATUS_ENDED:
				break;
	
			case BACoordinatorStatus.STATUS_CANCELLING_COMPLETING:
			case BACoordinatorStatus.STATUS_COMPLETING:
				baParticipantInformation.setStatus(BACoordinatorStatus.STATUS_COMPLETED);
				baContext.decrementCompletingParticipantCount();
				if (!baContext.hasMoreCompleting()) {
					baContext.setStatus(BACoordinatorStatus.STATUS_COMPLETED);
					log.debug("WS_BA : " + baContext.getCoordinationContext().getActivityID()
							+ " : " + "Decision to close.");
					Runnable threadedTask = new Runnable() {
						public void run() {
							BusinessActivityCallBack callBack = baContext.getCallBack();
							callBack.onComplete();
						}
					};
					Thread thread = new Thread(threadedTask);
					thread.start();
				}
				break;
			case BACoordinatorStatus.STATUS_CLOSING:
				closeOperation(baContext, baParticipantInformation.getEnlistmentId());
				break;
			case BACoordinatorStatus.STATUS_COMPENSATING:
				compensateOperation(baContext, baParticipantInformation.getEnlistmentId());
				break;
			case BACoordinatorStatus.STATUS_FAULTING_ACTIVE:
			case BACoordinatorStatus.STATUS_FAULTING_COMPLETING:
			case BACoordinatorStatus.STATUS_EXITING:
			case BACoordinatorStatus.STATUS_ACTIVE:
			case BACoordinatorStatus.STATUS_CANCELLING_ACTIVE:
				log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
						+ " : atCompleted : Coordinator is in" + baContext.getStatus()
						+ " (invalid) state");
				throw new InvalidStateException("Coordinator is in" + baContext.getStatus()
						+ "state");
			default:
				log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
						+ " : atCompleted : Coordinator is in" + baContext.getStatus()
						+ " (invalid) state, Defaulting");
				throw new InvalidStateException("Coordinator is in" + baContext.getStatus()
						+ "state");
	
			}
		}
	}