Class NormalizedPropertiesDecorator

java.lang.Object
org.refcodes.properties.AbstractPropertiesDecorator<Properties>
org.refcodes.properties.NormalizedPropertiesDecorator
All Implemented Interfaces:
org.refcodes.mixin.AnnotatorAccessor, org.refcodes.mixin.DelimiterAccessor, org.refcodes.mixin.Dumpable, org.refcodes.mixin.EmptyAccessor, org.refcodes.mixin.TypeAccessor<String>, Properties, org.refcodes.struct.CanonicalMap, org.refcodes.struct.Containable, org.refcodes.struct.InterOperableMap<String>, org.refcodes.struct.Keys<String,String>, org.refcodes.struct.PathMap<String>, org.refcodes.struct.Table<String,String>

public class NormalizedPropertiesDecorator extends AbstractPropertiesDecorator<Properties>
The NormalizedPropertiesDecorator type decorates a Properties instance and converts a path delimiter such as the full-stop (".") to the Properties properties' path delimiter slash ("/", as of AbstractPropertiesDecorator.getDelimiter()). E.g. you get a projection of your Properties using "." as the path delimiter as if them had a "/" as path delimiter. Invoking NormalizedPropertiesDecorator(Properties, char[]) the constructor, you can define the delimiters to be projected to the default "/" delimiter (as of AbstractPropertiesDecorator.getDelimiter()). Upon accessing a key, the implementation first tests whether the decorated (underlying) Properties contain this key, then the decorated (underlying) Properties' keys are tested by converting the keys using the first provided delimiter to be replaced by the "/" delimiter". If we have a match, then this property is processed, else the procedure continues with the next delimiter. This means that the first match wins, if we have succeeding matches with succeeding delimiters then an AmbiguousKeyRuntimeException is thrown In case of accessing the keySet(), all keys are converted by replacing all the provided delimiters (or the full-stop ("."), depending on the constructor you called) to the default delimiter "/". In case we have a key collision then an AmbiguousKeyRuntimeException is thrown.
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.refcodes.mixin.AnnotatorAccessor

    org.refcodes.mixin.AnnotatorAccessor.AnnotatorBuilder<B extends org.refcodes.mixin.AnnotatorAccessor.AnnotatorBuilder<B>>, org.refcodes.mixin.AnnotatorAccessor.AnnotatorMutator, org.refcodes.mixin.AnnotatorAccessor.AnnotatorProperty

    Nested classes/interfaces inherited from interface org.refcodes.struct.CanonicalMap

    org.refcodes.struct.CanonicalMap.CanonicalMapBuilder, org.refcodes.struct.CanonicalMap.MutableCanonicalMap

    Nested classes/interfaces inherited from interface org.refcodes.mixin.DelimiterAccessor

    org.refcodes.mixin.DelimiterAccessor.DelimiterBuilder<B extends org.refcodes.mixin.DelimiterAccessor.DelimiterBuilder<B>>, org.refcodes.mixin.DelimiterAccessor.DelimiterMutator, org.refcodes.mixin.DelimiterAccessor.DelimiterProperty

    Nested classes/interfaces inherited from interface org.refcodes.mixin.EmptyAccessor

    org.refcodes.mixin.EmptyAccessor.EmptyMutator, org.refcodes.mixin.EmptyAccessor.EmptyProperty

    Nested classes/interfaces inherited from interface org.refcodes.struct.InterOperableMap

    org.refcodes.struct.InterOperableMap.InterOperableMapBuilder<T extends Object>, org.refcodes.struct.InterOperableMap.MutableInterOperableMap<T extends Object>

    Nested classes/interfaces inherited from interface org.refcodes.struct.Keys

    org.refcodes.struct.Keys.MutableKeys<K extends Object,V extends Object>, org.refcodes.struct.Keys.MutableValues<K extends Object,V extends Object>

    Nested classes/interfaces inherited from interface org.refcodes.struct.PathMap

    org.refcodes.struct.PathMap.MutablePathMap<T extends Object>, org.refcodes.struct.PathMap.PathMapBuilder<T extends Object>

    Nested classes/interfaces inherited from interface org.refcodes.properties.Properties

    Properties.MutableProperties, Properties.PropertiesBuilder

    Nested classes/interfaces inherited from interface org.refcodes.struct.Table

    org.refcodes.struct.Table.TableDictionary<K extends Object,V extends Object>

    Nested classes/interfaces inherited from interface org.refcodes.mixin.TypeAccessor

    org.refcodes.mixin.TypeAccessor.TypeBuilder<T extends Object,B extends org.refcodes.mixin.TypeAccessor.TypeBuilder<T,B>>, org.refcodes.mixin.TypeAccessor.TypeMutator<T extends Object>, org.refcodes.mixin.TypeAccessor.TypeProperty<T extends Object>
  • Field Summary

    Fields inherited from interface org.refcodes.struct.PathMap

    ANNOTATOR, DELIMITER

    Fields inherited from interface org.refcodes.properties.Properties

    DEFAULT_COMMENT
  • Constructor Summary

    Constructors
    Constructor
    Description
    Decorates the provided Properties with additional behavior by normalizing the key representing the path pointing to the according value.
    NormalizedPropertiesDecorator(Properties aProperties, char[] aDelimiters)
    Decorates the provided Properties with additional behavior by normalizing the key representing the path pointing to the according value.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    protected static String
    fromNormalized(String aKey, char aFromDelimiter, char aToDelimiter)
     
    get(Object aKey)
    retrieveFrom(String aFromPath)
    retrieveTo(String aToPath)
    protected String
     
    protected static String
    toNormalized(String aKey, char aToDelimiter, char... aFromDelimiters)
     

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface org.refcodes.struct.CanonicalMap

    asArray, asArray, asArray, asArray, asBooleanArray, asBooleanArray, asBooleanArray, asBooleanArray, asByteArray, asByteArray, asByteArray, asByteArray, asCharArray, asCharArray, asCharArray, asCharArray, asDoubleArray, asDoubleArray, asDoubleArray, asDoubleArray, asFloatArray, asFloatArray, asFloatArray, asFloatArray, asIntArray, asIntArray, asIntArray, asIntArray, asLongArray, asLongArray, asLongArray, asLongArray, asShortArray, asShortArray, asShortArray, asShortArray, queryBetween, toMap, toProperties

    Methods inherited from interface org.refcodes.struct.InterOperableMap

    getBoolean, getBoolean, getBoolean, getBoolean, getBoolean, getBooleanOr, getBooleanOr, getBooleanOr, getBooleanOr, getBooleanOr, getByte, getByte, getByte, getByte, getByte, getByteOr, getByteOr, getByteOr, getByteOr, getByteOr, getChar, getChar, getChar, getChar, getChar, getCharOr, getCharOr, getCharOr, getCharOr, getCharOr, getClass, getClass, getClass, getClass, getClass, getClassOr, getClassOr, getClassOr, getClassOr, getClassOr, getDouble, getDouble, getDouble, getDouble, getDouble, getDoubleOr, getDoubleOr, getDoubleOr, getDoubleOr, getDoubleOr, getEnum, getEnum, getEnum, getEnum, getEnum, getEnumOr, getEnumOr, getEnumOr, getEnumOr, getEnumOr, getEnumOr, getEnumOr, getEnumOr, getEnumOr, getEnumOr, getFloat, getFloat, getFloat, getFloat, getFloat, getFloatOr, getFloatOr, getFloatOr, getFloatOr, getFloatOr, getInt, getInt, getInt, getInt, getInt, getIntOr, getIntOr, getIntOr, getIntOr, getIntOr, getLong, getLong, getLong, getLong, getLong, getLongOr, getLongOr, getLongOr, getLongOr, getLongOr, getShort, getShort, getShort, getShort, getShort, getShortOr, getShortOr, getShortOr, getShortOr, getShortOr, getString, getString, getString, getString, getString, getStringOr, getStringOr, getStringOr, getStringOr, getStringOr

    Methods inherited from interface org.refcodes.struct.Keys

    getOr, use

    Methods inherited from interface org.refcodes.struct.PathMap

    children, children, children, children, children, children, containsKey, containsKey, containsKey, dirs, dirs, dirs, dirs, dirs, dirs, findPaths, fromExternalPath, get, get, get, getArray, getArray, getArray, getArray, getArray, getArray, getArrayIndexes, getArrayIndexes, getArrayIndexes, getArrayIndexes, getArrayIndexes, getArrayOr, getArrayOr, getArrayOr, getArrayOr, getArrayOr, getArrayOr, getDirIndexes, getDirIndexes, getDirIndexes, getDirIndexes, getDirIndexes, getDirIndexes, getRootPath, getValueAt, getValueAt, getValueAt, getValueAt, getValueAt, getValueAt, hasChildren, hasChildren, hasChildren, hasChildren, hasChildren, hasDirAt, hasDirAt, hasDirAt, hasDirAt, hasDirAt, hasDirAt, hasDirAt, hasDirAt, hasDirAt, hasDirAt, hasDirAt, hasParentPath, hasPath, hasPath, hasPath, hasPath, hasPath, hasSubDirs, hasSubDirs, hasSubDirs, hasSubDirs, hasValue, hasValue, hasValue, hasValue, hasValue, hasValueAt, hasValueAt, hasValueAt, hasValueAt, hasValueAt, hasValueAt, hasValueAt, hasValueAt, isArray, isArray, isArray, isArray, isArray, isArray, isChild, isChild, isChild, isChild, isDir, isDir, isDir, isDir, isDir, isEqualTo, isIndexDir, isIndexDir, isIndexDir, isIndexDir, isIndexDir, isLeaf, isLeaf, isLeaf, isLeaf, isLeaf, isRootPath, keySet, keySet, keySet, keySet, keySet, lastArrayIndex, lastArrayIndex, lastArrayIndex, lastArrayIndex, lastArrayIndex, lastArrayIndex, lastDirIndex, lastDirIndex, lastDirIndex, lastDirIndex, lastDirIndex, lastDirIndex, leaves, leaves, leaves, leaves, leaves, leaves, nextArrayIndex, nextArrayIndex, nextArrayIndex, nextArrayIndex, nextArrayIndex, nextArrayIndex, nextDirIndex, nextDirIndex, nextDirIndex, nextDirIndex, nextDirIndex, nextDirIndex, paths, paths, paths, paths, paths, paths, queryPaths, queryPaths, queryPaths, queryPaths, queryPaths, queryPaths, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, sortedKeys, toDataStructure, toExternalPath, toInstance, toInstance, toLeaf, toMap, toNormalizedPath, toParentPath, toPath, toPath, toPath, toPath, toPathElements, toPathList, toPathStack, toPropertyPath, toType, toType, toType, toType, toType, toType, toType, toType
  • Constructor Details

    • NormalizedPropertiesDecorator

      public NormalizedPropertiesDecorator(Properties aProperties)
      Decorates the provided Properties with additional behavior by normalizing the key representing the path pointing to the according value. You provide Properties with a path delimiter different from the default delimiter and you get Properties which act as if the delimiter was the default delimiter: Paths containing the namespace delimiter "." (as of Delimiter.NAMESPACE are converted to paths' with delimiter "/" (as of Delimiter.PATH. Changes applied to the provided Properties affect the decorator.
      Parameters:
      aProperties - The Properties to be decorated.
    • NormalizedPropertiesDecorator

      public NormalizedPropertiesDecorator(Properties aProperties, char[] aDelimiters)
      Decorates the provided Properties with additional behavior by normalizing the key representing the path pointing to the according value. You provide Properties with a path delimiter different from the default delimiter and you get Properties which act as if the delimiter was the default delimiter: Paths containing the provided delimiters are converted to the paths' with delimiter "/" (as of Delimiter.PATH. Changes applied to the provided Properties affect the decorator.
      Parameters:
      aProperties - The Properties to be decorated.
      aDelimiters - The delimiters to be converted forth and back
  • Method Details