PluginFactory.java
上传用户:qing5858
上传日期:2015-10-27
资源大小:6056k
文件大小:3k
源码类别:

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.impl;
  2. import net.javacoding.jspider.core.dispatch.impl.PluginSocket;
  3. import net.javacoding.jspider.core.logging.Log;
  4. import net.javacoding.jspider.core.logging.LogFactory;
  5. import net.javacoding.jspider.core.util.config.*;
  6. import net.javacoding.jspider.spi.Plugin;
  7. import java.util.ArrayList;
  8. /**
  9.  *
  10.  * $Id: PluginFactory.java,v 1.9 2003/04/22 16:43:34 vanrogu Exp $
  11.  *
  12.  * @author G黱ther Van Roey
  13.  */
  14. public class PluginFactory {
  15.     PluginInstantiator pluginInstantiator;
  16.     public PluginFactory() {
  17.         pluginInstantiator = new PluginInstantiator();
  18.     }
  19.     public Plugin[] createPlugins() {
  20.         Log log = LogFactory.getLog(PluginFactory.class);
  21.         ArrayList loadedPlugins = new ArrayList();
  22.         PropertySet props = ConfigurationFactory.getConfiguration().getPluginsConfiguration();
  23.         PropertySet pluginsProps = new MappedPropertySet(ConfigConstants.PLUGINS,props);
  24.         int pluginCount = pluginsProps.getInteger(ConfigConstants.PLUGINS_COUNT, 0);
  25.         log.info("Loading " + pluginCount + " plugins.");
  26.         for (int i = 0; i < pluginCount; i++) {
  27.             String pluginInstance = pluginsProps.getString( "" + (i+1) + "." + ConfigConstants.PLUGINS_CONFIG, null);
  28.             if (pluginInstance != null) {
  29.                 log.info("Loading plugin configuration '" + pluginInstance + "'...");
  30.                 PropertySet config = ConfigurationFactory.getConfiguration().getPluginConfiguration(pluginInstance);
  31.                 PropertySet pluginConfig = new MappedPropertySet(ConfigConstants.PLUGIN, config);
  32.                 Class pluginClass = pluginConfig.getClass(ConfigConstants.PLUGIN_CLASS, null);
  33.                 if (pluginClass == null) {
  34.                     log.info("Plugin class '" + pluginConfig.getString(ConfigConstants.PLUGIN_CLASS, "") + "' not found");
  35.                 } else {
  36.                     PropertySet pluginParams = new MappedPropertySet(ConfigConstants.PLUGIN_CONFIG, pluginConfig);
  37.                     Plugin plugin = pluginInstantiator.instantiate(pluginClass, pluginInstance, pluginParams);
  38.                     PropertySet filterConfig = new MappedPropertySet(ConfigConstants.PLUGIN_FILTER, pluginConfig);
  39.                     if (filterConfig.getBoolean(ConfigConstants.PLUGIN_FILTER_ENABLED, false)) {
  40.                         log.info("Plugin uses local event filtering");
  41.                         loadedPlugins.add(new PluginSocket(plugin, filterConfig));
  42.                     } else {
  43.                         log.info("Plugin not configured for local event filtering");
  44.                         loadedPlugins.add(plugin);
  45.                     }
  46.                     log.info("Plugin Name    : " + plugin.getName());
  47.                     log.info("Plugin Version : " + plugin.getVersion());
  48.                     log.info("Plugin Vendor  : " + plugin.getVendor());
  49.                 }
  50.             } else {
  51.                 log.info("Plugin configuration '" + pluginInstance + "' couldn't be loaded");
  52.             }
  53.         }
  54.         log.info("Loaded " + loadedPlugins.size() + " plugins.");
  55.         return (Plugin[]) loadedPlugins.toArray(new Plugin[loadedPlugins.size()]);
  56.     }
  57. }