1 46 package org.mr.kernel; 47 48 49 import java.io.IOException ; 50 import java.util.ArrayList ; 51 import java.util.HashMap ; 52 import java.util.Map ; 53 54 import org.apache.commons.logging.Log; 55 import org.apache.commons.logging.LogFactory; 56 import org.mr.MantaAgent; 57 import org.mr.core.configuration.ConfigurationElement; 58 59 60 67 public class PluginManager { 68 69 Log log = null; 70 MantaAgent agent = null; 71 private Map pluginsMap = null; 72 73 public PluginManager() { 74 agent = MantaAgent.getInstance(); 75 pluginsMap = new HashMap (); 76 log=LogFactory.getLog("PluginManager"); 77 ConfigurationElement plugin = agent.getSingletonRepository().getConfigManager().getConfigurationElement("plug-ins"); 78 79 if(plugin == null ||plugin.getSubConfigurationElements() == null|| plugin.getSubConfigurationElements().size() == 0 ){ 80 if(log.isInfoEnabled()) { 81 log.info("PluginManager has no plugins to init."); 82 } return; 84 } 85 ArrayList pluginList =plugin.getSubConfigurationElements(); 86 87 88 if(log.isInfoEnabled()) { 89 log.info("PluginManager is starting to load " + pluginList.size() + " plugins"); 90 } 92 try { 93 initPlugins(pluginList); 94 } catch (Exception e) { 96 if(log.isErrorEnabled()){ 97 log.error("IOException in PluginManager." + e); 98 } } } 102 103 104 105 106 private void initPlugins(ArrayList pluginList) throws IOException { 107 108 String classToLoad; 109 Object obj; 110 for (int i = 0; i < pluginList.size(); i++) { 111 ConfigurationElement pluginConf=(ConfigurationElement) pluginList.get(i); 112 if(pluginConf.getSubConfigurationElementByName("loader_class") == null){ 113 log.info("Configuration error missing loader_class in plugins"); 114 continue; 115 } 116 classToLoad = pluginConf.getSubConfigurationElementByName("loader_class").getValue(); 117 classToLoad = classToLoad.trim(); 118 try { 119 Class c = Class.forName(classToLoad); 120 Plugin p = (Plugin) c.newInstance(); 121 122 pluginsMap.put(p.getName(),p); 124 125 p.start(); 126 log.info("Loaded plugin " + classToLoad); 127 } catch (Throwable e) { 129 if(log.isErrorEnabled()){ 130 log.error("Plugin Manager was not able to load the " + classToLoad + " plugin.", e); 131 } 132 } } }} | Popular Tags |