1 21 22 package com.rift.coad.util.transaction; 23 24 import junit.framework.*; 26 import javax.naming.Context ; 27 import javax.naming.InitialContext ; 28 import javax.transaction.UserTransaction ; 29 import javax.transaction.Status ; 30 import java.util.HashSet ; 31 import java.util.Set ; 32 import javax.transaction.xa.XAException ; 33 import javax.transaction.xa.XAResource ; 34 import javax.transaction.xa.Xid ; 35 36 37 import org.objectweb.jotm.Jotm; 39 40 import com.rift.coad.lib.naming.NamingDirector; 42 import com.rift.coad.lib.naming.ContextManager; 43 import com.rift.coad.lib.db.DBSourceManager; 44 45 import com.rift.coad.lib.interceptor.InterceptorFactory; 46 import com.rift.coad.lib.security.RoleManager; 47 import com.rift.coad.lib.security.ThreadsPermissionContainer; 48 import com.rift.coad.lib.security.ThreadPermissionSession; 49 import com.rift.coad.lib.security.UserSession; 50 import com.rift.coad.lib.security.user.UserSessionManager; 51 import com.rift.coad.lib.security.user.UserStoreManager; 52 import com.rift.coad.lib.security.SessionManager; 53 import com.rift.coad.lib.security.login.LoginManager; 54 import com.rift.coad.lib.thread.CoadunationThreadGroup; 55 56 import com.rift.coad.lib.configuration.Configuration; 57 import com.rift.coad.lib.configuration.ConfigurationFactory; 58 import com.rift.coad.util.lock.LockRef; 59 import com.rift.coad.util.lock.ObjectLockFactory; 60 import com.rift.coad.lib.transaction.TransactionDirector; 61 62 67 public class UserTransactionWrapperTest extends TestCase { 68 69 public class TransactionTestResource implements XAResource { 70 71 private String name = null; 73 74 77 public TransactionTestResource(String name) { 78 this.name = name; 79 } 80 81 public void commit(Xid xid, boolean b) throws XAException { 82 commit ++; 83 } 84 85 public void end(Xid xid, int i) throws XAException { 86 } 87 88 public void forget(Xid xid) throws XAException { 89 } 90 91 public int getTransactionTimeout() throws XAException { 92 return -1; 93 } 94 95 public boolean isSameRM(XAResource xAResource) throws XAException { 96 return this == xAResource; 97 } 98 99 public int prepare(Xid xid) throws XAException { 100 return -1; 101 } 102 103 public Xid [] recover(int i) throws XAException { 104 return null; 105 } 106 107 public void rollback(Xid xid) throws XAException { 108 rollback++; 109 } 110 111 public boolean setTransactionTimeout(int i) throws XAException { 112 return true; 113 } 114 115 public void start(Xid xid, int i) throws XAException { 116 System.out.println("Start on : " + name + " id [" + xid + "]"); 117 } 118 119 } 120 121 public UserTransactionWrapperTest(String testName) { 122 super(testName); 123 } 124 125 protected void setUp() throws Exception { 126 } 127 128 protected void tearDown() throws Exception { 129 } 130 131 private int rollback = 0; 132 private int commit = 0; 133 134 137 public void testUserTransactionWrapper() throws Exception { 138 System.out.println("testUserTransactionWrapper"); 139 140 ThreadsPermissionContainer permissions = new ThreadsPermissionContainer(); 142 SessionManager.init(permissions); 143 UserStoreManager userStoreManager = new UserStoreManager(); 144 UserSessionManager sessionManager = new UserSessionManager(permissions, 145 userStoreManager); 146 LoginManager.init(sessionManager,userStoreManager); 147 CoadunationThreadGroup threadGroup = new CoadunationThreadGroup(sessionManager, 149 userStoreManager); 150 151 RoleManager.getInstance(); 153 154 InterceptorFactory.init(permissions,sessionManager,userStoreManager); 155 156 Set set = new HashSet (); 158 set.add("test"); 159 UserSession user = new UserSession("test1", set); 160 permissions.putSession(new Long (Thread.currentThread().getId()), 161 new ThreadPermissionSession( 162 new Long (Thread.currentThread().getId()),user)); 163 164 NamingDirector.init(threadGroup); 166 167 TransactionDirector transactionDirector = TransactionDirector.init(); 169 170 try { 171 TransactionManager.getInstance(); 172 fail("Could retrieve a tranaction manager reference before init"); 173 } catch (TransactionException ex) { 174 System.out.println(ex.getMessage()); 175 } 176 177 ObjectLockFactory.init(); 179 TransactionManager.init(); 180 181 UserTransactionWrapper instance = new UserTransactionWrapper(); 182 183 try { 184 instance.begin(); 185 try { 186 instance.begin(); 187 TransactionManager.getInstance().bindResource( 188 new TransactionTestResource("test1"),false); 189 } finally { 190 instance.release(); 191 } 192 } finally { 193 instance.release(); 194 } 195 196 if (rollback != 1) { 197 fail("Rollback was not called on the object : " + rollback); 198 } 199 if (commit == 1) { 200 fail("Commit was called on the object"); 201 } 202 203 try { 204 instance.begin(); 205 try { 206 instance.begin(); 207 TransactionManager.getInstance().bindResource( 208 new TransactionTestResource("test2"),false); 209 } finally { 210 instance.release(); 211 } 212 instance.commit(); 213 } finally { 214 instance.release(); 215 } 216 217 if (rollback != 1) { 218 fail("Rollback was not called on the object"); 219 } 220 if (commit != 1) { 221 fail("Commit was called on the object"); 222 } 223 } 224 225 226 } 227 | Popular Tags |