Class ClasspathStore

All Implemented Interfaces:
Closeable, AutoCloseable, AnnotationProvider

public class ClasspathStore extends ConfigStore
Classpath-based storage location for configuration files.

Looks inside the JVM classpath for configuration files.

Configuration files retrieved from the classpath can be modified but not persisted.

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

  • Constructor Details

  • Method Details

    • create

      public static ClasspathStore.Builder create()
      Creates a new builder for this object.
      Returns:
      A new builder.
    • copy

      Description copied from class: Context
      Creates a builder from this context object.

      Builders are used to define new contexts (e.g. serializers, parsers) based on existing configurations.

      Overrides:
      copy in class Context
      Returns:
      A new Builder object.
    • read

      public String read(String name) throws IOException
      Description copied from class: ConfigStore
      Returns the contents of the configuration file.
      Specified by:
      read in class ConfigStore
      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 String write(String name, String expectedContents, String newContents) throws IOException
      Description copied from class: ConfigStore
      Saves the contents of the configuration file if the underlying storage hasn't been modified.
      Specified by:
      write in class ConfigStore
      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 boolean exists(String name)
      Description copied from class: ConfigStore
      Checks whether the configuration with the specified name exists in this store.
      Specified by:
      exists in class ConfigStore
      Parameters:
      name - The config name.
      Returns:
      true if the configuration with the specified name exists in this store.
    • update

      public ClasspathStore update(String name, String newContents)
      Description copied from class: ConfigStore
      Called when the physical contents of a config file have changed.

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

      Overrides:
      update in class ConfigStore
      Parameters:
      name - The config name (e.g. the filename without the extension).
      newContents - The new contents.
      Returns:
      This object.
    • close

      public void close() throws IOException
      No-op.
      Throws:
      IOException