1
2
3
4
5
6
7
8
9
10
11 package org.mule.tck;
12
13 import org.mule.api.MuleException;
14 import org.mule.api.component.InterfaceBinding;
15 import org.mule.api.component.JavaComponent;
16 import org.mule.api.endpoint.ImmutableEndpoint;
17 import org.mule.api.endpoint.InboundEndpoint;
18 import org.mule.api.endpoint.OutboundEndpoint;
19 import org.mule.api.exception.MessagingExceptionHandler;
20 import org.mule.api.model.Model;
21 import org.mule.api.processor.MessageProcessor;
22 import org.mule.api.routing.OutboundRouter;
23 import org.mule.api.routing.OutboundRouterCollection;
24 import org.mule.api.service.Service;
25 import org.mule.api.transformer.Transformer;
26 import org.mule.exception.AbstractExceptionListener;
27 import org.mule.model.resolvers.LegacyEntryPointResolverSet;
28 import org.mule.routing.ForwardingCatchAllStrategy;
29 import org.mule.routing.filters.MessagePropertyFilter;
30 import org.mule.routing.outbound.OutboundPassThroughRouter;
31 import org.mule.service.ServiceAsyncReplyCompositeMessageSource;
32 import org.mule.service.ServiceCompositeMessageSource;
33 import org.mule.tck.testmodels.fruit.FruitCleaner;
34 import org.mule.tck.testmodels.mule.TestCompressionTransformer;
35 import org.mule.tck.testmodels.mule.TestEntryPointResolverSet;
36 import org.mule.tck.testmodels.mule.TestExceptionStrategy;
37 import org.mule.tck.testmodels.mule.TestResponseAggregator;
38 import org.mule.transformer.TransformerUtils;
39 import org.mule.transformer.types.DataTypeFactory;
40
41 import java.util.List;
42 import java.util.Map;
43
44 public abstract class AbstractScriptConfigBuilderTestCase extends FunctionalTestCase
45 {
46
47
48 private boolean legacy;
49
50 protected AbstractScriptConfigBuilderTestCase()
51 {
52 this(false);
53 }
54
55 protected AbstractScriptConfigBuilderTestCase(boolean legacy)
56 {
57 this.legacy = legacy;
58 }
59
60 public void testManagerConfig() throws Exception
61 {
62 assertEquals("true", muleContext.getRegistry().lookupObject("doCompression"));
63 assertNotNull(muleContext.getTransactionManager());
64 }
65
66
67 public void testConnectorConfig() throws Exception
68 {
69 MessagingExceptionHandler es = muleContext.getRegistry().lookupModel("main").getExceptionListener();
70 assertNotNull(es);
71 assertTrue(es.getClass().getName(), es instanceof TestExceptionStrategy);
72 }
73
74 public void testGlobalEndpointConfig() throws MuleException
75 {
76 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint(
77 "fruitBowlEndpoint");
78 assertNotNull(endpoint);
79 assertEquals(endpoint.getEndpointURI().getAddress(), "fruitBowlPublishQ");
80
81 MessagePropertyFilter filter = (MessagePropertyFilter)endpoint.getFilter();
82 assertNotNull(filter);
83 assertEquals("foo=bar", filter.getPattern());
84
85 ImmutableEndpoint ep = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint("testEPWithCS");
86 assertNotNull(ep);
87 }
88
89 public void testEndpointConfig() throws MuleException
90 {
91
92 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint(
93 "waterMelonEndpoint");
94 assertNotNull(endpoint);
95
96 assertEquals("test.queue", endpoint.getEndpointURI().getAddress());
97
98 Service service = muleContext.getRegistry().lookupService("orangeComponent");
99 ImmutableEndpoint ep = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoint("Orange");
100 assertNotNull(ep);
101 final List responseTransformers = ep.getResponseTransformers();
102 assertNotNull(responseTransformers);
103 assertFalse(responseTransformers.isEmpty());
104 final Object responseTransformer = responseTransformers.get(0);
105 assertTrue(responseTransformer instanceof TestCompressionTransformer);
106 }
107
108 public void testExceptionStrategy()
109 {
110 Service service = muleContext.getRegistry().lookupService("orangeComponent");
111 assertNotNull(muleContext.getRegistry().lookupModel("main").getExceptionListener());
112 assertNotNull(service.getExceptionListener());
113
114 assertTrue(((AbstractExceptionListener) service.getExceptionListener()).getMessageProcessors().size() > 0);
115 OutboundEndpoint ep = (OutboundEndpoint) ((AbstractExceptionListener) service.getExceptionListener()).getMessageProcessors().get(0);
116
117 assertEquals("test://orange.exceptions", ep.getEndpointURI().toString());
118 }
119
120 public void testTransformerConfig()
121 {
122 Transformer t = muleContext.getRegistry().lookupTransformer("TestCompressionTransformer");
123 assertNotNull(t);
124 assertTrue(t instanceof TestCompressionTransformer);
125 assertEquals(t.getReturnDataType(), DataTypeFactory.STRING);
126 assertNotNull(((TestCompressionTransformer) t).getContainerProperty());
127 }
128
129 public void testModelConfig() throws Exception
130 {
131 Model model = muleContext.getRegistry().lookupModel("main");
132 assertNotNull(model);
133 assertEquals("main", model.getName());
134 if (legacy)
135 {
136 assertTrue(model.getEntryPointResolverSet() instanceof LegacyEntryPointResolverSet);
137 }
138 else
139 {
140 assertTrue(model.getEntryPointResolverSet() instanceof TestEntryPointResolverSet);
141 }
142 assertTrue(model.getExceptionListener() instanceof TestExceptionStrategy);
143
144 assertTrue(((AbstractExceptionListener) model.getExceptionListener()).getMessageProcessors().size() > 0);
145 OutboundEndpoint ep = (OutboundEndpoint) ((AbstractExceptionListener) model.getExceptionListener()).getMessageProcessors().get(0);
146
147 assertEquals("test://component.exceptions", ep.getEndpointURI().toString());
148
149
150 }
151
152
153
154
155
156 public void testEndpointPropertiesConfig() throws Exception
157 {
158 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getInboundEndpoint(
159 "endpointWithProps");
160
161 Map props = endpoint.getProperties();
162 assertNotNull(props);
163 assertEquals("9", props.get("segments"));
164 assertEquals("4.21", props.get("radius"));
165 assertEquals("Juicy Baby!", props.get("brand"));
166
167 assertNotNull(props.get("listProperties"));
168 List list = (List) props.get("listProperties");
169 assertEquals(3, list.size());
170 assertEquals("prop1", list.get(0));
171 assertEquals("prop2", list.get(1));
172 assertEquals("prop3", list.get(2));
173
174 assertNotNull(props.get("arrayProperties"));
175 list = (List) props.get("arrayProperties");
176 assertEquals(3, list.size());
177 assertEquals("prop4", list.get(0));
178 assertEquals("prop5", list.get(1));
179 assertEquals("prop6", list.get(2));
180
181 assertNotNull(props.get("mapProperties"));
182 props = (Map) props.get("mapProperties");
183 assertEquals("prop1", props.get("prop1"));
184 assertEquals("prop2", props.get("prop2"));
185
186 assertEquals(6, endpoint.getProperties().size());
187 }
188
189 public void testOutboundRouterConfig()
190 {
191
192 Service service = muleContext.getRegistry().lookupService("orangeComponent");
193 assertNotNull(service.getOutboundMessageProcessor());
194 OutboundRouterCollection router = (OutboundRouterCollection) service.getOutboundMessageProcessor();
195 assertNull(router.getCatchAllStrategy());
196 assertEquals(1, router.getRoutes().size());
197
198 OutboundRouter route1 = (OutboundRouter) router.getRoutes().get(0);
199 assertTrue(route1 instanceof OutboundPassThroughRouter);
200 assertEquals(1, route1.getRoutes().size());
201 }
202
203 public void testBindingConfig()
204 {
205
206 Service service = muleContext.getRegistry().lookupService("orangeComponent");
207 assertNotNull(service.getComponent());
208 assertTrue(service.getComponent() instanceof JavaComponent);
209 List<InterfaceBinding> bindings= ((JavaComponent) service.getComponent()).getInterfaceBindings();
210 assertNotNull(bindings);
211
212 assertEquals(2, bindings.size());
213
214 InterfaceBinding route1 = bindings.get(0);
215 assertEquals(FruitCleaner.class, route1.getInterface());
216 assertEquals("wash", route1.getMethod());
217 assertNotNull(route1.getEndpoint());
218
219 InterfaceBinding route2 = bindings.get(1);
220 assertEquals(FruitCleaner.class, route2.getInterface());
221 assertEquals("polish", route2.getMethod());
222 assertNotNull(route1.getEndpoint());
223 }
224
225 public void testDescriptorEndpoints()
226 {
227 Service service = muleContext.getRegistry().lookupService("orangeComponent");
228 assertEquals(1, ((OutboundRouterCollection) service.getOutboundMessageProcessor()).getRoutes().size());
229 OutboundRouter router = (OutboundRouter) ((OutboundRouterCollection)service.getOutboundMessageProcessor()).getRoutes().get(0);
230 assertEquals(1, router.getRoutes().size());
231 MessageProcessor mp = router.getRoutes().get(0);
232 assertNotNull(mp);
233 assertTrue(mp instanceof ImmutableEndpoint);
234 ImmutableEndpoint endpoint = (ImmutableEndpoint) mp;
235 assertNotNull(endpoint);
236 assertEquals("appleInEndpoint", endpoint.getName());
237 assertNotNull(endpoint.getTransformers());
238 assertTrue(TransformerUtils.firstOrNull(endpoint.getTransformers()) instanceof TestCompressionTransformer);
239
240 assertEquals(2, ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoints().size());
241 assertNotNull(((ServiceCompositeMessageSource) service.getMessageSource()).getCatchAllStrategy());
242 assertTrue(((ServiceCompositeMessageSource) service.getMessageSource()).getCatchAllStrategy() instanceof ForwardingCatchAllStrategy);
243 ForwardingCatchAllStrategy fcas = (ForwardingCatchAllStrategy)((ServiceCompositeMessageSource) service.getMessageSource()).getCatchAllStrategy();
244 assertNotNull(fcas.getEndpoint());
245 assertEquals("test://catch.all", fcas.getEndpoint().getEndpointURI().toString());
246 endpoint = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoint("orangeEndpoint");
247 assertNotNull(endpoint);
248 assertEquals("orangeEndpoint", endpoint.getName());
249 assertEquals("orangeQ", endpoint.getEndpointURI().getAddress());
250 assertNotNull(endpoint.getTransformers());
251 assertTrue(TransformerUtils.firstOrNull(endpoint.getTransformers()) instanceof TestCompressionTransformer);
252 }
253
254 public void testInboundRouterConfig()
255 {
256 Service service = muleContext.getRegistry().lookupService("orangeComponent");
257 assertNotNull(service.getMessageSource());
258 ServiceCompositeMessageSource messageRouter = (ServiceCompositeMessageSource) service.getMessageSource();
259 assertNotNull(messageRouter.getCatchAllStrategy());
260 assertEquals(0, messageRouter.getMessageProcessors().size());
261 assertTrue(messageRouter.getCatchAllStrategy() instanceof ForwardingCatchAllStrategy);
262 assertEquals(2, messageRouter.getEndpoints().size());
263 }
264
265 public void testResponseRouterConfig()
266 {
267 Service service = muleContext.getRegistry().lookupService("orangeComponent");
268 assertNotNull(service.getAsyncReplyMessageSource());
269
270 ServiceAsyncReplyCompositeMessageSource messageRouter = service.getAsyncReplyMessageSource();
271 assertNull(messageRouter.getCatchAllStrategy());
272 assertEquals(10001, messageRouter.getTimeout().longValue());
273 assertEquals(1, messageRouter.getMessageProcessors().size());
274
275 MessageProcessor router = messageRouter.getMessageProcessors().get(0);
276 assertTrue(router instanceof TestResponseAggregator);
277 assertNotNull(messageRouter.getEndpoints());
278 assertEquals(2, messageRouter.getEndpoints().size());
279
280 InboundEndpoint ep = messageRouter.getEndpoints().get(0);
281 assertEquals("response1", ep.getEndpointURI().getAddress());
282
283 ep = messageRouter.getEndpoints().get(1);
284 assertEquals("AppleResponseQueue", ep.getEndpointURI().getAddress());
285 }
286 }