org.jfree.base

## Class AbstractBoot

- java.lang.Object
- - org.jfree.base.AbstractBoot

- All Implemented Interfaces:
    org.jfree.base.modules.SubSystem
  Direct Known Subclasses:
    BaseBoot

      public abstract class AbstractBoot
      extends java.lang.Object
      implements org.jfree.base.modules.SubSystem

  The common base for all Boot classes.

  This initializes the subsystem and all dependent subsystems. Implementors of this class have to provide a public static getInstance() method which returns a singleton instance of the booter implementation.

  Further creation of Boot object should be prevented using protected or private constructors in that class, or proper initialzation cannot be guaranteed.

  Author:
    Thomas Morgner

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractBoot()` Default constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Configuration` | `createDefaultHierarchicalConfiguration(java.lang.String staticConfig, java.lang.String userConfig, boolean addSysProps)` Creates a default configuration setup, which loads its settings from the static configuration (defaults provided by the developers of the library) and the user configuration (settings provided by the deployer).
    `protected Configuration` | `createDefaultHierarchicalConfiguration(java.lang.String staticConfig, java.lang.String userConfig, boolean addSysProps, java.lang.Class source)` Creates a default hierarchical configuration.
    `ExtendedConfiguration` | `getExtendedConfig()` Returns the global configuration as extended configuration.
    `Configuration` | `getGlobalConfig()` Returns the global configuration.
    `org.jfree.base.modules.PackageManager` | `getPackageManager()` Returns the packageManager instance of the package manager.
    `protected abstract BootableProjectInfo` | `getProjectInfo()` Returns the project info.
    `boolean` | `isBootDone()` Checks, whether the booting is complete.
    `boolean` | `isBootInProgress()` Checks, whether the booting is in progress.
    `protected AbstractBoot` | `loadBooter(java.lang.String classname)` Loads the specified booter implementation.
    `protected abstract Configuration` | `loadConfiguration()` Loads the configuration.
    `protected abstract void` | `performBoot()` Performs the boot.
    `void` | `start()` Starts the boot process.

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

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

- - ### Constructor Detail

    - #### AbstractBoot

          protected AbstractBoot()

      Default constructor.

  - ### Method Detail

    - #### getPackageManager

          public org.jfree.base.modules.PackageManager getPackageManager()

      Returns the packageManager instance of the package manager.
      Specified by:
        `getPackageManager` in interface `org.jfree.base.modules.SubSystem`
      Returns:
        The package manager.

    - #### getGlobalConfig

          public Configuration getGlobalConfig()

      Returns the global configuration.
      Specified by:
        `getGlobalConfig` in interface `org.jfree.base.modules.SubSystem`
      Returns:
        The global configuration.

    - #### isBootInProgress

          public final boolean isBootInProgress()

      Checks, whether the booting is in progress.
      Returns:
        true, if the booting is in progress, false otherwise.

    - #### isBootDone

          public final boolean isBootDone()

      Checks, whether the booting is complete.
      Returns:
        true, if the booting is complete, false otherwise.

    - #### loadConfiguration

          protected abstract Configuration loadConfiguration()

      Loads the configuration. This will be called exactly once.
      Returns:
        The configuration.

    - #### start

          public final void start()

      Starts the boot process.

    - #### performBoot

          protected abstract void performBoot()

      Performs the boot.

    - #### getProjectInfo

          protected abstract BootableProjectInfo getProjectInfo()

      Returns the project info.
      Returns:
        The project info.

    - #### loadBooter

          protected AbstractBoot loadBooter(java.lang.String classname)

      Loads the specified booter implementation.
      Parameters:
        `classname` - the class name.
      Returns:
        The boot class.

    - #### createDefaultHierarchicalConfiguration

          protected Configuration createDefaultHierarchicalConfiguration(java.lang.String staticConfig,
                                                             java.lang.String userConfig,
                                                             boolean addSysProps)

      Creates a default configuration setup, which loads its settings from the static configuration (defaults provided by the developers of the library) and the user configuration (settings provided by the deployer). The deployer's settings override the developer's settings. If the parameter `addSysProps` is set to true, the system properties will be added as third configuration layer. The system properties configuration allows to override all other settings.
      Parameters:
        `staticConfig` - the resource name of the developers configuration
        `userConfig` - the resource name of the deployers configuration
        `addSysProps` - a flag defining whether to include the system properties into the configuration.
      Returns:
        the configured Configuration instance.

    - #### createDefaultHierarchicalConfiguration

          protected Configuration createDefaultHierarchicalConfiguration(java.lang.String staticConfig,
                                                             java.lang.String userConfig,
                                                             boolean addSysProps,
                                                             java.lang.Class source)

      Creates a default hierarchical configuration.
      Parameters:
        `staticConfig` - the static configuration.
        `userConfig` - the user configuration.
        `addSysProps` - additional system properties.
        `source` - the source.
      Returns:
        The configuration.

    - #### getExtendedConfig

          public ExtendedConfiguration getExtendedConfig()

      Returns the global configuration as extended configuration.
      Specified by:
        `getExtendedConfig` in interface `org.jfree.base.modules.SubSystem`
      Returns:
        the extended configuration.