KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > rift > coad > daemon > messageservice > MessageProducerImplTest


1 /*
2  * MessageQueueClient: The message queue client 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  * MessageProducerImplTest.java
20  */

21
22 // package path
23
package com.rift.coad.daemon.messageservice;
24
25 // java imports
26
import javax.naming.InitialContext JavaDoc;
27 import javax.naming.Context JavaDoc;
28 import java.sql.PreparedStatement JavaDoc;
29 import java.sql.ResultSet JavaDoc;
30 import java.sql.Statement JavaDoc;
31 import javax.sql.DataSource JavaDoc;
32 import java.util.Set JavaDoc;
33 import java.util.HashSet JavaDoc;
34 import javax.transaction.UserTransaction JavaDoc;
35 import java.sql.Timestamp JavaDoc;
36 import java.util.ArrayList JavaDoc;
37 import java.util.Date JavaDoc;
38 import java.util.Enumeration JavaDoc;
39 import java.util.HashSet JavaDoc;
40 import java.util.Iterator JavaDoc;
41 import java.util.List JavaDoc;
42 import java.util.Set JavaDoc;
43 import javax.transaction.xa.XAException JavaDoc;
44 import javax.transaction.xa.XAResource JavaDoc;
45 import javax.transaction.xa.Xid JavaDoc;
46 import org.hibernate.*;
47 import org.hibernate.cfg.*;
48 import org.apache.log4j.Logger;
49 import org.apache.log4j.BasicConfigurator;
50
51 // junit imports
52
import junit.framework.*;
53
54 // object web imports
55
import org.objectweb.jotm.Jotm;
56
57 // coadunation imports
58
import com.rift.coad.lib.naming.NamingDirector;
59 import com.rift.coad.lib.naming.ContextManager;
60 import com.rift.coad.lib.db.DBSourceManager;
61 import com.rift.coad.lib.common.ObjectSerializer;
62 import com.rift.coad.lib.interceptor.InterceptorFactory;
63 import com.rift.coad.lib.security.RoleManager;
64 import com.rift.coad.lib.security.ThreadsPermissionContainer;
65 import com.rift.coad.lib.security.ThreadPermissionSession;
66 import com.rift.coad.lib.security.UserSession;
67 import com.rift.coad.lib.security.user.UserSessionManager;
68 import com.rift.coad.lib.security.user.UserStoreManager;
69 import com.rift.coad.lib.security.SessionManager;
70 import com.rift.coad.lib.security.login.LoginManager;
71 import com.rift.coad.lib.thread.CoadunationThreadGroup;
72 import com.rift.coad.lib.transaction.TransactionDirector;
73 import com.rift.coad.daemon.messageservice.Message;
74 import com.rift.coad.daemon.messageservice.RPCMessage;
75 import com.rift.coad.daemon.messageservice.TextMessage;
76 import com.rift.coad.daemon.messageservice.MessageManager;
77 import com.rift.coad.daemon.messageservice.MessageServiceException;
78 import com.rift.coad.daemon.messageservice.MessageServiceImpl;
79 import com.rift.coad.daemon.messageservice.db.*;
80 import com.rift.coad.daemon.messageservice.message.MessageImpl;
81 import com.rift.coad.daemon.messageservice.message.RPCMessageImpl;
82 import com.rift.coad.daemon.messageservice.message.TextMessageImpl;
83 import com.rift.coad.hibernate.util.HibernateUtil;
84 import com.rift.coad.util.lock.ObjectLockFactory;
85 import com.rift.coad.util.transaction.TransactionManager;
86 import com.rift.coad.lib.thread.ThreadGroupManager;
87 import com.rift.coad.util.change.ChangeLog;
88
89
90 /**
91  *
92  * @author Brett Chaldecott
93  */

94 public class MessageProducerImplTest extends TestCase {
95     
96     public MessageProducerImplTest(String JavaDoc testName) {
97         super(testName);
98         //BasicConfigurator.configure();
99
}
100
101     protected void setUp() throws Exception JavaDoc {
102     }
103
104     protected void tearDown() throws Exception JavaDoc {
105     }
106
107     /**
108      * Test of com.rift.coad.daemon.messageservice.MessageProducerImpl.
109      */

110     public void testMessageProducer() throws Exception JavaDoc {
111         System.out.println("testMessageProducer");
112         
113         Thread.currentThread().setContextClassLoader(this.getClass().
114                 getClassLoader());
115         
116         // init the session information
117
ThreadsPermissionContainer permissions = new ThreadsPermissionContainer();
118         SessionManager.init(permissions);
119         UserStoreManager userStoreManager = new UserStoreManager();
120         UserSessionManager sessionManager = new UserSessionManager(permissions,
121                 userStoreManager);
122         LoginManager.init(sessionManager,userStoreManager);
123         // instanciate the thread manager
124
CoadunationThreadGroup threadGroup = new CoadunationThreadGroup(sessionManager,
125             userStoreManager);
126         
127         // add a user to the session for the current thread
128
RoleManager.getInstance();
129         
130         InterceptorFactory.init(permissions,sessionManager,userStoreManager);
131         
132         // add a new user object and add to the permission
133
Set JavaDoc set = new HashSet JavaDoc();
134         set.add("test");
135         UserSession user = new UserSession("test1", set);
136         permissions.putSession(new Long JavaDoc(Thread.currentThread().getId()),
137                 new ThreadPermissionSession(
138                 new Long JavaDoc(Thread.currentThread().getId()),user));
139         
140         // instanciate the thread manager
141
ThreadGroupManager.getInstance().initThreadGroup(threadGroup);
142         
143         
144         // init the naming director
145
NamingDirector.init(threadGroup);
146         
147         // instanciate the transaction director
148
TransactionDirector transactionDirector = TransactionDirector.init();
149         
150         // init the database source
151
DBSourceManager.init();
152         Context JavaDoc context = new InitialContext JavaDoc();
153         ObjectLockFactory.init();
154         TransactionManager.init();
155         ChangeLog.init(MessageServiceImpl.class);
156         ChangeLog.getInstance().start();
157         
158         MessageProducerImpl instance = new MessageProducerImpl();
159         
160         Producer result = instance.createProducer("test1");
161         Producer result2 = instance.createProducer("test1");
162         if (result == result2) {
163             fail("Should get a new producer every time");
164         }
165         
166         UserTransaction JavaDoc ut =
167                 (UserTransaction JavaDoc)context.lookup("java:comp/UserTransaction");
168         
169         
170         RPCMessage rpcMessage = result.createRPCMessage(Message.POINT_TO_POINT);
171         if (rpcMessage.getProcessedDate() == null) {
172             fail("The processed date is equal to null");
173         }
174         rpcMessage.setMethodBodyXML("xml body");
175         ut.begin();
176         result.submit(rpcMessage);
177         ut.commit();
178         
179         TextMessage textMessage = result.createTextMessage(
180                 Message.POINT_TO_POINT);
181         textMessage.setTextBody("Text body");
182         ut.begin();
183         result.submit(textMessage);
184         ut.commit();
185         
186         Thread.sleep(30000);
187         
188         ut.begin();
189         Session session = HibernateUtil.getInstance(MessageServiceImpl.class).
190                 getSession();
191         List JavaDoc messages = session.createQuery("From Message as msg").list();
192         if (messages.size() != 2) {
193             fail("Did not create enough messages");
194         }
195         ut.commit();
196         
197         Thread.sleep(30000);
198         
199         ChangeLog.getInstance().terminate();
200     }
201     
202 }
203
Popular Tags