Class TomlPropertiesBuilder

java.lang.Object
org.refcodes.struct.PathMapBuilderImpl<String>
org.refcodes.struct.CanonicalMapBuilderImpl
All Implemented Interfaces:
Flushable, Serializable, Map<String,String>, org.refcodes.component.Flushable, org.refcodes.component.Flushable.FlushBuilder<ResourceProperties.ResourcePropertiesBuilder>, org.refcodes.mixin.AnnotatorAccessor, org.refcodes.mixin.Clearable, org.refcodes.mixin.DelimiterAccessor, org.refcodes.mixin.Dumpable, org.refcodes.mixin.EmptyAccessor, org.refcodes.mixin.TypeAccessor<String>, Properties, Properties.MutableProperties, Properties.PropertiesBuilder, ResourceProperties, ResourceProperties.MutableResoureProperties, ResourceProperties.ResourcePropertiesBuilder, org.refcodes.struct.CanonicalMap, org.refcodes.struct.CanonicalMap.CanonicalMapBuilder, org.refcodes.struct.CanonicalMap.MutableCanonicalMap, org.refcodes.struct.Containable, org.refcodes.struct.Dictionary<String,String>, org.refcodes.struct.Dictionary.MutableDictionary<String,String>, org.refcodes.struct.Dictionary.MutableDictionary.DictionaryBuilder<String,String,org.refcodes.struct.PathMap.PathMapBuilder<String>>, org.refcodes.struct.InterOperableMap<String>, org.refcodes.struct.InterOperableMap.InterOperableMapBuilder<String>, org.refcodes.struct.InterOperableMap.MutableInterOperableMap<String>, org.refcodes.struct.Keys<String,String>, org.refcodes.struct.Keys.MutableKeys<String,String>, org.refcodes.struct.Keys.MutableValues<String,String>, org.refcodes.struct.PathMap<String>, org.refcodes.struct.PathMap.MutablePathMap<String>, org.refcodes.struct.PathMap.PathMapBuilder<String>

public class TomlPropertiesBuilder extends AbstractResourcePropertiesBuilder
Implementation of the ResourceProperties.ResourcePropertiesBuilder interface with support of so called "TOML properties". In addition, nested sections are supported: A section represents the first portion of a path and looks like such: [SectionA] ValueA=A This results in key/value property of: SectionA/ValueA=A [SectionA] ValueA=A [[SectionB]] ValueB=B SectionA/ValueA=A SectionA/SectionB/ValueB=B For TOML properties, see "https://en.wikipedia.org/wiki/TOML"
See Also:
  • Field Details

    • DELIMITERS

      public static final char[] DELIMITERS
  • Constructor Details

    • TomlPropertiesBuilder

      public TomlPropertiesBuilder()
      Create an empty TomlPropertiesBuilder instance using the default path delimiter "/" (Delimiter.PATH) for the path declarations.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(Object aObj)
      Create a TomlPropertiesBuilder instance containing the elements as of PathMap.MutablePathMap.insert(Object) using the default path delimiter "/" (Delimiter.PATH) for the path declarations: "Inspects the given object and adds all elements found in the given object. Elements of type Map, Collection and arrays are identified and handled as of their type: The path for each value in a Map is appended with its according key. The path for each value in a Collection or array is appended with its according index of occurrence (in case of a List or an array, its actual index). In case of reflection, the path for each member is appended with its according mamber's name. All elements (e.g. the members and values) are inspected recursively which results in the according paths of the terminating values."
      Parameters:
      aObj - The object from which the elements are to be added.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(Properties aProperties)
      Create a TomlPropertiesBuilder instance containing the elements of the provided Properties instance using the default path delimiter "/" (Delimiter.PATH) for the path declarations
      Parameters:
      aProperties - the properties to be added.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(Properties.PropertiesBuilder aProperties)
      Create a TomlPropertiesBuilder instance containing the elements of the provided Properties.PropertiesBuilder instance using the default path delimiter "/" (Delimiter.PATH) for the path declarations
      Parameters:
      aProperties - the properties to be added.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(Map<?,?> aProperties)
      Create a TomlPropertiesBuilder instance containing the elements of the provided Map instance using the default path delimiter "/" (Delimiter.PATH) for the path declarations
      Parameters:
      aProperties - the properties to be added.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(File aFile) throws IOException, ParseException
      Loads the TOML properties from the given File.
      Parameters:
      aFile - The File from which to load the properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(File aFile, char... aDelimiters) throws IOException, ParseException
      Loads the TOML properties from the given File.
      Parameters:
      aFile - The File from which to load the properties.
      aDelimiters - The path delimiters to be used when parsing the source's properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(File aFile, org.refcodes.runtime.ConfigLocator aConfigLocator) throws IOException, ParseException
      Loads or seeks the TOML properties from the given File. A provided ConfigLocator describes the locations to additional crawl for the desired file.
      Parameters:
      aFile - The File from which to load the properties.
      aConfigLocator - The ConfigLocator describes the locations to additional crawl for the desired file.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(File aFile, org.refcodes.runtime.ConfigLocator aConfigLocator, char... aDelimiters) throws IOException, ParseException
      Loads or seeks the TOML properties from the given File. A provided ConfigLocator describes the locations to additional crawl for the desired file.
      Parameters:
      aFile - The File from which to load the properties.
      aConfigLocator - The ConfigLocator describes the locations to additional crawl for the desired file.
      aDelimiters - The path delimiters to be used when parsing the source's properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(String aFilePath) throws IOException, ParseException
      Loads the TOML properties from the given file's path.
      Parameters:
      aFilePath - The path to the file from which to load the properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(String aFilePath, char... aDelimiters) throws IOException, ParseException
      Loads the TOML properties from the given file's path.
      Parameters:
      aFilePath - The path to the file from which to load the properties.
      aDelimiters - The path delimiters to be used when parsing the source's properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(Class<?> aResourceClass, String aFilePath) throws IOException, ParseException
      Loads the TOML properties from the given file's path.
      Parameters:
      aResourceClass - The class which's class loader is to take care of loading the properties (from inside a JAR).
      aFilePath - The file path of the class's resources from which to load the properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(Class<?> aResourceClass, String aFilePath, char... aDelimiters) throws IOException, ParseException
      Loads the TOML properties from the given file's path.
      Parameters:
      aResourceClass - The class which's class loader is to take care of loading the properties (from inside a JAR).
      aFilePath - The file path of the class's resources from which to load the properties.
      aDelimiters - The path delimiters to be used when parsing the source's properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(String aFilePath, org.refcodes.runtime.ConfigLocator aConfigLocator) throws IOException, ParseException
      Loads the TOML properties from the given file's path. A provided ConfigLocator describes the locations to additional crawl for the desired file.
      Parameters:
      aFilePath - The path to the file from which to load the properties.
      aConfigLocator - The ConfigLocator describes the locations to additional crawl for the desired file.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(String aFilePath, org.refcodes.runtime.ConfigLocator aConfigLocator, char... aDelimiters) throws IOException, ParseException
      Loads the TOML properties from the given file's path. A provided ConfigLocator describes the locations to additional crawl for the desired file.
      Parameters:
      aFilePath - The path to the file from which to load the properties.
      aConfigLocator - The ConfigLocator describes the locations to additional crawl for the desired file.
      aDelimiters - The path delimiters to be used when parsing the source's properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(Class<?> aResourceClass, String aFilePath, org.refcodes.runtime.ConfigLocator aConfigLocator) throws IOException, ParseException
      Loads the TOML properties from the given file's path. A provided ConfigLocator describes the locations to additional crawl for the desired file. Finally (if nothing else succeeds) the properties are loaded by the provided class's class loader which takes care of loading the properties (in case the file path is a relative path, also the absolute path with a prefixed path delimiter "/" is probed).
      Parameters:
      aResourceClass - The class which's class loader is to take care of loading the properties (from inside a JAR).
      aFilePath - The file path of the class's resources from which to load the properties.
      aConfigLocator - The ConfigLocator describes the locations to additional crawl for the desired file.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(Class<?> aResourceClass, String aFilePath, org.refcodes.runtime.ConfigLocator aConfigLocator, char... aDelimiters) throws IOException, ParseException
      Loads the TOML properties from the given file's path. A provided ConfigLocator describes the locations to additional crawl for the desired file. Finally (if nothing else succeeds) the properties are loaded by the provided class's class loader which takes care of loading the properties (in case the file path is a relative path, also the absolute path with a prefixed path delimiter "/" is probed). *
      Parameters:
      aResourceClass - The class which's class loader is to take care of loading the properties (from inside a JAR).
      aFilePath - The file path of the class's resources from which to load the properties.
      aConfigLocator - The ConfigLocator describes the locations to additional crawl for the desired file.
      aDelimiters - The path delimiters to be used when parsing the source's properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(URL aUrl) throws IOException, ParseException
      Loads the TOML properties from the given URL.
      Parameters:
      aUrl - The URL from which to read the properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(URL aUrl, char... aDelimiters) throws IOException, ParseException
      Loads the TOML properties from the given URL.
      Parameters:
      aUrl - The URL from which to read the properties.
      aDelimiters - The path delimiters to be used when parsing the source's properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(InputStream aInputStream) throws IOException, ParseException
      Reads the TOML properties from the given InputStream.
      Parameters:
      aInputStream - The InputStream from which to read the properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • TomlPropertiesBuilder

      public TomlPropertiesBuilder(InputStream aInputStream, char... aDelimiters) throws IOException, ParseException
      Reads the TOML properties from the given InputStream.
      Parameters:
      aInputStream - The InputStream from which to read the properties.
      aDelimiters - The path delimiters to be used when parsing the source's properties.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
  • Method Details

    • loadFrom

      public Properties loadFrom(File aFile) throws IOException, ParseException
      Loads the properties from the given File. Save them using the method ResourceProperties.MutableResoureProperties.saveTo(File). The default implementation uses the hook method ResourceProperties.MutableResoureProperties.loadFrom(InputStream, char...) to finally load and parse the properties.
      Parameters:
      aFile - The File from which to load the properties.
      Returns:
      The Properties as loaded from the resource and applied to this instance.
      Throws:
      IOException - thrown in case loading the properties failed
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • loadFrom

      public Properties loadFrom(InputStream aInputStream) throws IOException, ParseException
      Loads the properties from the given InputStream. Save them using the method ResourceProperties.MutableResoureProperties.saveTo(OutputStream). The default implementation uses the hook method ResourceProperties.MutableResoureProperties.loadFrom(InputStream, char...) to finally load and parse the properties.
      Parameters:
      aInputStream - The InputStream from which to load the properties.
      Returns:
      The Properties as loaded from the resource and applied to this instance.
      Throws:
      IOException - thrown in case loading the properties failed
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • parseFrom

      public void parseFrom(String aSerialized) throws ParseException
      Inspects the given serialized representation and adds all declared elements found. Unmarshaled elements of type Map, Collection and arrays are identified and handled as of their type: The path for each value in a Map is appended with its according key. The path for each value in a Collection or array is appended with its according index of occurrence (in case of a List or an array, its actual index). The default implementation uses the hook method ResourceProperties.MutableResoureProperties.loadFrom(InputStream, char...) to finally load and parse the properties.
      Parameters:
      aSerialized - The serialized representation which is to be parsed for the therein declared elements being added with their according determined paths.
      Throws:
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • seekFrom

      public Properties seekFrom(String aFilePath) throws IOException, ParseException
      Loads a properties file from the file path directly or (if not found) from the first folder containing such a file as of the specification for the ConfigLocator (if not provided, then ConfigLocator.ALL is assumed). The default implementation uses the hook method ResourceProperties.MutableResoureProperties.loadFrom(InputStream, char...) to finally load and parse the properties.
      Parameters:
      aFilePath - The file path from which to load the properties.
      Returns:
      The Properties as loaded from the resource and applied to this instance.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • seekFrom

      public Properties seekFrom(Class<?> aResourceClass, String aFilePath) throws IOException, ParseException
      Loads a properties file from the file path directly or (if not found) from the first folder containing such a file as of the specification for the ConfigLocator (if not provided, then ConfigLocator.ALL is assumed). Finally (if nothing else succeeds) the properties are loaded by the provided class's class loader which takes care of loading the properties (in case the file path is a relative path, also the absolute path with a prefixed path delimiter "/" is probed). The default implementation uses the hook method ResourceProperties.MutableResoureProperties.loadFrom(InputStream, char...) to finally load and parse the properties.
      Parameters:
      aResourceClass - The class which's class loader is to take care of loading the properties (from inside a JAR).
      aFilePath - The file path from which to load the properties.
      Returns:
      The Properties as loaded from the resource and applied to this instance.
      Throws:
      IOException - thrown in case accessing or processing the properties file failed.
      ParseException - Signals that an error has been reached unexpectedly while parsing the data to be loaded.
    • createCanonicalMapFactory

      protected org.refcodes.struct.ext.factory.CanonicalMapFactory createCanonicalMapFactory()
      Abstract method to be implemented by the sub-classes returning the concrete CanonicalMapFactory responsible to fabricate the CanonicalMap instances as of the required notation.
      Specified by:
      createCanonicalMapFactory in class AbstractResourcePropertiesBuilder
      Returns:
      The CanonicalMapFactory supporting the required notation.