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