package com.hp.mwtests.ts.jta.cdi.transactional;
import org.junit.Assert;
import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
/**
* @author paul.robinson@redhat.com 08/05/2013
*/
public class AssertionParticipant implements XAResource {
private static Boolean committed = null;
public static void enlist() throws Exception {
Utills.getCurrentTransaction().enlistResource(new AssertionParticipant());
}
public static void assertCommitted() {
if (committed == null) {
Assert.fail("Neither committed or rolled back");
}
if (!committed) {
Assert.fail("Should have committed, but Rolled back");
}
}
public static void assertRolledBack() {
if (committed == null) {
Assert.fail("Neither committed or rolled back");
}
if (committed) {
Assert.fail("Should have rolled back, but committed");
}
}
public static void reset() {
committed = null;
}
@Override
public void commit(Xid xid, boolean b) throws XAException {
committed = true;
}
@Override
public void end(Xid xid, int i) throws XAException {
}
@Override
public void forget(Xid xid) throws XAException {
}
@Override
public int getTransactionTimeout() throws XAException {
return 0;
}
@Override
public boolean isSameRM(XAResource xaResource) throws XAException {
return false;
}
@Override
public int prepare(Xid xid) throws XAException {
return XA_OK;
}
@Override
public Xid[] recover(int i) throws XAException {
return new Xid[0];
}
@Override
public void rollback(Xid xid) throws XAException {
committed = false;
}
@Override
public boolean setTransactionTimeout(int i) throws XAException {
return false;
}
@Override
public void start(Xid xid, int i) throws XAException {
}
}