package org.jboss.jbossts.xts.servicetests.service.participant; import com.arjuna.wst.*; import java.io.Serializable; /** * A scriptable durable participant for use by the XTSServiceTest service. */ public class DurableTestParticipant extends ScriptedTestParticipant implements Durable2PCParticipant, Serializable { // constructor for recovery only protected DurableTestParticipant() { } public DurableTestParticipant(String id) { super(id); } public Vote prepare() throws WrongStateException, SystemException { for (String s : commands) { if (s.equals("prepare")) { commands.remove(s); return new Prepared(); } else if (s.equals("prepareReadOnly")) { commands.remove(s); return new ReadOnly(); } else if (s.equals("prepareAbort")) { commands.remove(s); return new Aborted(); } else if (s.equals("prepareWrongStateException")) { commands.remove(s); throw new WrongStateException("DurableTestParticipant prepare : " + id); } else if (s.equals("prepareSystemException")) { commands.remove(s); throw new SystemException("DurableTestParticipant prepare : " + id); } } // default behaviour is just to prepare return new Prepared(); } public void commit() throws WrongStateException, SystemException { for (String s : commands) { if (s.equals("commit")) { commands.remove(s); return; } else if (s.equals("commitWrongStateException")) { commands.remove(s); throw new WrongStateException("DurableTestParticipant commit : " + id); } else if (s.equals("commitSystemException")) { commands.remove(s); throw new SystemException("DurableTestParticipant commit : " + id); } } // default behaviour is just to commit return; } public void rollback() throws WrongStateException, SystemException { for (String s : commands) { if (s.equals("rollback")) { commands.remove(s); return; } else if (s.equals("rollbackWrongStateException")) { commands.remove(s); throw new WrongStateException("DurableTestParticipant rollback : " + id); } else if (s.equals("rollbackSystemException")) { commands.remove(s); throw new SystemException("DurableTestParticipant rollback : " + id); } } // default behaviour is just to rollback return; } public void unknown() throws SystemException { // do nothing } public void error() throws SystemException { // do nothing } }