org.jfree.base.modules

## Interface Module

- All Superinterfaces:
    ModuleInfo
  All Known Implementing Classes:
    AbstractModule, DefaultLogModule

      public interface Module
      extends ModuleInfo

  A module encapsulates optional functionality within a project. Modules can be used as an easy way to make projects more configurable.

  The module system provides a controled way to check dependencies and to initialize the modules in a controlled way.

  Author:
    Thomas Morgner

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `configure(SubSystem subSystem)` Configures the module.
    `java.lang.String` | `getDescription()` Returns a short description of the modules functionality.
    `java.lang.String` | `getName()` Returns the module name.
    `ModuleInfo[]` | `getOptionalModules()` Returns an array of optional modules.
    `java.lang.String` | `getProducer()` Returns the name of the module producer.
    `ModuleInfo[]` | `getRequiredModules()` Returns an array of all required modules.
    `java.lang.String` | `getSubSystem()` Returns the modules subsystem.
    `void` | `initialize(SubSystem subSystem)` Initializes the module.

    - ### Methods inherited from interface org.jfree.base.modules.ModuleInfo

      `getMajorVersion, getMinorVersion, getModuleClass, getPatchLevel`

- - ### Method Detail

    - #### getRequiredModules

          ModuleInfo[] getRequiredModules()

      Returns an array of all required modules. If one of these modules is missing or cannot be initialized, the module itself will be not available.
      Returns:
        an array of the required modules.

    - #### getOptionalModules

          ModuleInfo[] getOptionalModules()

      Returns an array of optional modules. Missing or invalid modules are non fatal and will not harm the module itself.
      Returns:
        an array of optional module specifications.

    - #### initialize

          void initialize(SubSystem subSystem)
                   throws ModuleInitializeException

      Initializes the module. Use this method to perform all initial setup operations. This method is called only once in a modules lifetime. If the initializing cannot be completed, throw a ModuleInitializeException to indicate the error,. The module will not be available to the system.
      Parameters:
        `subSystem` - the subSystem.
      Throws:
        `ModuleInitializeException` - if an error ocurred while initializing the module.

    - #### configure

          void configure(SubSystem subSystem)

      Configures the module. This should load the default settings of the module.
      Parameters:
        `subSystem` - the subSystem.

    - #### getDescription

          java.lang.String getDescription()

      Returns a short description of the modules functionality.
      Returns:
        a module description.

    - #### getProducer

          java.lang.String getProducer()

      Returns the name of the module producer.
      Returns:
        the producer name

    - #### getName

          java.lang.String getName()

      Returns the module name. This name should be a short descriptive handle of the module.
      Returns:
        the module name

    - #### getSubSystem

          java.lang.String getSubSystem()

      Returns the modules subsystem. If this module is not part of an subsystem then return the modules name, but never null.
      Returns:
        the name of the subsystem.