Package org.apache.tools.ant.property

# Class ParseProperties

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

All Implemented Interfaces:
  `ParseNextProperty`

public class ParseProperties extends Object implements ParseNextProperty
Parse properties using a collection of expanders.

Since:
  Ant 1.8.0

- ## Constructor Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `containsProperties(String value)`
  Learn whether a String contains replaceable properties.
  `Project`
  `getProject()`
  Get the project.
  `Object`
  `parseNextProperty(String value, ParsePosition pos)`
  Return any property that can be parsed from the specified position in the specified String.
  `Object`
  `parseProperties(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 Details

  - ### ParseProperties

    public ParseProperties(Project project, Collection<PropertyExpander> expanders, GetProperty getProperty)
    Constructor with a getProperty.
    Parameters:
      `project` - the current Ant project.
      `expanders` - a sequence of expanders
      `getProperty` - property resolver.

- ## Method Details

  - ### getProject

    public Project getProject()
    Get the project.
    Specified by:
      `getProject` in interface `ParseNextProperty`
    Returns:
      the current Ant project.

  - ### parseProperties

    public Object parseProperties(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(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 Object parseNextProperty(String value, 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.