KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > transports > TransportFactoryManagerImpl


1 package org.objectweb.celtix.bus.transports;
2
3 import java.util.List JavaDoc;
4 import java.util.Map JavaDoc;
5 import java.util.concurrent.ConcurrentHashMap JavaDoc;
6
7 import org.objectweb.celtix.Bus;
8 import org.objectweb.celtix.BusException;
9 import org.objectweb.celtix.configuration.types.ClassNamespaceMappingListType;
10 import org.objectweb.celtix.configuration.types.ClassNamespaceMappingType;
11 import org.objectweb.celtix.transports.TransportFactory;
12 import org.objectweb.celtix.transports.TransportFactoryManager;
13
14 public final class TransportFactoryManagerImpl implements TransportFactoryManager {
15
16     final Map JavaDoc<String JavaDoc, TransportFactory> transportFactories;
17     private final Bus bus;
18       
19     public TransportFactoryManagerImpl(Bus b) throws BusException {
20         transportFactories = new ConcurrentHashMap JavaDoc<String JavaDoc, TransportFactory>();
21         bus = b;
22         
23         /*
24         loadTransportFactory("org.objectweb.celtix.bus.transports.http.HTTPTransportFactory",
25                              "http://schemas.xmlsoap.org/wsdl/soap/",
26                              "http://celtix.objectweb.org/transports/http/configuration");
27         */

28         Object JavaDoc obj = bus.getConfiguration().getObject("transportFactories");
29         
30         List JavaDoc<ClassNamespaceMappingType> factoryMappings = ((ClassNamespaceMappingListType)obj).getMap();
31         for (ClassNamespaceMappingType mapping : factoryMappings) {
32             String JavaDoc classname = mapping.getClassname();
33             List JavaDoc<String JavaDoc> namespaceList = mapping.getNamespace();
34             String JavaDoc[] namespaces = new String JavaDoc[namespaceList.size()];
35             namespaceList.toArray(namespaces);
36             loadTransportFactory(classname, namespaces);
37         }
38         
39     }
40     
41     public void loadTransportFactory(String JavaDoc classname, String JavaDoc ... namespaces) throws BusException {
42         try {
43             Class JavaDoc<? extends TransportFactory> clazz =
44                 Class.forName(classname).asSubclass(TransportFactory.class);
45             
46             TransportFactory factory = clazz.newInstance();
47             factory.init(bus);
48             for (String JavaDoc namespace : namespaces) {
49                 registerTransportFactory(namespace, factory);
50             }
51         } catch (ClassNotFoundException JavaDoc e) {
52             throw new BusException(e);
53         } catch (InstantiationException JavaDoc e) {
54             throw new BusException(e);
55         } catch (IllegalAccessException JavaDoc e) {
56             throw new BusException(e);
57         }
58     }
59     
60
61     /* (non-Javadoc)
62      * @see org.objectweb.celtix.bus.TransportFactoryManager#registerTransportFactory(java.lang.String,
63      * org.objectweb.celtix.transports.TransportFactory)
64      */

65     public void registerTransportFactory(String JavaDoc namespace, TransportFactory factory) throws BusException {
66         transportFactories.put(namespace, factory);
67     }
68     
69     /* (non-Javadoc)
70      * @see org.objectweb.celtix.bus.TransportFactoryManager#deregisterTransportFactory(java.lang.String)
71      */

72     public void deregisterTransportFactory(String JavaDoc namespace)
73         throws BusException {
74         transportFactories.remove(namespace);
75     }
76
77     /* (non-Javadoc)
78      * @see org.objectweb.celtix.bus.TransportFactoryManager#TransportFactory(java.lang.String)
79      */

80     public TransportFactory getTransportFactory(String JavaDoc namespace) throws BusException {
81         return transportFactories.get(namespace);
82     }
83
84     public void shutdown() {
85         //nothing to do
86
}
87 }
88
Popular Tags