package org.jboss.seam.transaction;
import static org.jboss.seam.annotations.Install.FRAMEWORK;
import javax.persistence.EntityManager;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
/**
* When no kind of transaction management exists.
*
* @author Mike Youngstrom
* @author Gavin King
*
*/
@Name("org.jboss.seam.transaction.transaction")
@Scope(ScopeType.EVENT)
@Install(value = false, precedence = FRAMEWORK)
@BypassInterceptors
public class NoTransaction extends AbstractUserTransaction
{
public void begin() throws NotSupportedException, SystemException
{
throw new UnsupportedOperationException("no transaction");
}
public void commit() throws RollbackException, HeuristicMixedException,
HeuristicRollbackException, SecurityException, IllegalStateException, SystemException
{
throw new UnsupportedOperationException("no transaction");
}
public int getStatus() throws SystemException
{
return Status.STATUS_NO_TRANSACTION;
}
public void rollback() throws IllegalStateException, SecurityException, SystemException
{
throw new UnsupportedOperationException("no transaction");
}
public void setRollbackOnly() throws IllegalStateException, SystemException
{
throw new UnsupportedOperationException("no transaction");
}
public void setTransactionTimeout(int timeout) throws SystemException
{
throw new UnsupportedOperationException("no transaction");
}
@Override
public void registerSynchronization(Synchronization sync)
{
throw new UnsupportedOperationException("no transaction");
}
@Override
public void enlist(EntityManager entityManager) throws SystemException
{
//no-op
}
}