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