Class AbstractConfigurationFactory<C>

java.lang.Object
space.arim.dazzleconf.factory.AbstractConfigurationFactory<C>
Type Parameters:
C - the type of the configuration
All Implemented Interfaces:
ConfigurationFactory<C>

@Deprecated public abstract class AbstractConfigurationFactory<C> extends Object
Deprecated.
Superseded by the much better designed HumanReadableConfigurationFactory
Abstract implementation of ConfigurationFactory which takes care of IO boilerplate as well as configuration loading from a map. Only the required methods need be implemented.
Author:
A248
  • Constructor Details

    • AbstractConfigurationFactory

      protected AbstractConfigurationFactory(Class<C> configClass, ConfigurationOptions options)
      Deprecated.
      Creates from a config class and config options
      Parameters:
      configClass - the config class
      options - configuration options
      Throws:
      NullPointerException - if configClass or options is null
      IllegalArgumentException - if configClass is not an interface
      IllDefinedConfigException - if the configuration entries defined in the config class are invalid
  • Method Details

    • charset

      protected abstract Charset charset()
      Deprecated.
      The charset used by this factory
      Returns:
      the charset to use
    • loadMapFromReader

      protected abstract Map<String,​Object> loadMapFromReader(Reader reader) throws IOException, ConfigFormatSyntaxException
      Deprecated.
      Loads a raw map of nested values from the specified reader. The map returned is a hierarchical map of nested maps.
      Parameters:
      reader - the reader
      Returns:
      the raw map of values
      Throws:
      IOException - if an I/O error occurs
      ConfigFormatSyntaxException - if the configuration format syntax is incorrect
    • writeMapToWriter

      protected abstract void writeMapToWriter(Map<String,​Object> config, Writer writer) throws IOException
      Deprecated.
      Writes a raw map of nested values to the specified writer. Inverse operation of loadMapFromReader(Reader).

      For implementations returning true in supportsCommentsThroughWrapper(), special treatment is required in the implementation of this method. Namely, configuration values may be commented or uncommented. If uncommented, they are an everyday object. If commented, they are wrapped in CommentedWrapper, which includes the config value itself as well as the comments which are placed before it. Comments may also apply to config sections, therefore CommentWrapper may also wrap nested maps.
      Parameters:
      config - the raw map of nested values (and possibly comments)
      writer - the writer
      Throws:
      IOException - if an I/O error occurs
    • supportsCommentsThroughWrapper

      protected boolean supportsCommentsThroughWrapper()
      Deprecated.
      Whether this implementation actively supports comments by recognising CommentedWrapper in config values. It is insufficient for the underlying format to support comments; the implementation of this config factory must also recognise CommentedWrapper values. See writeMapToWriter(Map, Writer) for more information.
      Returns:
      true if comments supported by recognising CommentedWrapper, false otherwise
    • pseudoCommentsSuffix

      protected String pseudoCommentsSuffix()
      Deprecated.
      If the configuration format does not natively support comments, it is possible to attach a "comment" as a string value before the configuration entry which is to be commented, with the use of some key suffix.

      If this method returns a non empty string, this feature is enabled. For example, if this returns '-comment', using the Json configuration language, comments will be written as shown:
         retries-comment: "determines the amount of retries"
         retries: 3
       
      Returns:
      an empty string if disabled, otherwise the suffix to append to form the keys of comments
    • getHeader

      protected List<String> getHeader()
      Deprecated.
      Gets the comment header on the top level configuration
      Returns:
      the comment header
    • getConfigClass

      public Class<C> getConfigClass()
      Description copied from interface: ConfigurationFactory
      Gets the configuration class this factory is for
      Specified by:
      getConfigClass in interface ConfigurationFactory<C>
      Returns:
      the configuration class
    • getOptions

      public ConfigurationOptions getOptions()
      Description copied from interface: ConfigurationFactory
      Gets the configuration options this factory uses
      Specified by:
      getOptions in interface ConfigurationFactory<C>
      Returns:
      the configuration options
    • load

      public C load(ReadableByteChannel readChannel) throws IOException, InvalidConfigException
      Description copied from interface: ConfigurationFactory
      Reads configuration data from a readable channel
      Specified by:
      load in interface ConfigurationFactory<C>
      Parameters:
      readChannel - the channel from which to read the data
      Returns:
      the read config data
      Throws:
      IOException - if an I/O error occurs
      InvalidConfigException - if the configuration is invalid. Where possible, more specific subclasses are thrown
    • load

      public C load(InputStream inputStream) throws IOException, InvalidConfigException
      Description copied from interface: ConfigurationFactory
      Reads configuration data from an input stream
      Specified by:
      load in interface ConfigurationFactory<C>
      Parameters:
      inputStream - the stream from which to read the data
      Returns:
      the read config data
      Throws:
      IOException - if an I/O error occurs
      InvalidConfigException - if the configuration is invalid. Where possible, more specific subclasses are thrown
    • load

      public C load(ReadableByteChannel readChannel, C auxiliaryEntries) throws IOException, InvalidConfigException
      Description copied from interface: ConfigurationFactory
      Reads configuration data from a readable channel with the given auxiliary configuration instance. Any keys missing in the loaded config data will be supplanted by the config instance's corresponding entry.

      By checking if the returned configuration implements AuxiliaryKeys, the caller can determine whether any of the auxiliary entries were used.
      Specified by:
      load in interface ConfigurationFactory<C>
      Parameters:
      readChannel - the channel from which to read the data
      auxiliaryEntries - the auxiliary configuration instance
      Returns:
      the read config data
      Throws:
      IOException - if an I/O error occurs
      InvalidConfigException - if the configuration is invalid. Where possible, more specific subclasses are thrown
    • load

      public C load(InputStream inputStream, C auxiliaryEntries) throws IOException, InvalidConfigException
      Description copied from interface: ConfigurationFactory
      Reads configuration data from an input stream with the given auxiliary configuration instance. Any keys missing in the loaded config data will be supplanted by the config instance's corresponding entry.

      By checking if the returned configuration implements AuxiliaryKeys, the caller can determine whether any of the auxiliary entries were used.
      Specified by:
      load in interface ConfigurationFactory<C>
      Parameters:
      inputStream - the stream from which to read the data
      auxiliaryEntries - the auxiliary configuration instance
      Returns:
      the read config data
      Throws:
      IOException - if an I/O error occurs
      InvalidConfigException - if the configuration is invalid. Where possible, more specific subclasses are thrown
    • loadDefaults

      public C loadDefaults()
      Description copied from interface: ConfigurationFactory
      Reads the default configuration data from annotations in ConfDefault

      If any config entry is missing a default value annotation, or the default values cannot be deserialised to the appropriate config value, IllDefinedConfigException is thrown
      Specified by:
      loadDefaults in interface ConfigurationFactory<C>
      Returns:
      the read config data
    • write

      public void write(C configData, WritableByteChannel writableChannel) throws IOException
      Description copied from interface: ConfigurationFactory
      Writes configuration data to a writable byte channel
      Specified by:
      write in interface ConfigurationFactory<C>
      Parameters:
      configData - the configuration data
      writableChannel - the channel to which to write the data
      Throws:
      IOException - if an I/O error occurs
    • write

      public void write(C configData, OutputStream outputStream) throws IOException
      Description copied from interface: ConfigurationFactory
      Writes configuration data to an output stream
      Specified by:
      write in interface ConfigurationFactory<C>
      Parameters:
      configData - the configuration data
      outputStream - the stream to which to write the data
      Throws:
      IOException - if an I/O error occurs