KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > rift > coad > lib > transaction > TransactionDirectorTest


1 /*
2  * CoadunationLib: The coaduntion implementation library.
3  * Copyright (C) 2006 Rift IT Contracting
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  *
19  * TransactionDirectorTest.java
20  *
21  * JUnit based test
22  */

23
24 package com.rift.coad.lib.transaction;
25
26 // java imports
27
import javax.naming.InitialContext JavaDoc;
28 import javax.naming.Context JavaDoc;
29 import java.sql.PreparedStatement JavaDoc;
30 import java.sql.ResultSet JavaDoc;
31 import java.sql.Statement JavaDoc;
32 import javax.sql.DataSource JavaDoc;
33 import java.util.Set JavaDoc;
34 import java.util.HashSet JavaDoc;
35 import javax.transaction.UserTransaction JavaDoc;
36 import javax.transaction.TransactionManager JavaDoc;
37
38 // junit imports
39
import junit.framework.*;
40
41 // object web imports
42
import org.objectweb.jotm.Jotm;
43
44 // coadunation imports
45
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 /**
61  *
62  * @author mincemeat
63  */

64 public class TransactionDirectorTest extends TestCase {
65     
66     public TransactionDirectorTest(String JavaDoc testName) {
67         super(testName);
68     }
69
70     protected void setUp() throws Exception JavaDoc {
71     }
72
73     protected void tearDown() throws Exception JavaDoc {
74     }
75
76     public static Test suite() {
77         TestSuite suite = new TestSuite(TransactionDirectorTest.class);
78         
79         return suite;
80     }
81
82     /**
83      * Test of TransactionDirector, of class com.rift.coad.lib.transaction.TransactionDirector.
84      */

85     public void testTransactionDirector() throws Exception JavaDoc {
86         System.out.println("TransactionDirector");
87         
88         // init the session information
89
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         // instanciate the thread manager
96
CoadunationThreadGroup threadGroup = new CoadunationThreadGroup(sessionManager,
97             userStoreManager);
98         
99         // add a user to the session for the current thread
100
RoleManager.getInstance();
101         
102         InterceptorFactory.init(permissions,sessionManager,userStoreManager);
103         
104         // add a new user object and add to the permission
105
Set JavaDoc set = new HashSet JavaDoc();
106         set.add("test");
107         UserSession user = new UserSession("test1", set);
108         permissions.putSession(new Long JavaDoc(Thread.currentThread().getId()),
109                 new ThreadPermissionSession(
110                 new Long JavaDoc(Thread.currentThread().getId()),user));
111         
112         // init the naming director
113
NamingDirector.init(threadGroup);
114         
115         // instanciate the transaction director
116
TransactionDirector result = TransactionDirector.init();
117         
118         if (result != TransactionDirector.getInstance()) {
119             fail("Singleton does not operate correctly");
120         }
121         
122         // init the database source
123
DBSourceManager.init();
124         
125         Context JavaDoc context = new InitialContext JavaDoc();
126         DataSource JavaDoc ds = (DataSource JavaDoc)context.lookup("java:comp/env/jdbc/test");
127         Object JavaDoc ref = context.lookup("java:comp/UserTransaction");
128         System.out.println("User transaction is [" + ref.getClass().getName() + "]");
129         UserTransaction JavaDoc ut =
130                 (UserTransaction JavaDoc)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 JavaDoc conn = ds.getConnection();
139         ut.begin();
140         
141         Statement JavaDoc stmt = conn.createStatement();
142         stmt.execute("INSERT INTO test (id) VALUES (1)");
143         ResultSet JavaDoc 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