1
2
3
4
5
6
7
8
9
10
11 package org.mule.endpoint;
12
13 import org.mule.MessageExchangePattern;
14 import org.mule.api.MuleException;
15 import org.mule.api.endpoint.EndpointBuilder;
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.transformer.Transformer;
20 import org.mule.retry.policies.NoRetryPolicyTemplate;
21 import org.mule.tck.AbstractMuleTestCase;
22 import org.mule.tck.testmodels.mule.TestConnector;
23 import org.mule.transaction.MuleTransactionConfig;
24 import org.mule.transformer.simple.StringAppendTransformer;
25 import org.mule.util.ObjectNameHelper;
26
27 public class EndpointURIEndpointBuilderTestCase extends AbstractMuleTestCase
28 {
29 public void testBuildInboundEndpoint() throws Exception
30 {
31 String uri = "test://address";
32 EndpointBuilder endpointBuilder = new EndpointURIEndpointBuilder(uri, muleContext);
33 ImmutableEndpoint ep = endpointBuilder.buildInboundEndpoint();
34 assertTrue(ep instanceof InboundEndpoint);
35 assertFalse(ep instanceof OutboundEndpoint);
36 assertNotNull(ep.getTransformers());
37
38 assertEquals(0, ep.getTransformers().size());
39 assertNotNull(ep.getResponseTransformers());
40
41 assertEquals(0, ep.getResponseTransformers().size());
42 testDefaultCommonEndpointAttributes(ep);
43 }
44
45 public void testBuildOutboundEndpoint() throws MuleException
46 {
47 String uri = "test://address";
48 EndpointBuilder endpointBuilder = new EndpointURIEndpointBuilder(uri, muleContext);
49 ImmutableEndpoint ep = endpointBuilder.buildOutboundEndpoint();
50 assertFalse(ep instanceof InboundEndpoint);
51 assertTrue(ep instanceof OutboundEndpoint);
52
53 assertEquals(0, ep.getTransformers().size());
54 assertNotNull(ep.getResponseTransformers());
55
56 assertEquals(0, ep.getResponseTransformers().size());
57 testDefaultCommonEndpointAttributes(ep);
58 }
59
60
61
62
63 protected void testDefaultCommonEndpointAttributes(ImmutableEndpoint ep)
64 {
65 assertEquals(ep.getEndpointURI().getUri().toString(), "test://address");
66 assertEquals(muleContext.getConfiguration().getDefaultResponseTimeout(), ep.getResponseTimeout());
67 assertTrue("ep.getRetryPolicyTemplate() = " + ep.getRetryPolicyTemplate().getClass(), ep.getRetryPolicyTemplate() instanceof NoRetryPolicyTemplate);
68 assertTrue(ep.getTransactionConfig() instanceof MuleTransactionConfig);
69 assertTrue(ep.getTransactionConfig() instanceof MuleTransactionConfig);
70 assertEquals(null, ep.getSecurityFilter());
71 assertTrue(ep.getConnector() instanceof TestConnector);
72 assertEquals(new ObjectNameHelper(muleContext).getEndpointName(ep.getEndpointURI()), ep.getName());
73 assertFalse(ep.isDeleteUnacceptedMessages());
74 assertEquals(muleContext.getConfiguration().getDefaultEncoding(), ep.getEncoding());
75 assertEquals(null, ep.getFilter());
76 assertEquals(ImmutableEndpoint.INITIAL_STATE_STARTED, ep.getInitialState());
77 }
78
79 public void testHasSetEncodingMethod() throws Exception
80 {
81 String uri = "test://address";
82 EndpointBuilder endpointBuilder = new EndpointURIEndpointBuilder(uri, muleContext);
83 assertNotNull(endpointBuilder.getClass().getMethod("setEncoding", new Class[]{String.class}));
84 }
85
86 public void testEndpointBuilderFromEndpoint() throws Exception
87 {
88 String uri = "test://address";
89 ImmutableEndpoint endpoint = getTestInboundEndpoint("endpoint.test.address", uri);
90 SensingEndpointURIEndpointBuilder builder = new SensingEndpointURIEndpointBuilder(endpoint);
91 assertEquals(uri, builder.getEndpointBuilder().getEndpoint().getUri().toString());
92 assertEquals(endpoint.getConnector(), builder.getConnector());
93 assertEquals(endpoint.getProperties(), builder.getProperties());
94 assertEquals(endpoint.getTransactionConfig(), builder.getTransactionConfig());
95 assertEquals(endpoint.isDeleteUnacceptedMessages(), builder.getDeleteUnacceptedMessages(builder.getConnector()));
96 assertEquals(endpoint.getInitialState(), builder.getInitialState(builder.getConnector()));
97 assertEquals(endpoint.getResponseTimeout(), builder.getResponseTimeout(builder.getConnector()));
98 assertEquals(endpoint.getSecurityFilter(), builder.getSecurityFilter());
99 assertEquals(endpoint.getRetryPolicyTemplate(), builder.getRetryPolicyTemplate(builder.getConnector()));
100 assertEquals(MessageExchangePattern.ONE_WAY, builder.getExchangePattern());
101 }
102
103
104
105
106
107
108
109 public void testEndpointBuilderTransformersState() throws Exception
110 {
111 muleContext.getRegistry().registerObject("tran1", new StringAppendTransformer("1"));
112 muleContext.getRegistry().registerObject("tran2", new StringAppendTransformer("2"));
113
114 String uri = "test://address?transformers=tran1&responseTransformers=tran2";
115 EndpointBuilder endpointBuilder = new EndpointURIEndpointBuilder(uri, muleContext);
116 endpointBuilder.setTransformers(java.util.Collections.<Transformer> singletonList(new StringAppendTransformer(
117 "3")));
118 endpointBuilder.setResponseTransformers(java.util.Collections.<Transformer> singletonList(new StringAppendTransformer(
119 "4")));
120
121 InboundEndpoint endpoint = endpointBuilder.buildInboundEndpoint();
122
123 assertEquals(2, endpoint.getMessageProcessors().size());
124 assertEquals(2, endpoint.getResponseMessageProcessors().size());
125
126 endpoint = endpointBuilder.buildInboundEndpoint();
127
128 assertEquals(2, endpoint.getMessageProcessors().size());
129 assertEquals(2, endpoint.getResponseMessageProcessors().size());
130 }
131
132 private static class SensingEndpointURIEndpointBuilder extends EndpointURIEndpointBuilder
133 {
134 public SensingEndpointURIEndpointBuilder(ImmutableEndpoint endpoint)
135 {
136 super(endpoint);
137 }
138
139 public MessageExchangePattern getExchangePattern()
140 {
141 return messageExchangePattern;
142 }
143 }
144 }