1 package org.columba.core.component; 2 3 import java.util.Enumeration ; 4 import java.util.logging.Logger ; 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 LOG = Logger.getLogger("org.columba.core.main"); 21 private static final ComponentManager instance = new ComponentManager(); 22 23 private IExtensionHandler extensionHandler; 24 25 private ComponentManager() { 26 } 28 29 public static ComponentManager getInstance() { 30 return instance; 31 } 32 33 private IExtensionHandler getExtensionHandler() { 34 if (extensionHandler == null) { 35 try { 36 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 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 73 public void init() { 74 final Enumeration <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 99 public void postStartup() { 100 final Enumeration <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 122 public void registerCommandLineArguments() { 123 124 final Enumeration <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 147 public void handleCommandLineParameters(final CommandLine commandLine) { 148 final Enumeration <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 |