1   /*
2    * Copyright 2005-2012 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springframework.ws.transport.jms.support;
18  
19  import java.net.URI;
20  import javax.jms.DeliveryMode;
21  import javax.jms.Message;
22  
23  import org.springframework.ws.transport.jms.JmsTransportConstants;
24  
25  import org.junit.Assert;
26  import org.junit.Test;
27  
28  import static org.junit.Assert.assertEquals;
29  
30  public class JmsTransportUtilsTest {
31  
32      @Test
33      public void getDestinationName() throws Exception {
34          URI uri = new URI("jms:RequestQueue?replyToName=RESP_QUEUE");
35          String destinationName = JmsTransportUtils.getDestinationName(uri);
36          assertEquals("Invalid destination", "RequestQueue", destinationName);
37  
38          uri = new URI("jms:RequestQueue");
39          destinationName = JmsTransportUtils.getDestinationName(uri);
40          assertEquals("Invalid destination", "RequestQueue", destinationName);
41      }
42  
43      @Test
44      public void getDeliveryMode() throws Exception {
45          URI uri = new URI("jms:RequestQueue?deliveryMode=NON_PERSISTENT");
46          int deliveryMode = JmsTransportUtils.getDeliveryMode(uri);
47          assertEquals("Invalid deliveryMode", DeliveryMode.NON_PERSISTENT, deliveryMode);
48  
49          uri = new URI("jms:RequestQueue?deliveryMode=PERSISTENT");
50          deliveryMode = JmsTransportUtils.getDeliveryMode(uri);
51          assertEquals("Invalid deliveryMode", DeliveryMode.PERSISTENT, deliveryMode);
52  
53          uri = new URI("jms:RequestQueue?replyToName=RESP_QUEUE");
54          deliveryMode = JmsTransportUtils.getDeliveryMode(uri);
55          assertEquals("Invalid deliveryMode", Message.DEFAULT_DELIVERY_MODE, deliveryMode);
56      }
57  
58      @Test
59      public void getMessageType() throws Exception {
60          URI uri = new URI("jms:RequestQueue?messageType=BYTESMESSAGE");
61          int messageType = JmsTransportUtils.getMessageType(uri);
62          assertEquals("Invalid messageType", JmsTransportConstants.BYTES_MESSAGE_TYPE, messageType);
63  
64          uri = new URI("jms:RequestQueue?messageType=TEXT_MESSAGE");
65          messageType = JmsTransportUtils.getMessageType(uri);
66          assertEquals("Invalid messageType", JmsTransportConstants.TEXT_MESSAGE_TYPE, messageType);
67  
68          uri = new URI("jms:RequestQueue?replyToName=RESP_QUEUE");
69          messageType = JmsTransportUtils.getMessageType(uri);
70          assertEquals("Invalid messageType", JmsTransportConstants.BYTES_MESSAGE_TYPE, messageType);
71      }
72  
73      @Test
74      public void getTimeToLive() throws Exception {
75          URI uri = new URI("jms:RequestQueue?timeToLive=100");
76          long timeToLive = JmsTransportUtils.getTimeToLive(uri);
77          assertEquals("Invalid timeToLive", 100, timeToLive);
78  
79          uri = new URI("jms:RequestQueue?replyToName=RESP_QUEUE");
80          timeToLive = JmsTransportUtils.getTimeToLive(uri);
81          assertEquals("Invalid timeToLive", Message.DEFAULT_TIME_TO_LIVE, timeToLive);
82      }
83  
84      @Test
85      public void getPriority() throws Exception {
86          URI uri = new URI("jms:RequestQueue?priority=5");
87          int priority = JmsTransportUtils.getPriority(uri);
88          assertEquals("Invalid priority", 5, priority);
89  
90          uri = new URI("jms:RequestQueue?replyToName=RESP_QUEUE");
91          priority = JmsTransportUtils.getPriority(uri);
92          assertEquals("Invalid priority", Message.DEFAULT_PRIORITY, priority);
93      }
94  
95      @Test
96      public void getReplyToName() throws Exception {
97          URI uri = new URI("jms:RequestQueue?replyToName=RESP_QUEUE");
98          String replyToName = JmsTransportUtils.getReplyToName(uri);
99          assertEquals("Invalid replyToName", "RESP_QUEUE", replyToName);
100 
101         uri = new URI("jms:RequestQueue?priority=5");
102         replyToName = JmsTransportUtils.getReplyToName(uri);
103         Assert.assertNull("Invalid replyToName", replyToName);
104     }
105 
106     @Test
107     public void jndi() throws Exception {
108         URI uri = new URI("jms:jms/REQUEST_QUEUE?replyToName=jms/REPLY_QUEUE");
109         String destination = JmsTransportUtils.getDestinationName(uri);
110         assertEquals("Invalid destination name", "jms/REQUEST_QUEUE", destination);
111 
112         String replyTo = JmsTransportUtils.getReplyToName(uri);
113         assertEquals("Invalid reply to name", "jms/REPLY_QUEUE", replyTo);
114     }
115 }