package pt.ist.fenixframework.backend.jvstmmem; import java.util.concurrent.Callable; import javax.transaction.HeuristicMixedException; import javax.transaction.HeuristicRollbackException; import javax.transaction.InvalidTransactionException; import javax.transaction.NotSupportedException; import javax.transaction.RollbackException; import javax.transaction.Status; import javax.transaction.SystemException; import pt.ist.fenixframework.Atomic; import pt.ist.fenixframework.CallableWithoutException; import pt.ist.fenixframework.CommitListener; import pt.ist.fenixframework.Transaction; import pt.ist.fenixframework.TransactionManager; public class JVSTMMemTransactionManager implements TransactionManager { @Override public void begin() { begin(false); } @Override public void begin(boolean readOnly) { jvstm.Transaction.begin(readOnly); } @Override public void commit() { jvstm.Transaction.commit(); } @Override public Transaction getTransaction() { throw new RuntimeException("Should not had been called!"); } @Override public int getStatus() throws SystemException { return Status.STATUS_ACTIVE; } @Override public void resume(javax.transaction.Transaction tx) throws InvalidTransactionException, IllegalStateException, SystemException { } @Override public void setRollbackOnly() throws IllegalStateException, SystemException { } @Override public void setTransactionTimeout(int timeout) throws SystemException { } @Override public Transaction suspend() throws SystemException { return null; } @Override public void rollback() { jvstm.Transaction.abort(); } @Override public <T> T withTransaction(Callable<T> command) { try { return jvstm.Transaction.doIt(command); } catch (Exception e) { e.printStackTrace(); System.exit(-11); return null; } } @Override public <T> T withTransaction(Callable<T> command, Atomic atomic) { try { jvstm.Transaction.beginInevitable(); T res = command.call(); jvstm.Transaction.commit(); return res; } catch (Exception e) { e.printStackTrace(); System.exit(-11); return null; } } @Override public <T> T withTransaction(CallableWithoutException<T> command) { jvstm.Transaction.beginInevitable(); T res = command.call(); jvstm.Transaction.commit(); return res; } @Override public void addCommitListener(CommitListener listener) {} @Override public void removeCommitListener(CommitListener listener) {} }