org.apache.tools.ant.property

## Class ParseProperties

- java.lang.Object
- - org.apache.tools.ant.property.ParseProperties

- All Implemented Interfaces:
    ParseNextProperty

      public class ParseProperties
      extends java.lang.Object
      implements ParseNextProperty

  Parse properties using a collection of expanders.
  Since:
    Ant 1.8.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ParseProperties(Project project, java.util.Collection<PropertyExpander> expanders, GetProperty getProperty)` Constructor with a getProperty.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `containsProperties(java.lang.String value)` Learn whether a String contains replaceable properties.
    `Project` | `getProject()` Get the project.
    `java.lang.Object` | `parseNextProperty(java.lang.String value, java.text.ParsePosition pos)` Return any property that can be parsed from the specified position in the specified String.
    `java.lang.Object` | `parseProperties(java.lang.String value)` Decode properties from a String representation.

    - ### Methods inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### ParseProperties

          public ParseProperties(Project project,
                         java.util.Collection<PropertyExpander> expanders,
                         GetProperty getProperty)

      Constructor with a getProperty.
      Parameters:
        `project` - the current Ant project.
        `expanders` - a sequence of expanders
        `getProperty` - property resolver.

  - ### Method Detail

    - #### getProject

          public Project getProject()

      Get the project.
      Specified by:
        `getProject` in interface `ParseNextProperty`
      Returns:
        the current Ant project.

    - #### parseProperties

          public java.lang.Object parseProperties(java.lang.String value)

      Decode properties from a String representation.
      - This implementation starts parsing the `value` parameter (unsurprisingly) at the beginning and asks each `PropertyExpander` whether there is a property reference at that point. PropertyExpanders return the name of a property they may find and may advance the parse position.
      - If the PropertyExpander returns `null` the method continues with the next PropertyExpander, otherwise it tries to look up the property's value using the configured `GetProperty` instance.
      - Once all PropertyExpanders have been consulted, the parse position is advanced by one character and the process repeated until `value` is exhausted.

      If the entire contents of `value` resolves to a single property, the looked up property value is returned. Otherwise a String is returned that concatenates the non-property parts of `value` and the expanded values of the properties that have been found.

      Parameters:
        `value` - The string to be scanned for property references. May be `null`, in which case this method returns immediately with no effect.
      Returns:
        the original string with the properties replaced, or `null` if the original string is `null`.

    - #### containsProperties

          public boolean containsProperties(java.lang.String value)

      Learn whether a String contains replaceable properties.

      Uses the configured `PropertyExpanders` and scans through the string. Returns true as soon as any expander finds a property.

      Parameters:
        `value` - the String to check.
      Returns:
        `true` if `value` contains property notation.

    - #### parseNextProperty

          public java.lang.Object parseNextProperty(java.lang.String value,
                                           java.text.ParsePosition pos)

      Return any property that can be parsed from the specified position in the specified String.

      Uses the configured `PropertyExpanders` and `GetProperty` instance .

      Specified by:
        `parseNextProperty` in interface `ParseNextProperty`
      Parameters:
        `value` - String to parse
        `pos` - ParsePosition
      Returns:
        Object or null if no property is at the current location. If a property reference has been found but the property doesn't expand to a value, the property's name is returned.