1 package com.diasparsoftware.javax.jms.test; 2 3 import java.util.*; 4 5 import javax.jms.*; 6 7 import junit.framework.TestCase; 8 9 import com.diasparsoftware.javax.jms.*; 10 import com.sun.jms.MapMessageImpl; 11 12 public class BuildMapMessageTest extends TestCase { 13 private MapMessageImpl mapMessage; 14 private MessageBuilder messageBuilder; 15 16 protected void setUp() throws Exception { 17 mapMessage = new MapMessageImpl(); 18 messageBuilder = new MessageBuilder(); 19 } 20 21 public void testEmptyMessage() throws Exception { 22 Map empty = Collections.EMPTY_MAP; 23 messageBuilder.buildMapMessage(mapMessage, empty); 24 assertMessageEmpty(mapMessage); 25 } 26 27 public void testSingletonMap() throws Exception { 28 Map singleton = Collections.singletonMap("a", new Long(762)); 29 messageBuilder.buildMapMessage(mapMessage, singleton); 30 assertEquals(762, mapMessage.getLong("a")); 31 assertEquals(1, countBodyContentItems(mapMessage)); 32 } 33 34 public void testAllSupportedTypes() throws Exception { 35 Map content = new HashMap() { 36 { 37 put("a", new Integer(0)); 38 put("b", new Long(5678)); 39 put("c", new Double(3.142)); 40 put("d", new Float(2.718)); 41 put("e", new Character('e')); 42 put("f", new Byte((byte) 0xA3)); 43 put("g", "hello"); 44 } 45 }; 46 47 messageBuilder.buildMapMessage(mapMessage, content); 48 assertEquals(0, mapMessage.getInt("a")); 49 assertEquals(5678, mapMessage.getLong("b")); 50 assertEquals(3.142d, mapMessage.getDouble("c"), 0.0001d); 51 assertEquals(2.718f, mapMessage.getFloat("d"), 0.0001f); 52 assertEquals('e', mapMessage.getChar("e")); 53 assertEquals((byte) 0xA3, mapMessage.getByte("f")); 54 assertEquals("hello", mapMessage.getString("g")); 55 56 assertEquals(7, countBodyContentItems(mapMessage)); 57 } 58 59 public void testGenericObject() throws Exception { 60 Map singleton = Collections.singletonMap("b", new ArrayList()); 61 try { 62 messageBuilder.buildMapMessage(mapMessage, singleton); 63 fail("Added a generic object to a MapMessage!"); 64 } 65 catch (MessagingException expected) { 66 Throwable throwable = expected.getCause(); 67 assertTrue( 68 "Wrong exception type", 69 throwable instanceof MessageFormatException); 70 } 71 } 72 73 private int countBodyContentItems(MapMessage mapMessage) 74 throws JMSException { 75 76 int count = 0; 77 Enumeration mapNames = mapMessage.getMapNames(); 78 while (mapNames.hasMoreElements()) { 79 count++; 80 mapNames.nextElement(); 81 } 82 83 return count; 84 } 85 86 private void assertMessageEmpty(MapMessage mapMessage) 87 throws JMSException { 88 89 assertEquals( 90 "MapMessage is not empty.", 91 0, 92 countBodyContentItems(mapMessage)); 93 } 94 }