View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.config.spring.parsers.endpoint;
8   
9   import org.mule.api.MuleException;
10  import org.mule.api.endpoint.ImmutableEndpoint;
11  import org.mule.api.processor.MessageProcessor;
12  import org.mule.api.processor.MessageProcessorChain;
13  import org.mule.api.routing.OutboundRouterCollection;
14  import org.mule.api.service.Service;
15  import org.mule.api.transformer.Transformer;
16  import org.mule.routing.outbound.OutboundPassThroughRouter;
17  import org.mule.service.ServiceCompositeMessageSource;
18  import org.mule.tck.junit4.FunctionalTestCase;
19  import org.mule.tck.testmodels.mule.TestInboundTransformer;
20  import org.mule.tck.testmodels.mule.TestResponseTransformer;
21  import org.mule.transformer.simple.MessagePropertiesTransformer;
22  import org.mule.transformer.simple.StringAppendTransformer;
23  
24  import java.util.List;
25  
26  import org.junit.Test;
27  
28  import static org.junit.Assert.assertEquals;
29  import static org.junit.Assert.assertNotNull;
30  import static org.junit.Assert.assertTrue;
31  
32  public class EndpointTranformersInAttributesTestCase extends FunctionalTestCase
33  {
34  
35      @Override
36      protected String getConfigResources()
37      {
38          return "org/mule/config/spring/parsers/endpoint/endpoint-attribute-transformers.xml";
39      }
40  
41      @Test
42      public void testGlobalEndpoint1() throws MuleException
43      {
44          ImmutableEndpoint endpoint = muleContext.getEndpointFactory().getInboundEndpoint("ep1");
45  
46          List<MessageProcessor> processors = endpoint.getMessageProcessors();
47          assertNotNull(processors);
48          assertEquals(2, processors.size());
49          assertTrue(processors.get(0) instanceof TestInboundTransformer);
50          // For backwards-compatibility only
51          List<Transformer> transformers = endpoint.getTransformers();
52          assertNotNull(transformers);
53          assertEquals(1, transformers.size());
54          assertTrue(transformers.get(0) instanceof TestInboundTransformer);
55  
56          processors = endpoint.getResponseMessageProcessors();
57          assertNotNull(processors);
58          assertEquals(1, processors.size());
59          assertTrue(processors.get(0) instanceof TestResponseTransformer);
60          // For backwards-compatibility only
61          transformers = endpoint.getResponseTransformers();
62          assertNotNull(transformers);
63          assertEquals(1, transformers.size());
64          assertTrue(transformers.get(0) instanceof TestResponseTransformer);
65      }
66  
67      @Test
68      public void testGlobalEndpoint2() throws MuleException
69      {
70          ImmutableEndpoint endpoint = muleContext.getEndpointFactory().getInboundEndpoint("ep2");
71  
72          List<MessageProcessor> processors = endpoint.getMessageProcessors();
73          assertNotNull(processors);
74          assertEquals(3, processors.size());
75          assertTrue(processors.get(0) instanceof TestInboundTransformer);
76          assertTrue(processors.get(1) instanceof TestInboundTransformer);
77          // For backwards-compatibility only
78          List<Transformer> transformers = endpoint.getTransformers();
79          assertNotNull(transformers);
80          assertEquals(2, transformers.size());
81          assertTrue(transformers.get(0) instanceof TestInboundTransformer);
82          assertTrue(transformers.get(1) instanceof TestInboundTransformer);
83  
84          processors = endpoint.getResponseMessageProcessors();
85          assertNotNull(processors);
86          assertEquals(2, processors.size());
87          assertTrue(processors.get(0) instanceof TestResponseTransformer);
88          assertTrue(processors.get(1) instanceof TestResponseTransformer);
89          // For backwards-compatibility only
90          transformers = endpoint.getResponseTransformers();
91          assertNotNull(transformers);
92          assertEquals(2, transformers.size());
93          assertTrue(transformers.get(0) instanceof TestResponseTransformer);
94          assertTrue(transformers.get(1) instanceof TestResponseTransformer);
95      }
96  
97      @Test
98      public void testGlobalEndpoints() throws MuleException
99      {
100         Service service = muleContext.getRegistry().lookupService("globalEndpoints");
101 
102         ImmutableEndpoint endpoint = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoints()
103             .get(0);
104 
105         List<MessageProcessor> processors = endpoint.getMessageProcessors();
106         assertNotNull(processors);
107         assertEquals(2, processors.size());
108         assertTrue(processors.get(0) instanceof TestInboundTransformer);
109         // For backwards-compatibility only
110         List<Transformer> transformers = endpoint.getTransformers();
111         assertNotNull(transformers);
112         assertEquals(1, transformers.size());
113         assertTrue(transformers.get(0) instanceof TestInboundTransformer);
114 
115         processors = endpoint.getResponseMessageProcessors();
116         assertNotNull(processors);
117         assertEquals(1, processors.size());
118         assertTrue(processors.get(0) instanceof TestResponseTransformer);
119         // For backwards-compatibility only
120         transformers = endpoint.getResponseTransformers();
121         assertNotNull(transformers);
122         assertEquals(1, transformers.size());
123         assertTrue(transformers.get(0) instanceof TestResponseTransformer);
124 
125         endpoint = (ImmutableEndpoint) ((OutboundPassThroughRouter) ((OutboundRouterCollection) service.getOutboundMessageProcessor()).getRoutes()
126             .get(0)).getRoutes().get(0);
127 
128         processors = endpoint.getMessageProcessors();
129         assertNotNull(processors);
130         assertEquals(2, processors.size());
131         assertTrue(processors.get(0) instanceof TestInboundTransformer);
132         assertTrue(processors.get(1) instanceof TestInboundTransformer);
133         // For backwards-compatibility only
134         transformers = endpoint.getTransformers();
135         assertNotNull(transformers);
136         assertEquals(2, transformers.size());
137         assertTrue(transformers.get(0) instanceof TestInboundTransformer);
138         assertTrue(transformers.get(1) instanceof TestInboundTransformer);
139 
140         processors = endpoint.getResponseMessageProcessors();
141         assertNotNull(processors);
142         assertEquals(2, processors.size());
143         assertTrue(processors.get(0) instanceof TestResponseTransformer);
144         assertTrue(processors.get(1) instanceof TestResponseTransformer);
145         // For backwards-compatibility only
146         transformers = endpoint.getResponseTransformers();
147         assertNotNull(transformers);
148         assertEquals(2, transformers.size());
149         assertTrue(transformers.get(0) instanceof TestResponseTransformer);
150         assertTrue(transformers.get(1) instanceof TestResponseTransformer);
151     }
152 
153     @Test
154     public void testLocalEndpoints() throws MuleException
155     {
156         Service service = muleContext.getRegistry().lookupService("localEndpoints");
157 
158         ImmutableEndpoint endpoint = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoints()
159             .get(0);
160 
161         List<MessageProcessor> processors = endpoint.getMessageProcessors();
162         assertNotNull(processors);
163         assertEquals(2, processors.size());
164         assertTrue(processors.get(0) instanceof TestInboundTransformer);
165         // For backwards-compatibility only
166         List<Transformer> transformers = endpoint.getTransformers();
167         assertNotNull(transformers);
168         assertEquals(1, transformers.size());
169         assertTrue(transformers.get(0) instanceof TestInboundTransformer);
170 
171         processors = endpoint.getResponseMessageProcessors();
172         assertNotNull(processors);
173         assertEquals(1, processors.size());
174         assertTrue(processors.get(0) instanceof TestResponseTransformer);
175         // For backwards-compatibility only
176         transformers = endpoint.getResponseTransformers();
177         assertNotNull(transformers);
178         assertEquals(1, transformers.size());
179         assertTrue(transformers.get(0) instanceof TestResponseTransformer);
180 
181         endpoint = (ImmutableEndpoint) ((OutboundPassThroughRouter) ((OutboundRouterCollection) service.getOutboundMessageProcessor()).getRoutes()
182             .get(0)).getRoutes().get(0);
183 
184         processors = endpoint.getMessageProcessors();
185         assertNotNull(processors);
186         assertEquals(1, processors.size());
187         assertTrue(processors.get(0) instanceof TestInboundTransformer);
188         // For backwards-compatibility only
189         transformers = endpoint.getTransformers();
190         assertNotNull(transformers);
191         assertEquals(1, transformers.size());
192         assertTrue(transformers.get(0) instanceof TestInboundTransformer);
193 
194         processors = endpoint.getResponseMessageProcessors();
195         assertNotNull(processors);
196         assertEquals(1, processors.size());
197         assertTrue(processors.get(0) instanceof TestResponseTransformer);
198         // For backwards-compatibility only
199         transformers = endpoint.getResponseTransformers();
200         assertNotNull(transformers);
201         assertEquals(1, transformers.size());
202         assertTrue(transformers.get(0) instanceof TestResponseTransformer);
203     }
204 
205     @Test
206     public void testTransformerRefsWithChildProcessors() throws MuleException
207     {
208         Service service = muleContext.getRegistry().lookupService("transformerRefsWithChildProcessors");
209 
210         ImmutableEndpoint endpoint = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoints()
211             .get(0);
212 
213         List<MessageProcessor> processors = endpoint.getMessageProcessors();
214         assertNotNull(processors);
215         assertEquals(3, processors.size());
216         assertTrue(processors.get(0) instanceof StringAppendTransformer);
217         assertTrue(processors.get(1) instanceof TestInboundTransformer);
218 
219         processors = endpoint.getResponseMessageProcessors();
220         assertNotNull(processors);
221         assertEquals(2, processors.size());
222         assertTrue(processors.get(0) instanceof MessageProcessorChain);
223         assertTrue(((MessageProcessorChain)processors.get(0)).getMessageProcessors().get(0) instanceof StringAppendTransformer);
224         assertTrue(processors.get(1) instanceof TestResponseTransformer);
225 
226         endpoint = (ImmutableEndpoint) ((OutboundPassThroughRouter) ((OutboundRouterCollection) service.getOutboundMessageProcessor()).getRoutes()
227             .get(0)).getRoutes().get(0);
228 
229         processors = endpoint.getMessageProcessors();
230         assertNotNull(processors);
231         assertEquals(2, processors.size());
232         assertTrue(processors.get(0) instanceof MessagePropertiesTransformer);
233         assertTrue(processors.get(1) instanceof TestInboundTransformer);
234 
235         processors = endpoint.getResponseMessageProcessors();
236         assertNotNull(processors);
237         assertEquals(2, processors.size());
238         assertTrue(processors.get(0) instanceof MessageProcessorChain);
239         assertTrue(((MessageProcessorChain)processors.get(0)).getMessageProcessors().get(0) instanceof MessagePropertiesTransformer);
240         assertTrue(processors.get(1) instanceof TestResponseTransformer);
241     }
242 
243 }