Class ConfigStore

java.lang.Object
org.apache.juneau.Context
org.apache.juneau.config.store.ConfigStore
All Implemented Interfaces:
Closeable, AutoCloseable, AnnotationProvider
Direct Known Subclasses:
ClasspathStore, FileStore, MemoryStore, SqlStore

public abstract class ConfigStore extends Context implements Closeable
Represents a storage location for configuration files.

Content stores require two methods to be implemented:

Notes:
  • This class is thread safe and reusable.
  • Constructor Details

  • Method Details

    • read

      public abstract String read(String name) throws IOException
      Returns the contents of the configuration file.
      Parameters:
      name - The config file name.
      Returns:
      The contents of the configuration file.
      A blank string if the config does not exist.
      Never null.
      Throws:
      IOException - Thrown by underlying stream.
    • write

      public abstract String write(String name, String expectedContents, String newContents) throws IOException
      Saves the contents of the configuration file if the underlying storage hasn't been modified.
      Parameters:
      name - The config file name.
      expectedContents - The expected contents of the file.
      newContents - The new contents.
      Returns:
      If null, then we successfully stored the contents of the file.
      Otherwise the contents of the file have changed and we return the new contents of the file.
      Throws:
      IOException - Thrown by underlying stream.
    • exists

      public abstract boolean exists(String name)
      Checks whether the configuration with the specified name exists in this store.
      Parameters:
      name - The config name.
      Returns:
      true if the configuration with the specified name exists in this store.
    • register

      Registers a new listener on this store.
      Parameters:
      name - The configuration name to listen for.
      l - The new listener.
      Returns:
      This object.
    • unregister

      Unregisters a listener from this store.
      Parameters:
      name - The configuration name to listen for.
      l - The listener to unregister.
      Returns:
      This object.
    • getMap

      public ConfigMap getMap(String name) throws IOException
      Returns a map file containing the parsed contents of a configuration.
      Parameters:
      name - The configuration name.
      Returns:
      The parsed configuration.
      Never null.
      Throws:
      IOException - Thrown by underlying stream.
    • update

      public ConfigStore update(String name, String contents)
      Called when the physical contents of a config file have changed.

      Triggers calls to ConfigStoreListener.onChange(String) on all registered listeners.

      Parameters:
      name - The config name (e.g. the filename without the extension).
      contents - The new contents.
      Returns:
      This object.
    • update

      public ConfigStore update(String name, String... contentLines)
      Convenience method for updating the contents of a file with lines.
      Parameters:
      name - The config name (e.g. the filename without the extension).
      contentLines - The new contents.
      Returns:
      This object.
    • resolveName

      protected String resolveName(String name)
      Subclasses can override this method to convert config names to internal forms.

      For example, the FileStore class can take in both "MyConfig" and "MyConfig.cfg" as names that both resolve to "MyConfig.cfg".

      Parameters:
      name - The name to resolve.
      Returns:
      The resolved name.