/*
* JBoss, Home of Professional Open Source.
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.aop.bean;
import org.jboss.tm.TxUtils;
import javax.naming.InitialContext;
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
/**
*
* @author <a href="mailto:bill@jboss.org">Bill Burke</a>
* @version $Revision: 81036 $
*/
public class TxPOJO
{
TransactionManager tm;
public TxPOJO() throws Exception
{
tm = (TransactionManager)new InitialContext().lookup("java:/TransactionManager");
}
public void never() {}
public void callNever() throws Exception
{
boolean exceptionThrown = false;
tm.begin();
try
{
never();
}
catch (Exception ex)
{
exceptionThrown = true;
}
tm.commit();
if (!exceptionThrown) throw new Exception("failed on mandatory no tx call");
}
public void notsupported() throws Exception
{
if (tm.getTransaction() != null) throw new Exception("notsupported() method has tx set");
}
public void callNotSupported() throws Exception
{
tm.begin();
notsupported();
tm.commit();
}
public void supports(Transaction tx) throws Exception
{
Transaction tmTx = tm.getTransaction();
if (tx != tmTx) throw new Exception("supports didn't work");
}
public boolean hasActiveTransaction() throws Exception
{
Transaction tx = tm.getTransaction();
if (tx == null)
{
System.out.println("Transaction: is null");
} // end of if ()
else
{
System.out.println("Transaction: status " + tx.getStatus() + " of tx" + tx);
} // end of else
return TxUtils.isActive(tx);
}
public void callSupportsWithTx() throws Exception
{
tm.begin();
Transaction tx = tm.getTransaction();
supports(tx);
tm.commit();
}
public void callSupportsWithoutTx() throws Exception
{
supports(null);
}
public void required() throws Exception
{
if (tm.getTransaction() == null) throw new Exception("rquired() method has no tx set");
}
public void requiresNew(Transaction tx) throws Exception
{
Transaction tmTx = tm.getTransaction();
if (tx == tmTx
|| (tx != null && tx.equals(tmTx))) throw new Exception("transactions shouldn't be equal");
if (tmTx == null) throw new Exception("tx is null in RequiresNew");
}
public void callRequiresNew() throws Exception
{
tm.begin();
Transaction tx = tm.getTransaction();
requiresNew(tx);
tm.commit();
}
public void mandatory() {}
public void callMandatoryNoTx() throws Exception
{
boolean exceptionThrown = false;
try
{
mandatory();
}
catch (Exception ex)
{
exceptionThrown = true;
}
if (!exceptionThrown) throw new Exception("failed on mandatory no tx call");
}
public void callMandatoryWithTx() throws Exception
{
tm.begin();
mandatory();
tm.commit();
}
}