KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > core > component > ComponentManager


1 package org.columba.core.component;
2
3 import java.util.Enumeration JavaDoc;
4 import java.util.logging.Logger JavaDoc;
5
6 import org.apache.commons.cli.CommandLine;
7 import org.columba.api.plugin.IExtension;
8 import org.columba.api.plugin.IExtensionHandler;
9 import org.columba.api.plugin.IExtensionHandlerKeys;
10 import org.columba.api.plugin.IPluginManager;
11 import org.columba.api.plugin.PluginException;
12 import org.columba.api.plugin.PluginHandlerNotFoundException;
13 import org.columba.core.component.api.IComponentPlugin;
14 import org.columba.core.logging.Logging;
15 import org.columba.core.plugin.PluginManager;
16
17 public class ComponentManager implements IComponentPlugin {
18
19     private static final Logger JavaDoc LOG = Logger.getLogger("org.columba.core.main"); //$NON-NLS-1$
20

21     private static final ComponentManager instance = new ComponentManager();
22
23     private IExtensionHandler extensionHandler;
24
25     private ComponentManager() {
26         // nothing to do
27
}
28
29     public static ComponentManager getInstance() {
30         return instance;
31     }
32
33     private IExtensionHandler getExtensionHandler() {
34         if (extensionHandler == null) {
35             try {
36                 // retrieve plugin manager instance
37
final IPluginManager pm = PluginManager.getInstance();
38                 
39                 extensionHandler = pm
40                         .getExtensionHandler(IExtensionHandlerKeys.ORG_COLUMBA_CORE_COMPONENT);
41             } catch (final PluginHandlerNotFoundException e) {
42                 LOG.severe(e.getMessage());
43
44                 if (Logging.DEBUG) {
45                     e.printStackTrace();
46                 }
47             }
48         }
49         return extensionHandler;
50     }
51
52     public IComponentPlugin getPlugin(final String JavaDoc id) {
53         IComponentPlugin component = null;
54
55         final IExtension extension = getExtensionHandler().getExtension(id);
56
57         try {
58             component = (IComponentPlugin) extension.instanciateExtension(null);
59         } catch (final PluginException e) {
60             LOG.severe(e.getMessage());
61
62             if (Logging.DEBUG) {
63                 e.printStackTrace();
64             }
65         }
66
67         return component;
68     }
69
70     /**
71      * @see org.columba.core.component.api.IComponentPlugin#init()
72      */

73     public void init() {
74         final Enumeration JavaDoc<IExtension> extensionEnumeration = getExtensionHandler()
75                 .getExtensionEnumeration();
76
77         while (extensionEnumeration.hasMoreElements()) {
78             final IExtension ext = extensionEnumeration.nextElement();
79             IComponentPlugin p;
80
81             try {
82                 p = (IComponentPlugin) ext.instanciateExtension(null);
83                 p.init();
84             } catch (final PluginException e) {
85                 LOG.severe(e.getMessage());
86
87                 if (Logging.DEBUG) {
88                     e.printStackTrace();
89                 }
90                 
91             }
92
93         }
94     }
95
96     /**
97      * @see org.columba.core.component.api.IComponentPlugin#postStartup()
98      */

99     public void postStartup() {
100         final Enumeration JavaDoc<IExtension> extensionEnumeration = getExtensionHandler()
101                 .getExtensionEnumeration();
102
103         while (extensionEnumeration.hasMoreElements()) {
104             final IExtension ext = extensionEnumeration.nextElement();
105             IComponentPlugin p;
106             try {
107                 p = (IComponentPlugin) ext.instanciateExtension(null);
108                 p.postStartup();
109             } catch (final PluginException e) {
110                 LOG.severe(e.getMessage());
111
112                 if (Logging.DEBUG) {
113                     e.printStackTrace();
114                 }
115             }
116         }
117     }
118
119     /**
120      * @see org.columba.core.component.api.IComponentPlugin#registerCommandLineArguments()
121      */

122     public void registerCommandLineArguments() {
123
124         final Enumeration JavaDoc<IExtension> extensionEnumeration = getExtensionHandler()
125                 .getExtensionEnumeration();
126
127         while (extensionEnumeration.hasMoreElements()) {
128             final IExtension ext = extensionEnumeration.nextElement();
129             IComponentPlugin p;
130             try {
131                 p = (IComponentPlugin) ext.instanciateExtension(null);
132                 p.registerCommandLineArguments();
133             } catch (final PluginException e) {
134                 LOG.severe(e.getMessage());
135
136                 if (Logging.DEBUG) {
137                     e.printStackTrace();
138                 }
139             }
140
141         }
142     }
143
144     /**
145      * @see org.columba.core.component.api.IComponentPlugin#handleCommandLineParameters(org.apache.commons.cli.CommandLine)
146      */

147     public void handleCommandLineParameters(final CommandLine commandLine) {
148         final Enumeration JavaDoc<IExtension> extensionEnumeration = getExtensionHandler()
149                 .getExtensionEnumeration();
150
151         while (extensionEnumeration.hasMoreElements()) {
152             final IExtension ext = extensionEnumeration.nextElement();
153             IComponentPlugin p;
154             try {
155                 p = (IComponentPlugin) ext.instanciateExtension(null);
156                 p.handleCommandLineParameters(commandLine);
157             } catch (final PluginException e) {
158                 LOG.severe(e.getMessage());
159
160                 if (Logging.DEBUG) {
161                     e.printStackTrace();
162                 }
163             }
164
165         }
166     }
167
168 }
169
Popular Tags