Package org.jboss.modules

# Class ClassifyingModuleLoader

java.lang.Object
org.jboss.modules.ModuleLoader
org.jboss.modules.ClassifyingModuleLoader

public final class ClassifyingModuleLoader extends ModuleLoader
A module loader which selects a delegate module loader based upon the prefix of the module name. Longer names are matched first always.

Author:
  David M. Lloyd

## Field Summary

### Fields inherited from class org.jboss.modules.ModuleLoader

`NO_FINDERS`

## Constructor Summary

Constructors
Constructor
Description
`ClassifyingModuleLoader(String name, Map<String,ModuleLoader> delegates, ModuleLoader defaultLoader)`
Construct a new instance.

## Method Summary

Modifier and Type
Method
Description
`protected ModuleSpec`
`findModule(String name)`
Find a Module's specification in this ModuleLoader by its name.
`protected Module`
`preloadModule(String name)`
Preload a module based on an identifier.
`void`
`setDelegates(Map<String,ModuleLoader> delegates)`
Change the delegates map.
`String`
`toString()`
Get the string representation of this module loader.

### Methods inherited from class org.jboss.modules.ModuleLoader

`findLoadedModuleLocal, findLoadedModuleLocal, findModule, forClass, forClassLoader, getDependencies, getFinders, getModuleDescription, installMBeanServer, iterateModules, iterateModules, loadModule, loadModule, loadModuleLocal, loadModuleLocal, preloadExportedModule, preloadExportedModule, preloadModule, preloadModule, preloadModule, refreshResourceLoaders, relink, setAndRefreshResourceLoaders, setAndRelinkDependencies, unloadModuleLocal, unloadModuleLocal`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### ClassifyingModuleLoader

public ClassifyingModuleLoader(String name, Map<String,ModuleLoader> delegates, ModuleLoader defaultLoader)
Construct a new instance. The given delegates map is copied.

Parameters:
  `delegates` - the default delegates map to use
  `defaultLoader` - the default loader to use if no delegate mapping exists

## Method Details

### preloadModule

protected Module preloadModule(String name) throws ModuleLoadException
Preload a module based on an identifier. By default, delegation is only done for system and this method otherwise simply invokes `ModuleLoader.loadModuleLocal(String)`. A delegating module loader may delegate to the appropriate module loader based on loader-specific criteria (via the `ModuleLoader.preloadModule(String, ModuleLoader)` method).

Overrides:
  `preloadModule` in class `ModuleLoader`
Parameters:
  `name` - the module identifier
Returns:
  the load result, or `null` if the module is not found
Throws:
  `ModuleLoadException` - if an error occurs

### findModule

protected ModuleSpec findModule(String name) throws ModuleLoadException
Find a Module's specification in this ModuleLoader by its name. This can be overriden by sub-classes to implement the Module loading strategy for this loader. The default implementation iterates the module finders provided during construction.

If no module is found in this module loader with the given identifier, then this method should return `null`. If the module is found but some problem occurred (for example, a transitive dependency failed to load) then this method should throw a `ModuleLoadException` of the relevant type.

Overrides:
  `findModule` in class `ModuleLoader`
Parameters:
  `name` - the module name
Returns:
  the module specification, or `null` if no module is found with the given identifier
Throws:
  `ModuleLoadException` - if any problems occur finding the module

### setDelegates

public void setDelegates(Map<String,ModuleLoader> delegates)
Change the delegates map. A copy is made of the given map.

Parameters:
  `delegates` - the new delegates map to use

### toString

public String toString()
Description copied from class: `ModuleLoader`
Get the string representation of this module loader.

Overrides:
  `toString` in class `ModuleLoader`
Returns:
  the string representation