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");
}
}
}