1
2
3
4
5
6
7
8
9
10
11 package org.mule.impl.endpoint;
12
13 import org.mule.config.i18n.CoreMessages;
14 import org.mule.impl.ImmutableMuleEndpoint;
15 import org.mule.providers.service.TransportFactory;
16 import org.mule.umo.UMOException;
17 import org.mule.umo.UMOFilter;
18 import org.mule.umo.UMOTransactionConfig;
19 import org.mule.umo.endpoint.EndpointException;
20 import org.mule.umo.endpoint.UMOEndpoint;
21 import org.mule.umo.endpoint.UMOEndpointURI;
22 import org.mule.umo.endpoint.UMOImmutableEndpoint;
23 import org.mule.umo.lifecycle.InitialisationException;
24 import org.mule.umo.provider.UMOConnector;
25 import org.mule.umo.security.UMOEndpointSecurityFilter;
26 import org.mule.umo.transformer.UMOTransformer;
27
28 import java.util.Map;
29
30
31
32
33
34 public class MuleEndpoint extends ImmutableMuleEndpoint implements UMOEndpoint
35 {
36
37
38
39 private static final long serialVersionUID = 2028442057178326047L;
40
41 public static final String ALWAYS_CREATE_STRING = "ALWAYS_CREATE";
42 public static final String NEVER_CREATE_STRING = "NEVER_CREATE";
43
44
45
46
47
48 public MuleEndpoint()
49 {
50 super(null, null, null, null, ENDPOINT_TYPE_SENDER_AND_RECEIVER, 0, null, null);
51 }
52
53 public MuleEndpoint(String name,
54 UMOEndpointURI endpointUri,
55 UMOConnector connector,
56 UMOTransformer transformer,
57 String type,
58 int createConnector,
59 String endpointEncoding,
60 Map props)
61 {
62 super(name, endpointUri, connector, transformer, type, createConnector, endpointEncoding,
63 props);
64 }
65
66 public MuleEndpoint(UMOImmutableEndpoint endpoint)
67 {
68 super(endpoint);
69 }
70
71 public MuleEndpoint(String uri, boolean receiver) throws UMOException
72 {
73 super(uri, receiver);
74 }
75
76 public Object clone()
77 {
78 UMOEndpoint clone = new MuleEndpoint(name, endpointUri, connector, transformer, type,
79 createConnector, endpointEncoding, properties);
80
81 clone.setTransactionConfig(transactionConfig);
82 clone.setFilter(filter);
83 clone.setSecurityFilter(securityFilter);
84 try
85 {
86 if (responseTransformer != null)
87 {
88 clone.setResponseTransformer((UMOTransformer)responseTransformer.clone());
89 }
90 }
91 catch (CloneNotSupportedException e1)
92 {
93
94 logger.error(e1.getMessage(), e1);
95 }
96
97 if (remoteSync != null)
98 {
99 clone.setRemoteSync(isRemoteSync());
100 }
101 if (remoteSyncTimeout != null)
102 {
103 clone.setRemoteSyncTimeout(getRemoteSyncTimeout());
104 }
105
106 if (synchronous != null)
107 {
108 clone.setSynchronous(synchronous.booleanValue());
109 }
110
111 clone.setDeleteUnacceptedMessages(deleteUnacceptedMessages);
112
113 clone.setInitialState(initialState);
114 if (initialised.get())
115 {
116 try
117 {
118 clone.initialise();
119 }
120 catch (InitialisationException e)
121 {
122
123
124
125 logger.error(e.getMessage(), e);
126 }
127 }
128
129 return clone;
130 }
131
132 public void setEndpointURI(UMOEndpointURI endpointUri) throws EndpointException
133 {
134 if (connector != null && endpointUri != null
135 && !connector.supportsProtocol(endpointUri.getFullScheme()))
136 {
137 throw new IllegalArgumentException(
138 CoreMessages.connectorSchemeIncompatibleWithEndpointScheme(connector.getProtocol(),
139 endpointUri).getMessage());
140 }
141 this.endpointUri = endpointUri;
142 if (endpointUri != null)
143 {
144 properties.putAll(endpointUri.getParams());
145 }
146 }
147
148 public void setEncoding(String endpointEncoding)
149 {
150 this.endpointEncoding = endpointEncoding;
151 }
152
153 public void setType(String type)
154 {
155 this.type = type;
156 }
157
158 public void setConnector(UMOConnector connector)
159 {
160 if (connector != null && endpointUri != null
161 && !connector.supportsProtocol(endpointUri.getFullScheme()))
162 {
163 throw new IllegalArgumentException(
164 CoreMessages.connectorSchemeIncompatibleWithEndpointScheme(connector.getProtocol(),
165 endpointUri).getMessage());
166 }
167 this.connector = connector;
168 }
169
170 public void setName(String name)
171 {
172 this.name = name;
173 }
174
175 public void setTransformer(UMOTransformer trans)
176 {
177 transformer = trans;
178 if (transformer != null)
179 {
180 transformer.setEndpoint(this);
181 }
182 }
183
184 public void setProperties(Map props)
185 {
186 properties.clear();
187 properties.putAll(props);
188 }
189
190 public boolean isReadOnly()
191 {
192 return false;
193 }
194
195 public void setTransactionConfig(UMOTransactionConfig config)
196 {
197 transactionConfig = config;
198 }
199
200 public void setFilter(UMOFilter filter)
201 {
202 this.filter = filter;
203 }
204
205
206
207
208
209
210
211 public void setDeleteUnacceptedMessages(boolean delete)
212 {
213 deleteUnacceptedMessages = delete;
214 }
215
216
217
218
219
220
221
222
223
224 public void setSecurityFilter(UMOEndpointSecurityFilter filter)
225 {
226 securityFilter = filter;
227 if (securityFilter != null)
228 {
229 securityFilter.setEndpoint(this);
230 }
231 }
232
233
234
235
236
237
238
239
240
241
242 public void setSynchronous(boolean synchronous)
243 {
244 this.synchronous = Boolean.valueOf(synchronous);
245 }
246
247 public void setCreateConnector(int action)
248 {
249 createConnector = action;
250 }
251
252 public void setCreateConnectorAsString(String action)
253 {
254 if (ALWAYS_CREATE_STRING.equals(action))
255 {
256 createConnector = TransportFactory.ALWAYS_CREATE_CONNECTOR;
257 }
258 else if (NEVER_CREATE_STRING.equals(action))
259 {
260 createConnector = TransportFactory.NEVER_CREATE_CONNECTOR;
261 }
262 else
263 {
264 createConnector = TransportFactory.GET_OR_CREATE_CONNECTOR;
265 }
266 }
267
268
269
270
271
272
273
274
275
276 public void setRemoteSync(boolean value)
277 {
278 this.remoteSync = Boolean.valueOf(value);
279 if (value)
280 {
281 this.synchronous = Boolean.TRUE;
282 }
283 }
284
285
286
287
288
289
290 public void setRemoteSyncTimeout(int timeout)
291 {
292 this.remoteSyncTimeout = new Integer(timeout);
293 }
294
295
296
297
298
299
300
301 public void setInitialState(String state)
302 {
303 this.initialState = state;
304 }
305
306 public void setResponseTransformer(UMOTransformer trans)
307 {
308 responseTransformer = trans;
309 }
310
311
312
313
314
315
316 public void setStreaming(boolean stream)
317 {
318 this.streaming = stream;
319 }
320
321
322
323
324
325
326
327 public void setProperty(String key, Object value)
328 {
329 properties.put(key, value);
330 }
331 }