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.