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