1
2
3
4
5
6
7
8
9
10 package org.mule.transport.service;
11
12 import org.mule.api.registry.ServiceException;
13 import org.mule.api.registry.ServiceType;
14 import org.mule.api.transport.Connector;
15 import org.mule.config.i18n.CoreMessages;
16 import org.mule.transport.AbstractConnector;
17 import org.mule.util.PropertiesUtils;
18 import org.mule.util.SpiUtils;
19
20 import java.util.Properties;
21
22
23
24
25
26
27 public class MetaTransportServiceDescriptor extends DefaultTransportServiceDescriptor
28 {
29 private String metaScheme;
30
31 public MetaTransportServiceDescriptor(String metaScheme, String scheme, Properties props, ClassLoader classLoader) throws ServiceException
32 {
33 super(metaScheme, props, classLoader);
34 this.metaScheme = metaScheme;
35 Properties p = SpiUtils.findServiceDescriptor(ServiceType.TRANSPORT, scheme);
36
37 if (p == null)
38 {
39 throw new ServiceException(CoreMessages.failedToCreate("transport: " + metaScheme + ":" + scheme));
40 }
41 Properties temp = new Properties();
42 PropertiesUtils.getPropertiesWithPrefix(props, scheme + ".", temp);
43 if (temp.size() > 0)
44 {
45 p.putAll(PropertiesUtils.removeNamespaces(temp));
46 }
47 setOverrides(p);
48 }
49
50
51
52
53
54
55
56
57
58 @Override
59 public Connector createConnector() throws TransportServiceException
60 {
61 AbstractConnector c = (AbstractConnector) super.createConnector();
62 c.registerSupportedMetaProtocol(metaScheme);
63 return c;
64 }
65 }