public void prepare()

in src/org/apache/kandula/participant/at/ParticipantTransactionCoordinator.java [28:71]


	public void prepare(AbstractContext context)
			throws AbstractKandulaException {
		CoordinatorPortTypeRawXMLStub stub;
		ParticipantContext atContext = (ParticipantContext) context;
		atContext.lock();
		switch (context.getStatus()) {
		case (Status.CoordinatorStatus.STATUS_NONE):
			atContext.unlock();
			stub = new CoordinatorPortTypeRawXMLStub(atContext
					.getCoordinationEPR());
			stub.abortedOperation();
			break;
		case (Status.CoordinatorStatus.STATUS_PREPARING):
		case (Status.CoordinatorStatus.STATUS_PREPARED):
		case (Status.CoordinatorStatus.STATUS_COMMITTING):
			// Ignore the message
			atContext.unlock();
			break;
		case (Status.CoordinatorStatus.STATUS_PREPARED_SUCCESS):
			atContext.unlock();
			stub = new CoordinatorPortTypeRawXMLStub(atContext
					.getCoordinationEPR());
			stub.preparedOperation();
			break;
		case (Status.CoordinatorStatus.STATUS_ACTIVE):
			atContext.setStatus(Status.CoordinatorStatus.STATUS_PREPARING);
			atContext.unlock();
			KandulaAtomicResource resource = (KandulaAtomicResource)atContext.getResource();
			Vote vote = resource.prepare();
			stub = new CoordinatorPortTypeRawXMLStub(atContext
					.getCoordinationEPR());
			if (vote == Vote.ABORT) {
				stub.abortedOperation();
			} else if (vote == Vote.PREPARED) {
				stub.preparedOperation();
			} else if (vote == Vote.READ_ONLY) {
				stub.readOnlyOperation();
			}
			break;
		default:
			context.unlock();
			throw new InvalidStateException();
		}
	}