1 21 22 package com.rift.coad.daemon.messageservice; 24 25 import javax.naming.InitialContext ; 27 import javax.naming.Context ; 28 import java.sql.PreparedStatement ; 29 import java.sql.ResultSet ; 30 import java.sql.Statement ; 31 import javax.sql.DataSource ; 32 import java.util.Set ; 33 import java.util.HashSet ; 34 import javax.transaction.UserTransaction ; 35 import java.sql.Timestamp ; 36 import java.util.ArrayList ; 37 import java.util.Date ; 38 import java.util.Enumeration ; 39 import java.util.HashSet ; 40 import java.util.Iterator ; 41 import java.util.List ; 42 import java.util.Set ; 43 import javax.transaction.xa.XAException ; 44 import javax.transaction.xa.XAResource ; 45 import javax.transaction.xa.Xid ; 46 import org.hibernate.*; 47 import org.hibernate.cfg.*; 48 import org.apache.log4j.Logger; 49 import org.apache.log4j.BasicConfigurator; 50 51 import junit.framework.*; 53 54 import org.objectweb.jotm.Jotm; 56 57 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 94 public class MessageProducerImplTest extends TestCase { 95 96 public MessageProducerImplTest(String testName) { 97 super(testName); 98 } 100 101 protected void setUp() throws Exception { 102 } 103 104 protected void tearDown() throws Exception { 105 } 106 107 110 public void testMessageProducer() throws Exception { 111 System.out.println("testMessageProducer"); 112 113 Thread.currentThread().setContextClassLoader(this.getClass(). 114 getClassLoader()); 115 116 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 CoadunationThreadGroup threadGroup = new CoadunationThreadGroup(sessionManager, 125 userStoreManager); 126 127 RoleManager.getInstance(); 129 130 InterceptorFactory.init(permissions,sessionManager,userStoreManager); 131 132 Set set = new HashSet (); 134 set.add("test"); 135 UserSession user = new UserSession("test1", set); 136 permissions.putSession(new Long (Thread.currentThread().getId()), 137 new ThreadPermissionSession( 138 new Long (Thread.currentThread().getId()),user)); 139 140 ThreadGroupManager.getInstance().initThreadGroup(threadGroup); 142 143 144 NamingDirector.init(threadGroup); 146 147 TransactionDirector transactionDirector = TransactionDirector.init(); 149 150 DBSourceManager.init(); 152 Context context = new InitialContext (); 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 ut = 167 (UserTransaction )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 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 |