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