content: /**
   * 
   */
  package org.activejpa.entity.testng;
  
  import java.lang.reflect.Method;
  
  import javax.persistence.EntityTransaction;
  
  import org.testng.IObjectFactory;
  import org.testng.ITestContext;
  import org.testng.annotations.AfterMethod;
  import org.testng.annotations.BeforeMethod;
  import org.testng.annotations.ObjectFactory;
  import org.testng.internal.ObjectFactoryImpl;
  
  /**
   * @author ganeshs
   *
   */
  public class BaseModelTest {
  	
  	private EntityTransaction txn;
  
  	@ObjectFactory
  	public IObjectFactory getObjectFactory(ITestContext context) throws Exception {
  		Class<?> clazz = Class.forName("org.activejpa.enhancer.ActiveJpaAgentLoaderImpl");
  		Method method = clazz.getMethod("loadAgent");
  		method.invoke(null);
  		return new ObjectFactoryImpl();
  	}
  	
  	@BeforeMethod
  	public void beforeMethod() throws Exception {
  		setup();
  	}
  	
  	@AfterMethod
  	public void afterMethod() throws Exception {
  		destroy();
  	}
  	
  	public void setup() throws Exception {
  		Class<?> clazz = Class.forName("org.activejpa.entity.Model");
  		Method method = clazz.getMethod("beginTxn");
  		txn = (EntityTransaction) method.invoke(null);
  	}
  	
  	public void destroy() throws Exception {
  		txn.rollback();
  	}
  }
  