1
2
3
4
5
6
7 package org.mule.transport.jms.config;
8
9 import org.mule.api.MuleException;
10 import org.mule.api.endpoint.EndpointException;
11 import org.mule.api.endpoint.ImmutableEndpoint;
12 import org.mule.api.endpoint.InboundEndpoint;
13 import org.mule.api.lifecycle.InitialisationException;
14 import org.mule.api.routing.filter.Filter;
15 import org.mule.routing.filters.logic.NotFilter;
16 import org.mule.service.ServiceCompositeMessageSource;
17 import org.mule.tck.junit4.FunctionalTestCase;
18 import org.mule.tck.testmodels.mule.TestTransactionFactory;
19 import org.mule.transaction.MuleTransactionConfig;
20 import org.mule.transaction.XaTransactionFactory;
21 import org.mule.transport.jms.JmsConnector;
22 import org.mule.transport.jms.JmsConstants;
23 import org.mule.transport.jms.filters.JmsPropertyFilter;
24 import org.mule.transport.jms.filters.JmsSelectorFilter;
25 import org.mule.transport.jms.test.TestConnectionFactory;
26 import org.mule.transport.jms.test.TestRedeliveryHandler;
27 import org.mule.transport.jms.test.TestRedeliveryHandlerFactory;
28
29 import javax.jms.Session;
30
31 import org.junit.Test;
32
33 import static org.junit.Assert.assertEquals;
34 import static org.junit.Assert.assertFalse;
35 import static org.junit.Assert.assertNotNull;
36 import static org.junit.Assert.assertNull;
37 import static org.junit.Assert.assertTrue;
38
39
40
41
42 public class JmsNamespaceHandlerTestCase extends FunctionalTestCase
43 {
44 public JmsNamespaceHandlerTestCase()
45 {
46 setStartContext(false);
47 }
48
49 @Override
50 protected String getConfigResources()
51 {
52 return "jms-namespace-config.xml";
53 }
54
55 @Test
56 public void testDefaultConfig() throws Exception
57 {
58 JmsConnector c = (JmsConnector)muleContext.getRegistry().lookupConnector("jmsConnectorDefaults");
59 assertNotNull(c);
60
61 assertNotNull(c.getConnectionFactory());
62 assertTrue(c.getConnectionFactory() instanceof TestConnectionFactory);
63 assertEquals(Session.AUTO_ACKNOWLEDGE, c.getAcknowledgementMode());
64 assertNull(c.getUsername());
65 assertNull(c.getPassword());
66
67 assertNotNull(c.getRedeliveryHandlerFactory());
68 assertTrue(c.getRedeliveryHandlerFactory() instanceof TestRedeliveryHandlerFactory);
69 assertTrue(c.getRedeliveryHandlerFactory().create() instanceof TestRedeliveryHandler);
70
71 assertNull(c.getClientId());
72 assertFalse(c.isDurable());
73 assertFalse(c.isNoLocal());
74 assertFalse(c.isPersistentDelivery());
75 assertEquals(0, c.getMaxRedelivery());
76 assertFalse(c.isCacheJmsSessions());
77 assertTrue(c.isEagerConsumer());
78 assertEquals(4, c.getNumberOfConcurrentTransactedReceivers());
79 assertFalse(c.isEmbeddedMode());
80 }
81
82 @Test
83 public void testConnectorConfig() throws Exception
84 {
85 JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsConnector1");
86 assertNotNull(c);
87
88 assertNotNull(c.getConnectionFactory());
89
90 assertTrue(c.getConnectionFactory() instanceof TestConnectionFactory);
91 assertEquals(Session.DUPS_OK_ACKNOWLEDGE, c.getAcknowledgementMode());
92 assertEquals("myuser", c.getUsername());
93 assertEquals("mypass", c.getPassword());
94
95 assertNotNull(c.getRedeliveryHandlerFactory());
96 assertTrue(c.getRedeliveryHandlerFactory().create() instanceof TestRedeliveryHandler);
97
98 assertEquals("myClient", c.getClientId());
99 assertTrue(c.isDurable());
100 assertTrue(c.isNoLocal());
101 assertTrue(c.isPersistentDelivery());
102 assertEquals(5, c.getMaxRedelivery());
103 assertTrue(c.isCacheJmsSessions());
104 assertFalse(c.isEagerConsumer());
105
106 assertEquals("1.1", c.getSpecification());
107
108 assertEquals(7, c.getNumberOfConcurrentTransactedReceivers());
109 assertTrue(c.isEmbeddedMode());
110 }
111
112 @Test
113 public void testCustomConnectorConfig() throws Exception
114 {
115 JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsConnector2");
116 assertNotNull(c);
117
118 assertEquals("1.1", c.getSpecification());
119 }
120
121 @Test
122 public void testTestConnectorConfig() throws Exception
123 {
124 JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsConnector3");
125 assertNotNull(c);
126
127 assertNotNull(c.getConnectionFactory());
128
129 assertTrue(c.getConnectionFactory() instanceof TestConnectionFactory);
130 assertEquals(Session.DUPS_OK_ACKNOWLEDGE, c.getAcknowledgementMode());
131
132 assertNotNull(c.getRedeliveryHandlerFactory());
133 assertTrue(c.getRedeliveryHandlerFactory().create() instanceof TestRedeliveryHandler);
134
135 assertEquals("myClient", c.getClientId());
136 assertTrue(c.isDurable());
137 assertTrue(c.isNoLocal());
138 assertTrue(c.isPersistentDelivery());
139 assertEquals(5, c.getMaxRedelivery());
140 assertTrue(c.isCacheJmsSessions());
141 assertFalse(c.isEagerConsumer());
142
143 assertEquals("1.1", c.getSpecification());
144 }
145
146 @Test
147 public void testEndpointConfig() throws MuleException
148 {
149 ImmutableEndpoint endpoint1 = muleContext.getRegistry().lookupEndpointBuilder("endpoint1").buildInboundEndpoint();
150 assertNotNull(endpoint1);
151 Filter filter1 = endpoint1.getFilter();
152 assertNotNull(filter1);
153 assertTrue(filter1 instanceof JmsSelectorFilter);
154 assertEquals(1, endpoint1.getProperties().size());
155 assertEquals("true", endpoint1.getProperty(JmsConstants.DISABLE_TEMP_DESTINATIONS_PROPERTY));
156
157 ImmutableEndpoint endpoint2 = muleContext.getRegistry().lookupEndpointBuilder("endpoint2").buildOutboundEndpoint();
158 assertNotNull(endpoint2);
159 Filter filter2 = endpoint2.getFilter();
160 assertNotNull(filter2);
161 assertTrue(filter2 instanceof NotFilter);
162 Filter filter3 = ((NotFilter) filter2).getFilter();
163 assertNotNull(filter3);
164 assertTrue(filter3 instanceof JmsPropertyFilter);
165
166 InboundEndpoint inboundEndpoint = (InboundEndpoint) ((ServiceCompositeMessageSource) muleContext.getRegistry().lookupService("testService").getMessageSource()).getEndpoints().get(0);
167 assertNotNull(inboundEndpoint);
168 assertEquals(1, inboundEndpoint.getProperties().size());
169 assertEquals("testCustomDurableName", inboundEndpoint.getProperty(JmsConstants.DURABLE_NAME_PROPERTY));
170 }
171
172 @Test
173 public void testCustomTransactions() throws EndpointException, InitialisationException
174 {
175 ImmutableEndpoint endpoint3 = muleContext.getRegistry().lookupEndpointBuilder("endpoint3").buildInboundEndpoint();
176 assertNotNull(endpoint3);
177 TestTransactionFactory factory = (TestTransactionFactory) endpoint3.getTransactionConfig().getFactory();
178 assertNotNull(factory);
179 assertEquals("foo", factory.getValue());
180 }
181
182 @Test
183 public void testXaTransactions() throws Exception
184 {
185 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointBuilder("endpoint4").buildInboundEndpoint();
186 assertNotNull(endpoint);
187 assertEquals(XaTransactionFactory.class,
188 endpoint.getTransactionConfig().getFactory().getClass());
189 assertEquals(MuleTransactionConfig.ACTION_ALWAYS_JOIN, endpoint.getTransactionConfig().getAction());
190 }
191
192 @Test
193 public void testJndiConnectorAtributes() throws Exception
194 {
195 JmsConnector connector = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsJndiConnector");
196 assertNotNull(connector);
197
198 assertEquals("org.mule.transport.jms.test.JmsTestContextFactory", connector.getJndiInitialFactory());
199 assertEquals("jndi://test", connector.getJndiProviderUrl());
200 assertEquals("jms/connectionFactory", connector.getConnectionFactoryJndiName());
201 assertEquals("org.mule.transport.jms.test.TestConnectionFactory", connector.getConnectionFactory().getClass().getName());
202 assertTrue(connector.isJndiDestinations());
203 assertTrue(connector.isForceJndiDestinations());
204 assertEquals("value", connector.getJndiProviderProperties().get("key"));
205 assertEquals("customValue", connector.getConnectionFactoryProperties().get("customProperty"));
206 assertEquals("customValue", ((TestConnectionFactory) connector.getConnectionFactory()).getCustomProperty());
207 }
208
209 @Test
210 public void testActiveMqConnectorConfig() throws Exception
211 {
212 JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsActiveMqConnector");
213 assertNotNull(c);
214
215 assertEquals(1, c.getNumberOfConsumers());
216
217 c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsActiveMqConnectorXa");
218 assertNotNull(c);
219
220 assertEquals(1, c.getNumberOfConsumers());
221 }
222 }