01: package org.objectweb.celtix.plugins;
02:
03: import org.objectweb.celtix.configuration.Configuration;
04:
05: /**
06: * Provides methods for registering, unregistering and obtaining plugin objects.
07: */
08: public interface PluginManager {
09:
10: /**
11: * Get the plugin class loader.
12: * @return ClassLoader
13: */
14: ClassLoader getPluginClassLoader();
15:
16: /**
17: * Returns the <code>Configuration</code>.
18: * @return Configuration
19: */
20: Configuration getConfiguration();
21:
22: /**
23: * Returns the plugin object with the given name.
24: * @param name - the name of the plugin.
25: * @return Object - the plugin.
26: * @throws PluginException - if there is a circular dependency loading
27: * dependent objects of the plugin.
28: */
29: Object getPluginByName(String name) throws PluginException;
30:
31: /**
32: * Returns the plugin object with the given classname.
33: * @param className - the class name of the plugin.
34: * @return Object - the plugin.
35: * @throws PluginException - if there is a circular dependency loading
36: * dependent objects of the plugin.
37: */
38: Object getPlugin(String className) throws PluginException;
39:
40: /**
41: * Registers a plugin object with the bus.
42: * @param plugin - the plugin to register.
43: * @throws PluginException if the given plugin is already registered.
44: */
45: void registerPlugin(Object plugin) throws PluginException;
46:
47: /**
48: * Explicitly unregister the given plugin object from the bus.
49: * A plugin must be unregistered before it can be unloaded.
50: * @param plugin - the plugin to unregister.
51: * @throws PluginException if the given plugin is not registered.
52: */
53: void unregisterPlugin(Object plugin) throws PluginException;
54:
55: /**
56: * Unload a plugin object after it has been explicitly unregistered.
57: * @param plugin - the plugin to unload.
58: * @throws PluginException if the given plugin is still registered.
59: */
60: void unloadPlugin(Object plugin) throws PluginException;
61: }
|