Class DefaultConfigurationKey

java.lang.Object
org.apache.commons.configuration2.tree.DefaultConfigurationKey

public class DefaultConfigurationKey extends Object

A simple class that supports creation of and iteration on configuration keys supported by a DefaultExpressionEngine object.

For key creation the class works similar to a StringBuffer: There are several appendXXXX() methods with which single parts of a key can be constructed. All these methods return a reference to the actual object so they can be written in a chain. When using this methods the exact syntax for keys need not be known.

This class also defines a specialized iterator for configuration keys. With such an iterator a key can be tokenized into its single parts. For each part it can be checked whether it has an associated index.

Instances of this class are always associated with an instance of DefaultExpressionEngine, from which the current delimiters are obtained. So key creation and parsing is specific to this associated expression engine.

Since:
1.3
  • Field Details

    • INITIAL_SIZE

      private static final int INITIAL_SIZE
      Constant for the initial StringBuffer size.
      See Also:
    • expressionEngine

      private final DefaultExpressionEngine expressionEngine
      Stores a reference to the associated expression engine.
    • keyBuffer

      private final StringBuilder keyBuffer
      Holds a buffer with the so far created key.
  • Constructor Details

    • DefaultConfigurationKey

      public DefaultConfigurationKey(DefaultExpressionEngine engine)
      Creates a new instance of DefaultConfigurationKey and sets the associated expression engine.
      Parameters:
      engine - the expression engine (must not be null)
      Throws:
      IllegalArgumentException - if the expression engine is null
    • DefaultConfigurationKey

      public DefaultConfigurationKey(DefaultExpressionEngine engine, String key)
      Creates a new instance of DefaultConfigurationKey and sets the associated expression engine and an initial key.
      Parameters:
      engine - the expression engine (must not be null)
      key - the key to be wrapped
      Throws:
      IllegalArgumentException - if the expression engine is null
  • Method Details

    • partsEqual

      private static boolean partsEqual(DefaultConfigurationKey.KeyIterator it1, DefaultConfigurationKey.KeyIterator it2)
      Helper method for comparing two key parts.
      Parameters:
      it1 - the iterator with the first part
      it2 - the iterator with the second part
      Returns:
      a flag if both parts are equal
    • append

      public DefaultConfigurationKey append(String property)
      Appends the name of a property to this key. If necessary, a property delimiter will be added. Property delimiters in the given string will not be escaped.
      Parameters:
      property - the name of the property to be added
      Returns:
      a reference to this object
    • append

      public DefaultConfigurationKey append(String property, boolean escape)
      Appends the name of a property to this key. If necessary, a property delimiter will be added. If the boolean argument is set to true, property delimiters contained in the property name will be escaped.
      Parameters:
      property - the name of the property to be added
      escape - a flag if property delimiters in the passed in property name should be escaped
      Returns:
      a reference to this object
    • appendAttribute

      public DefaultConfigurationKey appendAttribute(String attr)
      Appends an attribute to this configuration key.
      Parameters:
      attr - the name of the attribute to be appended
      Returns:
      a reference to this object
    • appendIndex

      public DefaultConfigurationKey appendIndex(int index)
      Appends an index to this configuration key.
      Parameters:
      index - the index to be appended
      Returns:
      a reference to this object
    • attributeName

      public String attributeName(String key)
      Extracts the name of the attribute from the given attribute key. This method removes the attribute markers - if any - from the specified key.
      Parameters:
      key - the attribute key
      Returns:
      the name of the corresponding attribute
    • commonKey

      Returns a configuration key object that is initialized with the part of the key that is common to this key and the passed in key.
      Parameters:
      other - the other key
      Returns:
      a key object with the common key part
    • constructAttributeKey

      public String constructAttributeKey(String key)
      Decorates the given key so that it represents an attribute. Adds special start and end markers. The passed in string will be modified only if does not already represent an attribute.
      Parameters:
      key - the key to be decorated
      Returns:
      the decorated attribute key
    • differenceKey

      public DefaultConfigurationKey differenceKey(DefaultConfigurationKey other)
      Returns the "difference key" to a given key. This value is the part of the passed in key that differs from this key. There is the following relation: other = key.commonKey(other) + key.differenceKey(other) for an arbitrary configuration key key.
      Parameters:
      other - the key for which the difference is to be calculated
      Returns:
      the difference key
    • equals

      public boolean equals(Object obj)
      Checks if two ConfigurationKey objects are equal. Two instances of this class are considered equal if they have the same content (i.e. their internal string representation is equal). The expression engine property is not taken into account.
      Overrides:
      equals in class Object
      Parameters:
      obj - the object to compare
      Returns:
      a flag if both objects are equal
    • escapeDelimiters

      private String escapeDelimiters(String key)
      Escapes the delimiters in the specified string.
      Parameters:
      key - the key to be escaped
      Returns:
      the escaped key
    • getExpressionEngine

      public DefaultExpressionEngine getExpressionEngine()
      Gets the associated default expression engine.
      Returns:
      the associated expression engine
    • getSymbols

      private DefaultExpressionEngineSymbols getSymbols()
      Gets the symbols object from the associated expression engine.
      Returns:
      the DefaultExpressionEngineSymbols
    • hashCode

      public int hashCode()
      Returns the hash code for this object.
      Overrides:
      hashCode in class Object
      Returns:
      the hash code
    • hasLeadingDelimiter

      private boolean hasLeadingDelimiter(String key)
      Helper method that checks if the specified key starts with a property delimiter.
      Parameters:
      key - the key to check
      Returns:
      a flag if there is a leading delimiter
    • hasTrailingDelimiter

      private boolean hasTrailingDelimiter(String key)
      Helper method that checks if the specified key ends with a property delimiter.
      Parameters:
      key - the key to check
      Returns:
      a flag if there is a trailing delimiter
    • isAttributeKey

      public boolean isAttributeKey(String key)
      Tests if the specified key represents an attribute according to the current expression engine.
      Parameters:
      key - the key to be checked
      Returns:
      true if this is an attribute key, false otherwise
    • iterator

      Returns an iterator for iterating over the single components of this configuration key.
      Returns:
      an iterator for this key
    • length

      public int length()
      Returns the actual length of this configuration key.
      Returns:
      the length of this key
    • removeAttributeMarkers

      private String removeAttributeMarkers(String key)
      Helper method for removing attribute markers from a key.
      Parameters:
      key - the key
      Returns:
      the key with removed attribute markers
    • setLength

      public void setLength(int len)
      Sets the new length of this configuration key. With this method it is possible to truncate the key, e.g. to return to a state prior calling some append() methods. The semantic is the same as the setLength() method of StringBuilder.
      Parameters:
      len - the new length of the key
    • toString

      public String toString()
      Returns a string representation of this object. This is the configuration key as a plain string.
      Overrides:
      toString in class Object
      Returns:
      a string for this object
    • trim

      public String trim(String key)
      Removes delimiters at the beginning and the end of the specified key.
      Parameters:
      key - the key
      Returns:
      the key with removed property delimiters
    • trimLeft

      public String trimLeft(String key)
      Removes leading property delimiters from the specified key.
      Parameters:
      key - the key
      Returns:
      the key with removed leading property delimiters
    • trimRight

      public String trimRight(String key)
      Removes trailing property delimiters from the specified key.
      Parameters:
      key - the key
      Returns:
      the key with removed trailing property delimiters
    • unescapeDelimiters

      private String unescapeDelimiters(String key)
      Unescapes the delimiters in the specified string.
      Parameters:
      key - the key to be unescaped
      Returns:
      the unescaped key