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