package org.infinispan.cli.interpreter.statement;
import javax.transaction.TransactionManager;
import org.infinispan.cli.interpreter.logging.Log;
import org.infinispan.cli.interpreter.result.EmptyResult;
import org.infinispan.cli.interpreter.result.Result;
import org.infinispan.cli.interpreter.result.StatementException;
import org.infinispan.cli.interpreter.session.Session;
import org.infinispan.util.logging.LogFactory;
/**
* Rolls back a running transaction
*
* @author Tristan Tarrant
* @since 5.2
*/
public class RollbackTransactionStatement extends AbstractTransactionStatement {
private static final Log log = LogFactory.getLog(RollbackTransactionStatement.class, Log.class);
public RollbackTransactionStatement(final String cacheName) {
super(cacheName);
}
@Override
public Result execute(Session session) throws StatementException {
TransactionManager tm = getTransactionManager(session);
if (tm == null) {
throw log.noTransactionManager();
}
try {
tm.rollback();
return EmptyResult.RESULT;
} catch (Exception e) {
throw log.cannotRollbackTransaction(e);
}
}
}