org.argouml.application.modules
Class ModuleLoader

java.lang.Object
  extended byorg.argouml.application.modules.ModuleLoader

public class ModuleLoader
extends Object

Handles loading of modules and plugins for ArgoUML.

Since:
0.9.4

Nested Class Summary
(package private)  class ModuleLoader.JarFileFilter
           
 
Field Summary
private static String argoHome
           
private static String argoRoot
           
static String CLASS_SUFFIX
          Class file suffix
private static Logger LOG
          Logger for this class.
private  Vector menuActionList
           
private  ArrayList moduleClasses
           
private static ModuleLoader singleton
           
private static Hashtable singletons
           
 
Constructor Summary
private ModuleLoader()
          Make sure the module loader cannot be instantiated from outside.
 
Method Summary
 boolean activateModule(ArgoModule module)
          Activate a loaded module.
 void addModuleAction(Vector popUpActions, Object context)
          Process all of the modules to add popup actions for the given context.
private  boolean classImplements(Object implementor, Class implemented)
           
private  void fireEvent(int eventType, ArgoModule module)
           
 String getArgoHome()
          Returns argo home.
 String getArgoRoot()
          Returns argo root.
static ArgoModule getCurrentSingleton(Class moduleClass)
          Gets the current singleton of the module type requested.
static ModuleLoader getInstance()
          Get the singleton instance.
 Object getModule(String key)
          Locates a module by key.
 ArrayList getModules()
          Get the list of modules.
 Pluggable getPlugin(Class pluginType, Object[] context)
          Returns a plug-in of a given type.
 ArrayList getPlugins(Class pluginType, Object[] context)
          Returns all plug-in of a given type.
 boolean hasPlugin(Class pluginType, Object[] context)
          Indicates whether a requested plug-in is available.
 void initialize()
          Load the internal modules.
private  boolean keyAlreadyLoaded(String key)
           
private  void loadClassFromLoader(ClassLoader classloader, String key, String classname, boolean secure)
           
 boolean loadInternalModules(Class loaderClass, String rsrcName)
          Load modules listed in Argo resources.
 boolean loadModules(InputStream is, String filename)
          Load modules from an input stream.
 void loadModulesFromClassPathJars()
          Load modules from jars in the class path
 void loadModulesFromExtensionDir()
          Search for and load modules from classpath, and from other places.
 boolean loadModulesFromFile(String moduleFile)
          Load modules from a property file.
 void loadModulesFromJar(String filename)
          Load modules from a jar file.
private  void loadModulesFromNamedDirectory(String dirname)
           
 void loadModulesFromPredefinedLists()
          Search for and load modules from predefined places.
private  void processJarFile(ClassLoader classloader, File file)
          Check the manifest of a jar file for an argo extension.
static boolean requestNewSingleton(Class modClass, ArgoSingletonModule moduleInstance)
          Requests the passed singleton to become the current singleton of the module type requested.
 void shutdown()
          Shut down all modules.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG

private static final Logger LOG
Logger for this class.


CLASS_SUFFIX

public static final String CLASS_SUFFIX
Class file suffix

See Also:
Constant Field Values

singleton

private static ModuleLoader singleton

moduleClasses

private ArrayList moduleClasses

menuActionList

private Vector menuActionList

singletons

private static Hashtable singletons

argoRoot

private static String argoRoot

argoHome

private static String argoHome
Constructor Detail

ModuleLoader

private ModuleLoader()
Make sure the module loader cannot be instantiated from outside.

Method Detail

getInstance

public static ModuleLoader getInstance()
Get the singleton instance.

Returns:
the module loader singleton

initialize

public void initialize()
Load the internal modules.


loadModulesFromPredefinedLists

public void loadModulesFromPredefinedLists()
Search for and load modules from predefined places. Look in the following locations in the following order, using System.getProperty() to retrieve the values. Property name ${user.dir} ${user.home} ${java.home}/lib


processJarFile

private void processJarFile(ClassLoader classloader,
                            File file)
Check the manifest of a jar file for an argo extension.


loadModulesFromExtensionDir

public void loadModulesFromExtensionDir()
Search for and load modules from classpath, and from other places.


loadModulesFromNamedDirectory

private void loadModulesFromNamedDirectory(String dirname)

loadModulesFromJar

public void loadModulesFromJar(String filename)
Load modules from a jar file.

Parameters:
filename - jar file name to load from

loadModulesFromClassPathJars

public void loadModulesFromClassPathJars()
Load modules from jars in the class path


loadInternalModules

public boolean loadInternalModules(Class loaderClass,
                                   String rsrcName)
Load modules listed in Argo resources.

Parameters:
loaderClass - class to retrieve classloader from
rsrcName - resource name to load
Returns:
false if the resource is not found

loadModulesFromFile

public boolean loadModulesFromFile(String moduleFile)
Load modules from a property file. The load may be successful even if no modules are loaded.

Parameters:
moduleFile - name of file
Returns:
false if the load succeeded

keyAlreadyLoaded

private boolean keyAlreadyLoaded(String key)

loadClassFromLoader

private void loadClassFromLoader(ClassLoader classloader,
                                 String key,
                                 String classname,
                                 boolean secure)

loadModules

public boolean loadModules(InputStream is,
                           String filename)
Load modules from an input stream. The load may be successful even if no modules are loaded.

Parameters:
is - input stream in property file format
filename - the input stream is from (for reporting purposes)
Returns:
false if the load succeeded

shutdown

public void shutdown()
Shut down all modules.


addModuleAction

public void addModuleAction(Vector popUpActions,
                            Object context)
Process all of the modules to add popup actions for the given context.

Parameters:
popUpActions - vector of actions
context - to filter by

getModules

public ArrayList getModules()
Get the list of modules.

Returns:
the list of modules.

getModule

public Object getModule(String key)
Locates a module by key.

Parameters:
key - module identifier to find
Returns:
a module object or null if not found.

activateModule

public boolean activateModule(ArgoModule module)
Activate a loaded module.

Parameters:
module - to activate
Returns:
true if the module was activated, false if not or if it was already active.

getCurrentSingleton

public static ArgoModule getCurrentSingleton(Class moduleClass)
Gets the current singleton of the module type requested.

Parameters:
moduleClass - the class of the module singleton
Returns:
null if there is some problem.

requestNewSingleton

public static boolean requestNewSingleton(Class modClass,
                                          ArgoSingletonModule moduleInstance)
Requests the passed singleton to become the current singleton of the module type requested. Singletons may refuse to be activated. In this case, requestNewSingleton returns false and does not deactivate the current singleton.

Parameters:
modClass - class which identifies the singleton
moduleInstance - the module to make the singleton
Returns:
true if the singleton is activated

getPlugin

public Pluggable getPlugin(Class pluginType,
                           Object[] context)
Returns a plug-in of a given type. The type of plug-in returned is determined by the class passed.

Parameters:
pluginType - a Class which extends Pluggable and indicates the type of plug-in to return.
context - Additional information used to choose between plugins.
Returns:
A plug-in class which extends the type of class passed as the argument or null if there is some problem.

hasPlugin

public boolean hasPlugin(Class pluginType,
                         Object[] context)
Indicates whether a requested plug-in is available. This guarantees not to instantiate the plug-in.

Parameters:
pluginType - a Class which extends Pluggable and indicates the type of plug-in to return.
context - Additional information used to choose between plugins.
Returns:
A plug-in class which extends the type of class passed as the argument.

getPlugins

public ArrayList getPlugins(Class pluginType,
                            Object[] context)
Returns all plug-in of a given type. The type of plug-in returned is determined by the class passed.

Parameters:
pluginType - a Class which extends Pluggable and indicates the type of plug-in to return.
context - An object (or null) which allows the plugin to determine if it should be included in a list.
Returns:
A Vector containing all the plugins of the type passed for the passed context, or null if none are available.

getArgoHome

public String getArgoHome()
Returns argo home.

Returns:
the argo home directory

getArgoRoot

public String getArgoRoot()
Returns argo root.

Returns:
the argo root directory

classImplements

private boolean classImplements(Object implementor,
                                Class implemented)

fireEvent

private void fireEvent(int eventType,
                       ArgoModule module)


ArgoUML © 1996-2004 (20050222)ArgoUML HomepageArgoUML Developers' pageArgoUML Cookbook