package org.jboss.jbossts.xts.servicetests.service.recovery; import org.jboss.jbossts.xts.recovery.participant.at.XTSATRecoveryModule; import org.jboss.jbossts.xts.recovery.participant.at.XTSATRecoveryManager; import org.jboss.jbossts.xts.recovery.participant.ba.XTSBARecoveryModule; import org.jboss.jbossts.xts.recovery.participant.ba.XTSBARecoveryManager; import org.jboss.jbossts.xts.servicetests.service.Constants; import org.jboss.jbossts.xts.servicetests.service.participant.DurableTestParticipant; import com.arjuna.wst.Durable2PCParticipant; import com.arjuna.wst.BusinessAgreementWithParticipantCompletionParticipant; import com.arjuna.wst.BusinessAgreementWithCoordinatorCompletionParticipant; import java.io.ObjectInputStream; /** * Application-specific WS-AT participant recovery manager for service test application, This class * is responsible for recreating application-specific durable participants from records * logged at prepare time. */ public class TestBARecoveryModule implements XTSBARecoveryModule { /** * the singleton recovery module */ private static TestBARecoveryModule theRecoveryModule = null; /** * a count of how many xts demo services are currently installed */ private static int serviceCount = 0; /** * called during deployment of a test service to ensure the recovery module for the * test is installed whenever any of the services is active */ public static void register() { if (theRecoveryModule == null) { theRecoveryModule = new TestBARecoveryModule(); } if (serviceCount == 0) { XTSBARecoveryManager.getRecoveryManager().registerRecoveryModule(theRecoveryModule); } serviceCount++; } /** * called during undeployment of a test service to ensure the recovery module for * the test is deinstalled once none of the services is active */ public static void unregister() { if (serviceCount > 0) { serviceCount--; if (serviceCount == 0) { XTSBARecoveryManager.getRecoveryManager().unregisterRecoveryModule(theRecoveryModule); } } } public BusinessAgreementWithParticipantCompletionParticipant deserializeParticipantCompletionParticipant(String id, ObjectInputStream stream) throws Exception { if (id.startsWith(Constants.PARTICIPANT_ID_PREFIX + "ParticipantCompletionParticipant")) { System.out.println("xts service test : attempting to deserialize WS-BA participant completion participant " + id); BusinessAgreementWithParticipantCompletionParticipant participant = (BusinessAgreementWithParticipantCompletionParticipant)stream.readObject(); System.out.println("xts service test : deserialized WS-BA participant completion participant " + id); return participant; } return null; } public BusinessAgreementWithParticipantCompletionParticipant recreateParticipantCompletionParticipant(String id, byte[] recoveryState) throws Exception { if (id.startsWith(Constants.PARTICIPANT_ID_PREFIX + "ParticipantCompletionParticipant")) { // this should not get called -- test WS-BA participants are saved and restored // using serialization throw new Exception("xts service test : invalid request to recreate() WS-BA participant completion participant " + id); } return null; } public BusinessAgreementWithCoordinatorCompletionParticipant deserializeCoordinatorCompletionParticipant(String id, ObjectInputStream stream) throws Exception { if (id.startsWith(Constants.PARTICIPANT_ID_PREFIX + "CoordinatorCompletionParticipant")) { System.out.println("xts service test : attempting to deserialize WS-BA coordinator completion participant " + id); BusinessAgreementWithCoordinatorCompletionParticipant participant = (BusinessAgreementWithCoordinatorCompletionParticipant)stream.readObject(); System.out.println("xts service test : deserialized WS-BA coordinator completion participant " + id); return participant; } return null; } public BusinessAgreementWithCoordinatorCompletionParticipant recreateCoordinatorCompletionParticipant(String id, byte[] recoveryState) throws Exception { if (id.startsWith(Constants.PARTICIPANT_ID_PREFIX + "CoordinatorCompletionParticipant")) { // this should not get called -- test WS-BA participants are saved and restored // using serialization throw new Exception("xts service test : invalid request to recreate() WS-BA coordinator completion participant " + id); } return null; } public void endScan() { } }