1
2
3
4
5
6
7
8
9
10 package org.mule.test;
11
12 import org.mule.DefaultMuleMessage;
13 import org.mule.MessageExchangePattern;
14 import org.mule.api.MuleContext;
15 import org.mule.api.MuleException;
16 import org.mule.api.MuleMessage;
17 import org.mule.api.endpoint.ImmutableEndpoint;
18 import org.mule.api.endpoint.InboundEndpoint;
19 import org.mule.api.endpoint.OutboundEndpoint;
20 import org.mule.endpoint.DynamicOutboundEndpoint;
21 import org.mule.module.client.MuleClient;
22 import org.mule.tck.AbstractMuleTestCase;
23
24 import java.util.HashMap;
25 import java.util.Map;
26
27 public class EndpointURITestCase extends AbstractMuleTestCase
28 {
29 public void testEndpoints() throws Exception
30 {
31 Client client = new Client(muleContext);
32
33 EndpointUri[] uris =
34 {
35 new EndpointUri("vm://#[header:INBOUND:prop1]/#[header:INBOUND:prop2]", "vm://apple/orange"),
36 new EndpointUri("imap://mule%40mule.net:secretpassword@gmail.com:143"),
37 new EndpointUri("vm://bucket:somefiles?query=%7B%22filename%22%3A%22foo%22%7D"),
38 new EndpointUri("http://localhost:1313"),
39 new EndpointUri("http://localhost:1313?${foo}", "http://localhost:1313?$[foo]"),
40 new EndpointUri("vm://#[header:INBOUND:prop1]", "vm://apple"),
41 };
42
43 for (EndpointUri uri : uris)
44 {
45 if (!uri.isDynamic())
46 {
47 InboundEndpoint ei = client.getInboundEndpoint(uri.getUri());
48 uri.checkResultUri(ei);
49 }
50 if (!uri.getUri().startsWith("imap:"))
51 {
52 OutboundEndpoint oi = client.getOutboundEndpoint(uri.getUri());
53 uri.checkResultUri(oi);
54 }
55 }
56 }
57
58 static class Client extends MuleClient
59 {
60 Client(MuleContext context) throws MuleException
61 {
62 super(context);
63 }
64
65 @Override
66 public InboundEndpoint getInboundEndpoint(String uri) throws MuleException
67 {
68 return super.getInboundEndpoint(uri);
69 }
70
71 public OutboundEndpoint getOutboundEndpoint(String uri) throws MuleException
72 {
73 MessageExchangePattern mep = MessageExchangePattern.ONE_WAY;
74 return getOutboundEndpoint(uri, mep, 0);
75 }
76 }
77
78 static class EndpointUri
79 {
80 private String uri;
81 private boolean isDynamic;
82 private String resultUri;
83 private MuleMessage message;
84 {
85 Map<String, Object> inbound = new HashMap<String, Object>();
86 inbound.put("prop1", "apple");
87 inbound.put("prop2", "orange");
88 inbound.put("prop3", "banana");
89 message = new DefaultMuleMessage("Hello, world", inbound, null, null, muleContext);
90 }
91
92 EndpointUri(String uri, String resultUri)
93 {
94 this.uri = uri;
95 this.resultUri = resultUri;
96 this.isDynamic = true;
97 }
98
99 EndpointUri(String uri)
100 {
101 this.uri = uri;
102 this.resultUri = uri;
103 this.isDynamic = false;
104 }
105
106 public String getUri()
107 {
108 return uri;
109 }
110
111 public boolean isDynamic()
112 {
113 return isDynamic;
114 }
115
116 public String getResultUri()
117 {
118 return resultUri;
119 }
120
121 public void checkResultUri(ImmutableEndpoint ep)
122 {
123 String epUri;
124 if (ep instanceof DynamicOutboundEndpoint)
125 {
126 epUri = muleContext.getExpressionManager().parse(ep.getAddress(), message, true);
127 }
128 else
129 {
130 epUri = ep.getAddress();
131 }
132 assertEquals(resultUri, epUri);
133 }
134 }
135 }