KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > rift > coad > daemon > messageservice > message > MessageManagerImplTest


1 /*
2  * MessageService: The message service daemon
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  * MessageManagerImplTest.java
20  */

21
22 // package path
23
package com.rift.coad.daemon.messageservice.message;
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.MessageError;
75 import com.rift.coad.daemon.messageservice.RPCMessage;
76 import com.rift.coad.daemon.messageservice.TextMessage;
77 import com.rift.coad.daemon.messageservice.MessageManager;
78 import com.rift.coad.daemon.messageservice.MessageServiceException;
79 import com.rift.coad.daemon.messageservice.MessageServiceImpl;
80 import com.rift.coad.daemon.messageservice.db.*;
81 import com.rift.coad.daemon.messageservice.message.MessageImpl;
82 import com.rift.coad.daemon.messageservice.message.RPCMessageImpl;
83 import com.rift.coad.daemon.messageservice.message.TextMessageImpl;
84 import com.rift.coad.hibernate.util.HibernateUtil;
85 import com.rift.coad.util.lock.ObjectLockFactory;
86 import com.rift.coad.util.transaction.TransactionManager;
87 import com.rift.coad.util.change.ChangeLog;
88 import com.rift.coad.lib.thread.ThreadGroupManager;
89
90 /**
91  * The test of the message manager
92  *
93  * @author Brett Chaldecott
94  */

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

111     public void testMessageManagerImpl() throws Exception JavaDoc {
112         System.out.println("testMessageManagerImpl");
113         
114         Thread.currentThread().setContextClassLoader(this.getClass().
115                 getClassLoader());
116         
117         // init the session information
118
ThreadsPermissionContainer permissions = new ThreadsPermissionContainer();
119         SessionManager.init(permissions);
120         UserStoreManager userStoreManager = new UserStoreManager();
121         UserSessionManager sessionManager = new UserSessionManager(permissions,
122                 userStoreManager);
123         LoginManager.init(sessionManager,userStoreManager);
124         // instanciate the thread manager
125
CoadunationThreadGroup threadGroup = new CoadunationThreadGroup(
126                 sessionManager,userStoreManager);
127         
128         // add a user to the session for the current thread
129
RoleManager.getInstance();
130         
131         InterceptorFactory.init(permissions,sessionManager,userStoreManager);
132         
133         // add a new user object and add to the permission
134
Set JavaDoc set = new HashSet JavaDoc();
135         set.add("test");
136         UserSession user = new UserSession("test1", set);
137         permissions.putSession(new Long JavaDoc(Thread.currentThread().getId()),
138                 new ThreadPermissionSession(
139                 new Long JavaDoc(Thread.currentThread().getId()),user));
140         
141         // instanciate the thread manager
142
ThreadGroupManager.getInstance().initThreadGroup(threadGroup);
143         
144         
145         // init the naming director
146
NamingDirector.init(threadGroup);
147         
148         // instanciate the transaction director
149
TransactionDirector transactionDirector = TransactionDirector.init();
150         
151         // init the database source
152
DBSourceManager.init();
153         ObjectLockFactory.init();
154         TransactionManager.init();
155         ChangeLog.init(MessageServiceImpl.class);
156         ChangeLog.getInstance().start();
157         Context JavaDoc context = new InitialContext JavaDoc();
158         
159         
160         List JavaDoc principals = new ArrayList JavaDoc(set);
161         Date JavaDoc currentTime = new Date JavaDoc();
162         TextMessageImpl textMessage = new TextMessageImpl("test","test","test",
163                 principals,Message.UNDELIVERED);
164         textMessage.setFrom("test");
165         textMessage.setTextBody("test text");
166         textMessage.setStringProperty("TESTString","TESTvalue");
167         textMessage.setBooleanProperty("TESTBoolean",true);
168         textMessage.setByteProperty("TESTByte",(byte)1);
169         textMessage.setCorrelationId("TESTCorrelationId");
170         textMessage.setDoubleProperty("TESTDouble",1.1);
171         textMessage.setFloatProperty("TESTFloat",(float)2.2);
172         textMessage.setFrom("test@test.com");
173         textMessage.setIntProperty("TESTInt",100);
174         textMessage.setLongProperty("TESTLong",(long)2000);
175         textMessage.setTargetNamedQueue("QUEUEName");
176         textMessage.setReplyNamedQueue("ReplyQUEUEName");
177         textMessage.setNextProcessDate(currentTime);
178         textMessage.setObjectProperty("TESTObject","This is a test obj");
179         textMessage.setPriority(1000);
180         textMessage.setProcessedDate(currentTime);
181         textMessage.setReply(true);
182         textMessage.setServices(new String JavaDoc[] {"test1","test2","test3"});
183         textMessage.setTarget("target");
184         textMessage.addError(1,"test error1");
185         textMessage.addError(2,"test error2");
186         UserTransaction JavaDoc ut =
187                 (UserTransaction JavaDoc)context.lookup("java:comp/UserTransaction");
188         
189         ut.begin();
190         
191         MessageManagerImpl instance = new MessageManagerImpl(textMessage);
192         
193         ut.commit();
194         
195         String JavaDoc expResult = "test";
196         String JavaDoc result = instance.getID();
197         assertEquals(expResult, result);
198         
199         ut.begin();
200         Message retrievedMessage = instance.getMessage();
201         ut.commit();
202         Date JavaDoc nextProcessTime = new Date JavaDoc(currentTime.getTime() + 1000);
203         
204         assertEquals(retrievedMessage.getMessageId(), "test");
205         System.out.println("[" +
206                 retrievedMessage.getStringProperty("TESTString")
207                 + "][TESTvalue]");
208         assertEquals(retrievedMessage.getStringProperty("TESTString"),
209                 "TESTvalue");
210         retrievedMessage.setStringProperty("TESTString","TESTvalue2");
211         assertEquals(((TextMessage)retrievedMessage).getTextBody(),
212                 "test text");
213         ((TextMessage)retrievedMessage).setTextBody("testing text again");
214         assertEquals(retrievedMessage.getBooleanProperty("TESTBoolean"),
215                 true);
216         retrievedMessage.setBooleanProperty("TESTBoolean",false);
217         assertEquals(retrievedMessage.getByteProperty("TESTByte"),
218                 (byte)1);
219         retrievedMessage.setByteProperty("TESTByte",(byte)2);
220         assertEquals(retrievedMessage.getCorrelationId(),
221                 "TESTCorrelationId");
222         retrievedMessage.setCorrelationId("TESTCorrelationId2");
223         assertEquals(retrievedMessage.getDoubleProperty("TESTDouble"),
224                 (double)1.1);
225         retrievedMessage.setDoubleProperty("TESTDouble",2.5);
226         assertEquals(retrievedMessage.getFloatProperty("TESTFloat"),
227                 (float)2.2);
228         retrievedMessage.setFloatProperty("TESTFloat",(float)4.4);
229         assertEquals(retrievedMessage.getFrom(),
230                 "test@test.com");
231         assertEquals(retrievedMessage.getIntProperty("TESTInt"),
232                 100);
233         retrievedMessage.setIntProperty("TESTInt",200);
234         assertEquals(retrievedMessage.getLongProperty("TESTLong"),
235                 (long)2000);
236         retrievedMessage.setLongProperty("TESTLong",(long)4000);
237         assertEquals(retrievedMessage.getTargetNamedQueue(),
238                 "QUEUEName");
239         assertEquals(retrievedMessage.getReplyNamedQueue(),
240                 "ReplyQUEUEName");
241         assertEquals(((MessageImpl)retrievedMessage).getNextProcessDate().
242                 getTime()/1000,currentTime.getTime()/1000);
243         ((MessageImpl)retrievedMessage).setNextProcessDate(nextProcessTime);
244         assertEquals(retrievedMessage.getObjectProperty("TESTObject"),
245                 "This is a test obj");
246         retrievedMessage.setObjectProperty("TESTObject",
247                 "this is a new object value");
248         assertEquals(retrievedMessage.getPriority(),1000);
249         retrievedMessage.setPriority(2000);
250         assertEquals(retrievedMessage.getProcessedDate().getTime()/1000,
251                 currentTime.getTime()/1000);
252         retrievedMessage.setProcessedDate(nextProcessTime);
253         assertEquals(retrievedMessage.getReply(),true);
254         assertEquals(retrievedMessage.getState(),Message.UNDELIVERED);
255         String JavaDoc[] services = retrievedMessage.getServices();
256         int foundCount = 0;
257         for (int index = 0; index < 3; index++) {
258             if (services[index].equals("test1") ||
259                     services[index].equals("test2") ||
260                     services[index].equals("test3")) {
261                 foundCount++;
262             }
263         }
264         assertEquals(foundCount,3);
265         assertEquals(retrievedMessage.getTarget(),"target");
266         assertEquals(retrievedMessage.getMessageCreater(),"test");
267         List JavaDoc retrievedPrincipals = retrievedMessage.getMessagePrincipals();
268         if (retrievedPrincipals.size() != 1) {
269             fail("Invalid list principals");
270         }
271         if (!principals.equals(retrievedPrincipals)) {
272             fail("The retrieved principals are not equal.");
273         }
274         List JavaDoc errors = retrievedMessage.getErrors();
275         if (errors.size() != 2) {
276             fail("Invalid number of errors");
277         }
278         foundCount = 0;
279         for (Iterator JavaDoc iter = errors.iterator(); iter.hasNext();){
280             com.rift.coad.daemon.messageservice.MessageError error =
281                     (com.rift.coad.daemon.messageservice.MessageError)iter.next();
282             if ((error.getLevel() == 1) &&
283                     (error.getMSG().equals("test error1"))) {
284                 foundCount++;
285             } else if ((error.getLevel() == 2) &&
286                     (error.getMSG().equals("test error2"))) {
287                 foundCount++;
288             }
289         }
290         if (foundCount != 2) {
291             fail("The errors were not stored correctly");
292         }
293         retrievedMessage.addError(3,"test error3");
294         
295         ut.begin();
296         Session session = HibernateUtil.getInstance(MessageServiceImpl.class).
297                 getSession();
298         MessageQueue messageQueue = new MessageQueue("test");
299         session.persist(messageQueue);
300         instance.updateMessage(retrievedMessage);
301         instance.assignToQueue("test");
302         ut.commit();
303         
304         ut.begin();
305         retrievedMessage = instance.getMessage();
306         ut.commit();
307         
308         assertEquals(retrievedMessage.getMessageId(), "test");
309         System.out.println("[" +
310                 retrievedMessage.getStringProperty("TESTString")
311                 + "][TESTvalue2]");
312         assertEquals(retrievedMessage.getStringProperty("TESTString"),
313                 "TESTvalue2");
314         assertEquals(((TextMessage)retrievedMessage).getTextBody(),
315                 "testing text again");
316         assertEquals(retrievedMessage.getBooleanProperty("TESTBoolean"),
317                 false);
318         assertEquals(retrievedMessage.getByteProperty("TESTByte"),
319                 (byte)2);
320         assertEquals(retrievedMessage.getDoubleProperty("TESTDouble"),
321                 (double)2.5);
322         assertEquals(retrievedMessage.getFloatProperty("TESTFloat"),
323                 (float)4.4);
324         assertEquals(retrievedMessage.getFrom(),
325                 "test@test.com");
326         assertEquals(retrievedMessage.getIntProperty("TESTInt"),
327                 200);
328         assertEquals(retrievedMessage.getLongProperty("TESTLong"),
329                 (long)4000);
330         assertEquals(retrievedMessage.getTargetNamedQueue(),
331                 "QUEUEName");
332         assertEquals(retrievedMessage.getReplyNamedQueue(),
333                 "ReplyQUEUEName");
334         assertEquals(((MessageImpl)retrievedMessage).getNextProcessDate().
335                 getTime() / 1000,nextProcessTime.getTime() / 1000);
336         assertEquals(retrievedMessage.getObjectProperty("TESTObject"),
337                 "this is a new object value");
338         assertEquals(retrievedMessage.getProcessedDate().getTime() / 1000,
339                 nextProcessTime.getTime() / 1000);
340         assertEquals(retrievedMessage.getReply(),true);
341         services = retrievedMessage.getServices();
342         foundCount = 0;
343         for (int index = 0; index < 3; index++) {
344             if (services[index].equals("test1") ||
345                     services[index].equals("test2") ||
346                     services[index].equals("test3")) {
347                 foundCount++;
348             }
349         }
350         assertEquals(foundCount,3);
351         assertEquals(retrievedMessage.getTarget(),"target");
352         
353         errors = retrievedMessage.getErrors();
354         if (errors.size() != 3) {
355             fail("Invalid number of errors");
356         }
357         foundCount = 0;
358         for (Iterator JavaDoc iter = errors.iterator(); iter.hasNext();){
359             com.rift.coad.daemon.messageservice.MessageError error =
360                     (com.rift.coad.daemon.messageservice.MessageError)iter.next();
361             if ((error.getLevel() == 1) &&
362                     (error.getMSG().equals("test error1"))) {
363                 foundCount++;
364             } else if ((error.getLevel() == 2) &&
365                     (error.getMSG().equals("test error2"))) {
366                 foundCount++;
367             } else if ((error.getLevel() == 3) &&
368                     (error.getMSG().equals("test error3"))) {
369                 foundCount++;
370             }
371         }
372         if (foundCount != 3) {
373             fail("The errors were not stored correctly");
374         }
375         
376         ut.begin();
377         instance.remove();
378         ut.commit();
379         
380         
381         currentTime = new Date JavaDoc();
382         RPCMessageImpl rpcMessage = new RPCMessageImpl("test","test","test",
383                 principals,Message.UNDELIVERED);
384         rpcMessage.setFrom("test");
385         rpcMessage.setMethodBodyXML("test text");
386         rpcMessage.setStringProperty("TESTString","TESTvalue");
387         rpcMessage.setBooleanProperty("TESTBoolean",true);
388         rpcMessage.setByteProperty("TESTByte",(byte)1);
389         rpcMessage.setCorrelationId("TESTCorrelationId");
390         rpcMessage.setDoubleProperty("TESTDouble",1.1);
391         rpcMessage.setFloatProperty("TESTFloat",(float)2.2);
392         rpcMessage.setFrom("test@test.com");
393         rpcMessage.setIntProperty("TESTInt",100);
394         rpcMessage.setLongProperty("TESTLong",(long)2000);
395         rpcMessage.setTargetNamedQueue("QUEUEName");
396         rpcMessage.setReplyNamedQueue("ReplyQUEUEName");
397         rpcMessage.setNextProcessDate(currentTime);
398         rpcMessage.setObjectProperty("TESTObject","This is a test obj");
399         rpcMessage.setPriority(1000);
400         rpcMessage.setProcessedDate(currentTime);
401         rpcMessage.setReply(true);
402         rpcMessage.setServices(new String JavaDoc[] {"test1","test2","test3"});
403         rpcMessage.setTarget("target");
404         
405         ut.begin();
406         
407         MessageManagerImpl instance2 = new MessageManagerImpl(rpcMessage);
408         
409         ut.commit();
410         
411         Thread.sleep(30000);
412         
413         ut.begin();
414         
415         MessageManagerImpl instance3 = new MessageManagerImpl("test");
416         
417         ut.commit();
418         
419         ut.begin();
420         retrievedMessage = instance2.getMessage();
421         Message retrievedMessage2 = instance3.getMessage();
422         ut.commit();
423         nextProcessTime = new Date JavaDoc(currentTime.getTime() + 1000);
424         
425         
426         assertEquals(retrievedMessage2.getMessageId(), "test");
427         assertEquals(retrievedMessage2.getStringProperty("TESTString"),
428                 "TESTvalue");
429         assertEquals(((RPCMessage)retrievedMessage2).getMethodBodyXML(),
430                 "test text");
431         assertEquals(retrievedMessage2.getBooleanProperty("TESTBoolean"),
432                 true);
433         assertEquals(retrievedMessage2.getByteProperty("TESTByte"),
434                 (byte)1);
435         assertEquals(retrievedMessage2.getCorrelationId(),
436                 "TESTCorrelationId");
437         assertEquals(retrievedMessage2.getDoubleProperty("TESTDouble"),
438                 (double)1.1);
439         assertEquals(retrievedMessage2.getFloatProperty("TESTFloat"),
440                 (float)2.2);
441         assertEquals(retrievedMessage2.getFrom(),
442                 "test@test.com");
443         assertEquals(retrievedMessage2.getIntProperty("TESTInt"),
444                 100);
445         assertEquals(retrievedMessage2.getLongProperty("TESTLong"),
446                 (long)2000);
447         assertEquals(retrievedMessage2.getTargetNamedQueue(),
448                 "QUEUEName");
449         assertEquals(retrievedMessage2.getReplyNamedQueue(),
450                 "ReplyQUEUEName");
451         assertEquals(((MessageImpl)retrievedMessage2).getNextProcessDate().
452                 getTime()/1000,currentTime.getTime()/1000);
453         assertEquals(retrievedMessage2.getObjectProperty("TESTObject"),
454                 "This is a test obj");
455         assertEquals(retrievedMessage2.getPriority(),1000);
456         assertEquals(retrievedMessage2.getProcessedDate().getTime()/1000,
457                 currentTime.getTime()/1000);
458         assertEquals(retrievedMessage2.getReply(),true);
459         services = retrievedMessage2.getServices();
460         foundCount = 0;
461         for (int index = 0; index < 3; index++) {
462             if (services[index].equals("test1") ||
463                     services[index].equals("test2") ||
464                     services[index].equals("test3")) {
465                 foundCount++;
466             }
467         }
468         assertEquals(foundCount,3);
469         assertEquals(retrievedMessage2.getTarget(),"target");
470         assertEquals(retrievedMessage2.getMessageCreater(),"test");
471         retrievedPrincipals = retrievedMessage2.getMessagePrincipals();
472         if (retrievedPrincipals.size() != 1) {
473             fail("Invalid list principals");
474         }
475         if (!principals.equals(retrievedPrincipals)) {
476             fail("The retrieved principals are not equal.");
477         }
478         
479         
480         assertEquals(retrievedMessage.getMessageId(), "test");
481         System.out.println("[" +
482                 retrievedMessage.getStringProperty("TESTString")
483                 + "][TESTvalue]");
484         assertEquals(retrievedMessage.getStringProperty("TESTString"),
485                 "TESTvalue");
486         retrievedMessage.setStringProperty("TESTString","TESTvalue2");
487         assertEquals(((RPCMessage)retrievedMessage).getMethodBodyXML(),
488                 "test text");
489         ((RPCMessage)retrievedMessage).setResult("result");
490         ((RPCMessage)retrievedMessage).setThrowable(new Exception JavaDoc("test"));
491         assertEquals(retrievedMessage.getBooleanProperty("TESTBoolean"),
492                 true);
493         retrievedMessage.setBooleanProperty("TESTBoolean",false);
494         assertEquals(retrievedMessage.getByteProperty("TESTByte"),
495                 (byte)1);
496         retrievedMessage.setByteProperty("TESTByte",(byte)2);
497         assertEquals(retrievedMessage.getCorrelationId(),
498                 "TESTCorrelationId");
499         retrievedMessage.setCorrelationId("TESTCorrelationId2");
500         assertEquals(retrievedMessage.getDoubleProperty("TESTDouble"),
501                 (double)1.1);
502         retrievedMessage.setDoubleProperty("TESTDouble",2.5);
503         assertEquals(retrievedMessage.getFloatProperty("TESTFloat"),
504                 (float)2.2);
505         retrievedMessage.setFloatProperty("TESTFloat",(float)4.4);
506         assertEquals(retrievedMessage.getFrom(),
507                 "test@test.com");
508         assertEquals(retrievedMessage.getIntProperty("TESTInt"),
509                 100);
510         retrievedMessage.setIntProperty("TESTInt",200);
511         assertEquals(retrievedMessage.getLongProperty("TESTLong"),
512                 (long)2000);
513         retrievedMessage.setLongProperty("TESTLong",(long)4000);
514         assertEquals(retrievedMessage.getTargetNamedQueue(),
515                 "QUEUEName");
516         assertEquals(retrievedMessage.getReplyNamedQueue(),
517                 "ReplyQUEUEName");
518         assertEquals(((MessageImpl)retrievedMessage).getNextProcessDate().
519                 getTime()/1000,currentTime.getTime()/1000);
520         ((MessageImpl)retrievedMessage).setNextProcessDate(nextProcessTime);
521         assertEquals(retrievedMessage.getObjectProperty("TESTObject"),
522                 "This is a test obj");
523         retrievedMessage.setObjectProperty("TESTObject",
524                 "this is a new object value");
525         assertEquals(retrievedMessage.getPriority(),1000);
526         retrievedMessage.setPriority(2000);
527         assertEquals(retrievedMessage.getProcessedDate().getTime()/1000,
528                 currentTime.getTime()/1000);
529         retrievedMessage.setProcessedDate(nextProcessTime);
530         assertEquals(retrievedMessage.getReply(),true);
531         services = retrievedMessage.getServices();
532         foundCount = 0;
533         for (int index = 0; index < 3; index++) {
534             if (services[index].equals("test1") ||
535                     services[index].equals("test2") ||
536                     services[index].equals("test3")) {
537                 foundCount++;
538             }
539         }
540         assertEquals(foundCount,3);
541         assertEquals(retrievedMessage.getTarget(),"target");
542         assertEquals(retrievedMessage.getMessageCreater(),"test");
543         retrievedPrincipals = retrievedMessage.getMessagePrincipals();
544         if (retrievedPrincipals.size() != 1) {
545             fail("Invalid list principals");
546         }
547         if (!principals.equals(retrievedPrincipals)) {
548             fail("The retrieved principals are not equal.");
549         }
550         
551         ut.begin();
552         instance2.updateMessage(retrievedMessage);
553         instance2.assignToQueue("test");
554         ut.commit();
555         
556         ut.begin();
557         retrievedMessage = instance2.getMessage();
558         
559         ut.commit();
560         
561         assertEquals(retrievedMessage.getMessageId(), "test");
562         System.out.println("[" +
563                 retrievedMessage.getStringProperty("TESTString")
564                 + "][TESTvalue2]");
565         assertEquals(retrievedMessage.getStringProperty("TESTString"),
566                 "TESTvalue2");
567         assertEquals(((RPCMessage)retrievedMessage).getMethodBodyXML(),
568                 "test text");
569         assertEquals(((RPCMessage)retrievedMessage).getResult(),
570                 "result");
571         assertEquals(((RPCMessage)retrievedMessage).getThrowable().getMessage(),
572                 "test");
573         assertEquals(retrievedMessage.getBooleanProperty("TESTBoolean"),
574                 false);
575         assertEquals(retrievedMessage.getByteProperty("TESTByte"),
576                 (byte)2);
577         assertEquals(retrievedMessage.getDoubleProperty("TESTDouble"),
578                 (double)2.5);
579         assertEquals(retrievedMessage.getFloatProperty("TESTFloat"),
580                 (float)4.4);
581         assertEquals(retrievedMessage.getFrom(),
582                 "test@test.com");
583         assertEquals(retrievedMessage.getIntProperty("TESTInt"),
584                 200);
585         assertEquals(retrievedMessage.getLongProperty("TESTLong"),
586                 (long)4000);
587         assertEquals(retrievedMessage.getTargetNamedQueue(),
588                 "QUEUEName");
589         assertEquals(retrievedMessage.getReplyNamedQueue(),
590                 "ReplyQUEUEName");
591         assertEquals(((MessageImpl)retrievedMessage).getNextProcessDate().
592                 getTime() / 1000,nextProcessTime.getTime() / 1000);
593         assertEquals(retrievedMessage.getObjectProperty("TESTObject"),
594                 "this is a new object value");
595         assertEquals(retrievedMessage.getProcessedDate().getTime() / 1000,
596                 nextProcessTime.getTime() / 1000);
597         assertEquals(retrievedMessage.getReply(),true);
598         assertEquals(retrievedMessage.getState(),Message.UNDELIVERED);
599         services = retrievedMessage.getServices();
600         foundCount = 0;
601         for (int index = 0; index < 3; index++) {
602             if (services[index].equals("test1") ||
603                     services[index].equals("test2") ||
604                     services[index].equals("test3")) {
605                 foundCount++;
606             }
607         }
608         assertEquals(foundCount,3);
609         assertEquals(retrievedMessage.getTarget(),"target");
610         
611         ut.begin();
612         instance2.remove();
613         ut.commit();
614         
615         Thread.sleep(30000);
616         
617         ChangeLog.getInstance().terminate();
618         
619     }
620
621     
622 }
623
Popular Tags