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