## 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
`ParseProperties(Project project, java.util.Collection<PropertyExpander> expanders, GetProperty getProperty)` Constructor with a getProperty.

Method Summary
`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.