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 expanders, GetProperty getProperty)` Constructor with a getProperty.

### Method Summary

Methods
`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 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.