package org.jboss.jbossts.xts.servicetests.service.participant;
import com.arjuna.wst.*;
import java.util.List;
import java.util.ArrayList;
/**
* A scriptable non-durable participant for use by the XTSServiceTest service.
*/
public class VolatileTestParticipant
extends ScriptedTestParticipant
implements Volatile2PCParticipant
{
public VolatileTestParticipant(String id)
{
super(id);
}
public void addCommand(String command)
{
commands.add(command);
}
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
}
}