1
2
3
4
5
6
7
8
9
10
11 package org.astrogrid.applications.component;
12
13 import org.astrogrid.applications.javaclass.JavaClassApplicationDescriptionLibrary;
14 import org.astrogrid.applications.javaclass.SampleJavaClassApplications;
15 import org.astrogrid.config.Config;
16 import org.astrogrid.config.SimpleConfig;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20 import org.picocontainer.MutablePicoContainer;
21
22 /*** Simple component manager that defines a standalone JavaClass CEA server
23 * @author Noel Winstanley nw@jb.man.ac.uk 10-Jun-2004
24 *@see org.astrogrid.applications.javaclass
25 *@todo factor into the javaclass package?
26 */
27 public class JavaClassCEAComponentManager extends EmptyCEAComponentManager {
28 /***
29 * Commons Logger for this class
30 */
31 private static final Log logger = LogFactory.getLog(JavaClassCEAComponentManager.class);
32 /*** key to look in config under for the name of the java class to expose as cea applications (optional, defaulrs to {@link SampleJavaClassApplications})
33 * @see #registerJavaClassProvider(MutablePicoContainer, Config)*/
34 public final static String SERVER_CLASS_NAME = "cea.javaclass.server.class";
35 /*** Construct a new JavaClassCEAComponentManger, with all necessary components registered
36 * <p />
37 * registers the java class provider, plus all the standard services defined in {@link EmptyCEAComponentManager}
38 */
39 public JavaClassCEAComponentManager() {
40 super();
41 final Config config = SimpleConfig.getSingleton();
42
43 EmptyCEAComponentManager.registerDefaultServices(pico);
44
45 EmptyCEAComponentManager.registerDefaultPersistence(pico,config);
46
47 EmptyCEAComponentManager.registerDefaultVOProvider(pico,config);
48
49 EmptyCEAComponentManager.registerDefaultRegistryUploader(pico);
50
51 EmptyCEAComponentManager.registerProtocolLibrary(pico);
52 EmptyCEAComponentManager.registerStandardIndirectionProtocols(pico);
53 EmptyCEAComponentManager.registerAstrogridIndirectionProtocols(pico);
54
55 registerJavaClassProvider(pico,config);
56 }
57 /*** just register the components specific to the java-class provider, but none of the generic components
58 * @see {@link #SERVER_CLASS_NAME}
59 * @see {@link #COMMUNITY_KEY} */
60 public static final void registerJavaClassProvider(MutablePicoContainer pico, final Config config){
61 pico.registerComponentImplementation(JavaClassApplicationDescriptionLibrary.class,JavaClassApplicationDescriptionLibrary.class);
62
63
64 final String classname = config.getString(SERVER_CLASS_NAME,SampleJavaClassApplications.class.getName());
65 Class serverClass = SampleJavaClassApplications.class;
66 try {
67 serverClass = Class.forName(classname);
68 } catch (Exception e) {
69 logger.fatal("Could not instantiate required server class '" + classname + "' falling back to sample java applications");
70 }
71 pico.registerComponentInstance(Class.class,serverClass);
72 }
73 }
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106