1 7 8 package org.jboss.cache.pojo.rollback; 9 10 import junit.framework.TestCase; 11 import junit.framework.Test; 12 import junit.framework.TestSuite; 13 import org.apache.commons.logging.Log; 14 import org.apache.commons.logging.LogFactory; 15 import org.jboss.cache.pojo.test.Person; 16 import org.jboss.cache.pojo.interceptors.dynamic.CacheFieldInterceptor; 17 import org.jboss.cache.pojo.PojoCache; 18 import org.jboss.cache.pojo.PojoCacheFactory; 19 import org.jboss.cache.transaction.DummyTransactionManager; 20 import org.jboss.aop.Advised; 21 import org.jboss.aop.advice.Interceptor; 22 23 import javax.transaction.TransactionManager ; 24 25 30 31 public class LocalTxUndoTest extends TestCase 32 { 33 Log log_ = LogFactory.getLog(LocalTxUndoTest.class); 34 PojoCache cache_; 35 TransactionManager tx_mgr; 36 37 public LocalTxUndoTest(String name) 38 { 39 super(name); 40 } 41 42 protected void setUp() throws Exception 43 { 44 super.setUp(); 45 log_.info("setUp() ...."); 46 String configFile = "META-INF/local-service.xml"; 47 boolean toStart = false; 48 cache_ = PojoCacheFactory.createCache(configFile, toStart); 49 cache_.start(); 50 tx_mgr = DummyTransactionManager.getInstance(); 51 52 } 53 54 protected void tearDown() throws Exception 55 { 56 super.tearDown(); 57 cache_.stop(); 58 } 59 60 62 public void testSimpleTxWithRollback1() throws Exception 63 { 64 log_.info("testSimpleTxWithRollback1() ...."); 65 Person test = new Person(); 66 test.setName("Ben"); 67 test.setAge(10); 68 69 tx_mgr.begin(); 70 cache_.attach("/a", test); 71 tx_mgr.getTransaction().rollback(); 72 assertFalse("Should not have cache interceptor ", hasCacheInterceptor(test)); 73 74 cache_.attach("/a", test); 75 } 76 77 private boolean hasCacheInterceptor(Object pojo) 78 { 79 Interceptor[] interceptors = ((Advised)pojo)._getInstanceAdvisor().getInterceptors(); 80 for(int i=0; i < interceptors.length; i++) 81 { 82 if(interceptors[i] instanceof CacheFieldInterceptor) 83 return true; 84 } 85 return false; 86 } 87 88 public void testSimpleTxWithRollback2() throws Exception 89 { 90 log_.info("testSimpleTxWithRollback2() ...."); 91 Person test = new Person(); 92 test.setName("Ben"); 93 test.setAge(10); 94 cache_.attach("/a", test); 95 96 tx_mgr.begin(); 97 cache_.detach("/a"); 98 tx_mgr.getTransaction().rollback(); 99 100 assertTrue("Should still have cache interceptor ", hasCacheInterceptor(test)); 101 cache_.detach("/a"); 102 } 103 104 public void testSimpleTxWithRollback3() throws Exception 105 { 106 log_.info("testSimpleTxWithRollback3() ...."); 107 Person test = new Person(); 108 test.setName("Ben"); 109 test.setAge(10); 110 tx_mgr.begin(); 111 cache_.attach("/a", test); 112 cache_.detach("/a"); 113 tx_mgr.getTransaction().rollback(); 114 115 assertFalse("Should not have cache interceptor ", hasCacheInterceptor(test)); 116 } 117 118 public static Test suite() throws Exception 119 { 120 return new TestSuite(LocalTxUndoTest.class); 121 } 122 123 124 public static void main(String [] args) throws Exception 125 { 126 junit.textui.TestRunner.run(LocalTxUndoTest.suite()); 127 } 128 129 } 130 | Popular Tags |