1 23 24 package com.rift.coad.lib.transaction; 25 26 import javax.naming.InitialContext ; 28 import javax.naming.Context ; 29 import java.sql.PreparedStatement ; 30 import java.sql.ResultSet ; 31 import java.sql.Statement ; 32 import javax.sql.DataSource ; 33 import java.util.Set ; 34 import java.util.HashSet ; 35 import javax.transaction.UserTransaction ; 36 import javax.transaction.TransactionManager ; 37 38 import junit.framework.*; 40 41 import org.objectweb.jotm.Jotm; 43 44 import com.rift.coad.lib.naming.NamingDirector; 46 import com.rift.coad.lib.naming.ContextManager; 47 import com.rift.coad.lib.db.DBSourceManager; 48 49 import com.rift.coad.lib.interceptor.InterceptorFactory; 50 import com.rift.coad.lib.security.RoleManager; 51 import com.rift.coad.lib.security.ThreadsPermissionContainer; 52 import com.rift.coad.lib.security.ThreadPermissionSession; 53 import com.rift.coad.lib.security.UserSession; 54 import com.rift.coad.lib.security.user.UserSessionManager; 55 import com.rift.coad.lib.security.user.UserStoreManager; 56 import com.rift.coad.lib.security.SessionManager; 57 import com.rift.coad.lib.security.login.LoginManager; 58 import com.rift.coad.lib.thread.CoadunationThreadGroup; 59 60 64 public class TransactionDirectorTest extends TestCase { 65 66 public TransactionDirectorTest(String testName) { 67 super(testName); 68 } 69 70 protected void setUp() throws Exception { 71 } 72 73 protected void tearDown() throws Exception { 74 } 75 76 public static Test suite() { 77 TestSuite suite = new TestSuite(TransactionDirectorTest.class); 78 79 return suite; 80 } 81 82 85 public void testTransactionDirector() throws Exception { 86 System.out.println("TransactionDirector"); 87 88 ThreadsPermissionContainer permissions = new ThreadsPermissionContainer(); 90 SessionManager.init(permissions); 91 UserStoreManager userStoreManager = new UserStoreManager(); 92 UserSessionManager sessionManager = new UserSessionManager(permissions, 93 userStoreManager); 94 LoginManager.init(sessionManager,userStoreManager); 95 CoadunationThreadGroup threadGroup = new CoadunationThreadGroup(sessionManager, 97 userStoreManager); 98 99 RoleManager.getInstance(); 101 102 InterceptorFactory.init(permissions,sessionManager,userStoreManager); 103 104 Set set = new HashSet (); 106 set.add("test"); 107 UserSession user = new UserSession("test1", set); 108 permissions.putSession(new Long (Thread.currentThread().getId()), 109 new ThreadPermissionSession( 110 new Long (Thread.currentThread().getId()),user)); 111 112 NamingDirector.init(threadGroup); 114 115 TransactionDirector result = TransactionDirector.init(); 117 118 if (result != TransactionDirector.getInstance()) { 119 fail("Singleton does not operate correctly"); 120 } 121 122 DBSourceManager.init(); 124 125 Context context = new InitialContext (); 126 DataSource ds = (DataSource )context.lookup("java:comp/env/jdbc/test"); 127 Object ref = context.lookup("java:comp/UserTransaction"); 128 System.out.println("User transaction is [" + ref.getClass().getName() + "]"); 129 UserTransaction ut = 130 (UserTransaction )context.lookup("java:comp/UserTransaction"); 131 if (ut == null) { 132 fail("User transaction is equal to null"); 133 } 134 if (context.lookup("java:comp/TransactionManager") == null) { 135 fail("Cannot retrieve valid transaction manager"); 136 } 137 138 java.sql.Connection conn = ds.getConnection(); 139 ut.begin(); 140 141 Statement stmt = conn.createStatement(); 142 stmt.execute("INSERT INTO test (id) VALUES (1)"); 143 ResultSet rs = stmt.executeQuery("SELECT * FROM test"); 144 if (!rs.next()) { 145 fail("Failed to retrieve result from database"); 146 } 147 148 ut.rollback(); 149 150 stmt = conn.createStatement(); 151 rs = stmt.executeQuery("SELECT * FROM test"); 152 if (rs.next()) { 153 fail("Failed: retrieved result from database"); 154 } 155 156 conn.close(); 157 158 result.stop(); 159 NamingDirector.getInstance().shutdown(); 160 } 161 162 163 } 164 | Popular Tags |