KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > javacoding > jspider > core > impl > PluginInstantiator


1 package net.javacoding.jspider.core.impl;
2
3 import net.javacoding.jspider.core.logging.Log;
4 import net.javacoding.jspider.core.logging.LogFactory;
5 import net.javacoding.jspider.core.util.config.PropertySet;
6 import net.javacoding.jspider.spi.Plugin;
7 import net.javacoding.jspider.mod.plugin.console.ConsolePlugin;
8
9 import java.lang.reflect.Constructor JavaDoc;
10 import java.lang.reflect.InvocationTargetException JavaDoc;
11
12 /**
13  * $Id: PluginInstantiator.java,v 1.3 2003/04/03 16:24:51 vanrogu Exp $
14  */

15 public class PluginInstantiator {
16
17     protected Log log;
18
19     public PluginInstantiator() {
20         log = LogFactory.getLog(PluginInstantiator.class);
21     }
22
23
24     public Plugin instantiate(Class JavaDoc pluginClass, String JavaDoc name, PropertySet config) {
25         Plugin plugin = null;
26
27         try {
28             log.debug("first trying to instantiate via ctr with (name, config) params");
29             plugin = instantiateWithNameAndConfig(pluginClass, name, config);
30
31             if (plugin == null) {
32                 log.debug("plugin not yet instantiated, trying via ctr with (config) param");
33                 plugin = instantiateWithConfig(pluginClass, name, config);
34             }
35             if (plugin == null) {
36                 log.debug("plugin not yet instantiated, trying via ctr with (name) param");
37                 plugin = instantiateWithName(pluginClass, name, config);
38             }
39             if (plugin == null) {
40                 log.debug("plugin not yet instantiated, trying via default constructor");
41                 plugin = (Plugin) pluginClass.newInstance();
42             }
43         } catch (InstantiationException JavaDoc e) {
44             log.error("cannot instantiate module - defaulting to console", e);
45             plugin = new ConsolePlugin();
46         } catch (IllegalAccessException JavaDoc e) {
47             log.error("cannot instantiate module - defaulting to console", e);
48             plugin = new ConsolePlugin();
49         }
50         log.debug("plugin instantiated.");
51         return plugin;
52     }
53
54     protected Plugin instantiateWithNameAndConfig(Class JavaDoc pluginClass, String JavaDoc name, PropertySet config) {
55         Plugin plugin = null;
56         try {
57             Class JavaDoc[] paramClasses = new Class JavaDoc[2];
58             paramClasses[0] = String JavaDoc.class;
59             paramClasses[1] = PropertySet.class;
60             Object JavaDoc[] params = new Object JavaDoc[2];
61             params[0] = name;
62             params[1] = config;
63             Constructor JavaDoc constructor = pluginClass.getDeclaredConstructor(paramClasses);
64             plugin = (Plugin) constructor.newInstance(params);
65         } catch (NoSuchMethodException JavaDoc e) {
66             log.debug("cannot instantiate module - constructor with name and PropertySet params not found", e);
67         } catch (InstantiationException JavaDoc e) {
68             log.debug("cannot instantiate module - InstantiationException", e);
69         } catch (InvocationTargetException JavaDoc e) {
70             log.debug("cannot instantiate module - InvocationTargetException", e);
71         } catch (IllegalAccessException JavaDoc e) {
72             log.debug("cannot instantiate module - IllegalAccessException", e);
73         }
74         return plugin;
75     }
76
77     protected Plugin instantiateWithConfig(Class JavaDoc pluginClass, String JavaDoc name, PropertySet config) {
78         Plugin plugin = null;
79         try {
80             Class JavaDoc[] paramClasses = new Class JavaDoc[1];
81             paramClasses[0] = PropertySet.class;
82             Object JavaDoc[] params = new Object JavaDoc[1];
83             params[0] = config;
84             Constructor JavaDoc constructor = pluginClass.getDeclaredConstructor(paramClasses);
85             plugin = (Plugin) constructor.newInstance(params);
86         } catch (NoSuchMethodException JavaDoc e) {
87             log.debug("cannot instantiate module - constructor with PropertySet param not found", e);
88         } catch (InstantiationException JavaDoc e) {
89             log.debug("cannot instantiate module - InstantiationException", e);
90         } catch (InvocationTargetException JavaDoc e) {
91             log.debug("cannot instantiate module - InvocationTargetException", e);
92         } catch (IllegalAccessException JavaDoc e) {
93             log.debug("cannot instantiate module - IllegalAccessException", e);
94         }
95         return plugin;
96     }
97
98     protected Plugin instantiateWithName(Class JavaDoc pluginClass, String JavaDoc name, PropertySet config) {
99         Plugin plugin = null;
100         try {
101             Class JavaDoc[] paramClasses = new Class JavaDoc[1];
102             paramClasses[0] = String JavaDoc.class;
103             Object JavaDoc[] params = new Object JavaDoc[1];
104             params[0] = name;
105             Constructor JavaDoc constructor = pluginClass.getDeclaredConstructor(paramClasses);
106             plugin = (Plugin) constructor.newInstance(params);
107         } catch (NoSuchMethodException JavaDoc e) {
108             log.debug("cannot instantiate module - constructor with name param not found", e);
109         } catch (InstantiationException JavaDoc e) {
110             log.debug("cannot instantiate module - InstantiationException", e);
111         } catch (InvocationTargetException JavaDoc e) {
112             log.debug("cannot instantiate module - InvocationTargetException", e);
113         } catch (IllegalAccessException JavaDoc e) {
114             log.debug("cannot instantiate module - IllegalAccessException", e);
115         }
116         return plugin;
117     }
118
119 }
120
Popular Tags