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

搜索引擎

开发平台:

Java

  1. package net.javacoding.jspider.core.impl;
  2. import net.javacoding.jspider.core.logging.Log;
  3. import net.javacoding.jspider.core.logging.LogFactory;
  4. import net.javacoding.jspider.core.util.config.PropertySet;
  5. import net.javacoding.jspider.spi.Plugin;
  6. import net.javacoding.jspider.mod.plugin.console.ConsolePlugin;
  7. import java.lang.reflect.Constructor;
  8. import java.lang.reflect.InvocationTargetException;
  9. /**
  10.  * $Id: PluginInstantiator.java,v 1.3 2003/04/03 16:24:51 vanrogu Exp $
  11.  */
  12. public class PluginInstantiator {
  13.     protected Log log;
  14.     public PluginInstantiator() {
  15.         log = LogFactory.getLog(PluginInstantiator.class);
  16.     }
  17.     public Plugin instantiate(Class pluginClass, String name, PropertySet config) {
  18.         Plugin plugin = null;
  19.         try {
  20.             log.debug("first trying to instantiate via ctr with (name, config) params");
  21.             plugin = instantiateWithNameAndConfig(pluginClass, name, config);
  22.             if (plugin == null) {
  23.                 log.debug("plugin not yet instantiated, trying via ctr with (config) param");
  24.                 plugin = instantiateWithConfig(pluginClass, name, config);
  25.             }
  26.             if (plugin == null) {
  27.                 log.debug("plugin not yet instantiated, trying via ctr with (name) param");
  28.                 plugin = instantiateWithName(pluginClass, name, config);
  29.             }
  30.             if (plugin == null) {
  31.                 log.debug("plugin not yet instantiated, trying via default constructor");
  32.                 plugin = (Plugin) pluginClass.newInstance();
  33.             }
  34.         } catch (InstantiationException e) {
  35.             log.error("cannot instantiate module - defaulting to console", e);
  36.             plugin = new ConsolePlugin();
  37.         } catch (IllegalAccessException e) {
  38.             log.error("cannot instantiate module - defaulting to console", e);
  39.             plugin = new ConsolePlugin();
  40.         }
  41.         log.debug("plugin instantiated.");
  42.         return plugin;
  43.     }
  44.     protected Plugin instantiateWithNameAndConfig(Class pluginClass, String name, PropertySet config) {
  45.         Plugin plugin = null;
  46.         try {
  47.             Class[] paramClasses = new Class[2];
  48.             paramClasses[0] = String.class;
  49.             paramClasses[1] = PropertySet.class;
  50.             Object[] params = new Object[2];
  51.             params[0] = name;
  52.             params[1] = config;
  53.             Constructor constructor = pluginClass.getDeclaredConstructor(paramClasses);
  54.             plugin = (Plugin) constructor.newInstance(params);
  55.         } catch (NoSuchMethodException e) {
  56.             log.debug("cannot instantiate module - constructor with name and PropertySet params not found", e);
  57.         } catch (InstantiationException e) {
  58.             log.debug("cannot instantiate module - InstantiationException", e);
  59.         } catch (InvocationTargetException e) {
  60.             log.debug("cannot instantiate module - InvocationTargetException", e);
  61.         } catch (IllegalAccessException e) {
  62.             log.debug("cannot instantiate module - IllegalAccessException", e);
  63.         }
  64.         return plugin;
  65.     }
  66.     protected Plugin instantiateWithConfig(Class pluginClass, String name, PropertySet config) {
  67.         Plugin plugin = null;
  68.         try {
  69.             Class[] paramClasses = new Class[1];
  70.             paramClasses[0] = PropertySet.class;
  71.             Object[] params = new Object[1];
  72.             params[0] = config;
  73.             Constructor constructor = pluginClass.getDeclaredConstructor(paramClasses);
  74.             plugin = (Plugin) constructor.newInstance(params);
  75.         } catch (NoSuchMethodException e) {
  76.             log.debug("cannot instantiate module - constructor with PropertySet param not found", e);
  77.         } catch (InstantiationException e) {
  78.             log.debug("cannot instantiate module - InstantiationException", e);
  79.         } catch (InvocationTargetException e) {
  80.             log.debug("cannot instantiate module - InvocationTargetException", e);
  81.         } catch (IllegalAccessException e) {
  82.             log.debug("cannot instantiate module - IllegalAccessException", e);
  83.         }
  84.         return plugin;
  85.     }
  86.     protected Plugin instantiateWithName(Class pluginClass, String name, PropertySet config) {
  87.         Plugin plugin = null;
  88.         try {
  89.             Class[] paramClasses = new Class[1];
  90.             paramClasses[0] = String.class;
  91.             Object[] params = new Object[1];
  92.             params[0] = name;
  93.             Constructor constructor = pluginClass.getDeclaredConstructor(paramClasses);
  94.             plugin = (Plugin) constructor.newInstance(params);
  95.         } catch (NoSuchMethodException e) {
  96.             log.debug("cannot instantiate module - constructor with name param not found", e);
  97.         } catch (InstantiationException e) {
  98.             log.debug("cannot instantiate module - InstantiationException", e);
  99.         } catch (InvocationTargetException e) {
  100.             log.debug("cannot instantiate module - InvocationTargetException", e);
  101.         } catch (IllegalAccessException e) {
  102.             log.debug("cannot instantiate module - IllegalAccessException", e);
  103.         }
  104.         return plugin;
  105.     }
  106. }