@Override public void reportHeuristic(String participantId, HeuristicType heuristicType) { final ParticipantInformation participantInformation = ParticipantsContainer.getInstance().getParticipantInformation(participantId); switch (heuristicType) { case HEURISTIC_ROLLBACK: participantInformation.setStatus(TxStatus.TransactionHeuristicRollback.name()); break; case HEURISTIC_COMMIT: participantInformation.setStatus(TxStatus.TransactionHeuristicCommit.name()); break; case HEURISTIC_HAZARD: participantInformation.setStatus(TxStatus.TransactionHeuristicHazard.name()); break; case HEURISTIC_MIXED: participantInformation.setStatus(TxStatus.TransactionHeuristicMixed.name()); break; default: throw new IllegalArgumentException("Unknown heuristic type"); } RecoveryManager.getInstance().persistParticipantInformation(participantInformation); }
@Override public String enlist( final String applicationId, final String participantEnlistmentURL, final Participant participant) { if (baseUrl == null) { throw new IllegalStateException("Base URL was not defined."); } final String participantId = new Uid().toString(); final String participantUrl = getParticipantUrl(participantId, baseUrl); String participantRecoveryURL = enlistParticipant(participantUrl, participantEnlistmentURL); ParticipantInformation participantInformation = new ParticipantInformation( participantId, applicationId, participantRecoveryURL, participant); participantInformation.setStatus(TxStatus.TransactionActive.name()); ParticipantsContainer.getInstance() .addParticipantInformation(participantId, participantInformation); return participantId; }