in src/org/apache/kandula/coordinator/ba/BACoordinator.java [364:399]
public void exitOperation(BAActivityContext baContext, String enlistmentID)
throws AbstractKandulaException {
BAParticipantInformation cancelingParticipant = baContext.getParticipant(enlistmentID);
switch (cancelingParticipant.getStatus()) {
case BACoordinatorStatus.STATUS_COMPLETED:
case BACoordinatorStatus.STATUS_CLOSING:
case BACoordinatorStatus.STATUS_COMPENSATING:
case BACoordinatorStatus.STATUS_FAULTING_COMPENSATING:
case BACoordinatorStatus.STATUS_FAULTING_ACTIVE:
case BACoordinatorStatus.STATUS_FAULTING_COMPLETING:
log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
+ " : exitOperation : Coordinator is in" + baContext.getStatus()
+ " (invalid) state");
throw new InvalidStateException("Coordinator is in" + baContext.getStatus() + "state");
case BACoordinatorStatus.STATUS_EXITING:
break;
case BACoordinatorStatus.STATUS_ENDED:
//resend exited
break;
case BACoordinatorStatus.STATUS_ACTIVE:
case BACoordinatorStatus.STATUS_CANCELLING_ACTIVE:
case BACoordinatorStatus.STATUS_CANCELLING_COMPLETING:
case BACoordinatorStatus.STATUS_COMPLETING:
case BACoordinatorStatus.STATUS_CANCELLING:
cancelingParticipant.setStatus(BACoordinatorStatus.STATUS_EXITING);
exited(baContext,cancelingParticipant);
baContext.removeParticipant(enlistmentID);
break;
default:
log.fatal("WS_BA : " + baContext.getCoordinationContext().getActivityID()
+ " : exitOperation : Coordinator is in" + baContext.getStatus()
+ " (invalid) state, Defaulting");
throw new InvalidStateException("Coordinator is in" + baContext.getStatus() + "state");
}
}