KickJava   Java API By Example, From Geeks To Geeks.

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


1 package net.javacoding.jspider.core.impl;
2
3 import net.javacoding.jspider.core.dispatch.impl.PluginSocket;
4 import net.javacoding.jspider.core.logging.Log;
5 import net.javacoding.jspider.core.logging.LogFactory;
6 import net.javacoding.jspider.core.util.config.*;
7 import net.javacoding.jspider.spi.Plugin;
8
9 import java.util.ArrayList JavaDoc;
10
11 /**
12  *
13  * $Id: PluginFactory.java,v 1.9 2003/04/22 16:43:34 vanrogu Exp $
14  *
15  * @author Günther Van Roey
16  */

17 public class PluginFactory {
18
19     PluginInstantiator pluginInstantiator;
20
21
22     public PluginFactory() {
23         pluginInstantiator = new PluginInstantiator();
24     }
25
26     public Plugin[] createPlugins() {
27
28         Log log = LogFactory.getLog(PluginFactory.class);
29         ArrayList JavaDoc loadedPlugins = new ArrayList JavaDoc();
30
31         PropertySet props = ConfigurationFactory.getConfiguration().getPluginsConfiguration();
32         PropertySet pluginsProps = new MappedPropertySet(ConfigConstants.PLUGINS,props);
33         int pluginCount = pluginsProps.getInteger(ConfigConstants.PLUGINS_COUNT, 0);
34         log.info("Loading " + pluginCount + " plugins.");
35
36         for (int i = 0; i < pluginCount; i++) {
37             String JavaDoc pluginInstance = pluginsProps.getString( "" + (i+1) + "." + ConfigConstants.PLUGINS_CONFIG, null);
38             if (pluginInstance != null) {
39                 log.info("Loading plugin configuration '" + pluginInstance + "'...");
40                 PropertySet config = ConfigurationFactory.getConfiguration().getPluginConfiguration(pluginInstance);
41                 PropertySet pluginConfig = new MappedPropertySet(ConfigConstants.PLUGIN, config);
42                 Class JavaDoc pluginClass = pluginConfig.getClass(ConfigConstants.PLUGIN_CLASS, null);
43                 if (pluginClass == null) {
44                     log.info("Plugin class '" + pluginConfig.getString(ConfigConstants.PLUGIN_CLASS, "") + "' not found");
45                 } else {
46                     PropertySet pluginParams = new MappedPropertySet(ConfigConstants.PLUGIN_CONFIG, pluginConfig);
47                     Plugin plugin = pluginInstantiator.instantiate(pluginClass, pluginInstance, pluginParams);
48
49                     PropertySet filterConfig = new MappedPropertySet(ConfigConstants.PLUGIN_FILTER, pluginConfig);
50                     if (filterConfig.getBoolean(ConfigConstants.PLUGIN_FILTER_ENABLED, false)) {
51
52                         log.info("Plugin uses local event filtering");
53                         loadedPlugins.add(new PluginSocket(plugin, filterConfig));
54                     } else {
55                         log.info("Plugin not configured for local event filtering");
56                         loadedPlugins.add(plugin);
57                     }
58
59                     log.info("Plugin Name : " + plugin.getName());
60                     log.info("Plugin Version : " + plugin.getVersion());
61                     log.info("Plugin Vendor : " + plugin.getVendor());
62                 }
63             } else {
64                 log.info("Plugin configuration '" + pluginInstance + "' couldn't be loaded");
65             }
66         }
67
68         log.info("Loaded " + loadedPlugins.size() + " plugins.");
69         return (Plugin[]) loadedPlugins.toArray(new Plugin[loadedPlugins.size()]);
70     }
71 }
72
Popular Tags