org.apache.tools.ant.types
Class PropertySet

java.lang.Object
  extended by org.apache.tools.ant.ProjectComponent
      extended by org.apache.tools.ant.types.DataType
          extended by org.apache.tools.ant.types.PropertySet
All Implemented Interfaces:
java.lang.Cloneable, java.lang.Iterable<Resource>, ResourceCollection

public class PropertySet
extends DataType
implements ResourceCollection

A set of properties.

Since:
Ant 1.6

Nested Class Summary
static class PropertySet.BuiltinPropertySetName
          Used for propertyref's builtin attribute.
static class PropertySet.PropertyRef
          This is a nested class containing a reference to some properties and optionally a source of properties.
 
Field Summary
 
Fields inherited from class org.apache.tools.ant.types.DataType
checked, ref
 
Fields inherited from class org.apache.tools.ant.ProjectComponent
description, location, project
 
Constructor Summary
PropertySet()
           
 
Method Summary
 void add(FileNameMapper fileNameMapper)
          Add a nested FileNameMapper.
 void addPropertyref(PropertySet.PropertyRef ref)
          Add a property reference (nested element) to the references to be used.
 void addPropertyset(PropertySet ref)
          Add another property set to this set.
 void appendBuiltin(PropertySet.BuiltinPropertySetName b)
          Allow builtin (all, system or commandline) properties in the set.
 void appendName(java.lang.String name)
          Allow properties of a particular name in the set.
 void appendPrefix(java.lang.String prefix)
          Allow properties whose names start with a prefix in the set.
 void appendRegex(java.lang.String regex)
          Allow properties whose names match a regex in the set.
protected  void assertNotReference()
          Ensures this data type is not a reference.
 Mapper createMapper()
          Create a mapper to map the property names.
protected  void dieOnCircularReference(java.util.Stack<java.lang.Object> stk, Project p)
          Check to see whether any DataType we hold references to is included in the Stack (which holds all DataType instances that directly or indirectly reference this instance, including this instance itself).
 boolean getDynamic()
          Get the dynamic attribute.
 Mapper getMapper()
          Get the mapper attribute.
 java.util.Properties getProperties()
          This is the operation to get the existing or recalculated properties.
protected  PropertySet getRef()
          Performs the check for circular references and returns the referenced PropertySet.
 boolean isFilesystemOnly()
          Fulfill the ResourceCollection contract.
 java.util.Iterator<Resource> iterator()
          Fulfill the ResourceCollection interface.
 void setDynamic(boolean dynamic)
          Set whether to reevaluate the set everytime the set is used.
 void setMapper(java.lang.String type, java.lang.String from, java.lang.String to)
          Set a mapper to change property names.
 void setNegate(boolean negate)
          Set whether to negate results.
 void setRefid(Reference r)
          Sets the value of the refid attribute.
 int size()
          Fulfill the ResourceCollection contract.
 java.lang.String toString()
          A debug toString.
 
Methods inherited from class org.apache.tools.ant.types.DataType
checkAttributesAllowed, checkChildrenAllowed, circularReference, clone, dieOnCircularReference, dieOnCircularReference, getCheckedRef, getCheckedRef, getCheckedRef, getCheckedRef, getDataTypeName, getRefid, invokeCircularReferenceCheck, isChecked, isReference, noChildrenAllowed, pushAndInvokeCircularReferenceCheck, setChecked, tooManyAttributes
 
Methods inherited from class org.apache.tools.ant.ProjectComponent
getDescription, getLocation, getProject, log, log, setDescription, setLocation, setProject
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PropertySet

public PropertySet()
Method Detail

appendName

public void appendName(java.lang.String name)
Allow properties of a particular name in the set.

Parameters:
name - the property name to allow.

appendRegex

public void appendRegex(java.lang.String regex)
Allow properties whose names match a regex in the set.

Parameters:
regex - the regular expression to use.

appendPrefix

public void appendPrefix(java.lang.String prefix)
Allow properties whose names start with a prefix in the set.

Parameters:
prefix - the prefix to use.

appendBuiltin

public void appendBuiltin(PropertySet.BuiltinPropertySetName b)
Allow builtin (all, system or commandline) properties in the set.

Parameters:
b - the type of builtin properties.

setMapper

public void setMapper(java.lang.String type,
                      java.lang.String from,
                      java.lang.String to)
Set a mapper to change property names.

Parameters:
type - mapper type.
from - source pattern.
to - output pattern.

addPropertyref

public void addPropertyref(PropertySet.PropertyRef ref)
Add a property reference (nested element) to the references to be used.

Parameters:
ref - a property reference.

addPropertyset

public void addPropertyset(PropertySet ref)
Add another property set to this set.

Parameters:
ref - another property set.

createMapper

public Mapper createMapper()
Create a mapper to map the property names.

Returns:
a mapper to be configured.

add

public void add(FileNameMapper fileNameMapper)
Add a nested FileNameMapper.

Parameters:
fileNameMapper - the mapper to add.
Since:
Ant 1.6.3

setDynamic

public void setDynamic(boolean dynamic)
Set whether to reevaluate the set everytime the set is used. Default is true.

Parameters:
dynamic - if true, reevaluate the property set each time the set is used. if false cache the property set the first time and use the cached set on subsequent occasions.

setNegate

public void setNegate(boolean negate)
Set whether to negate results. If "true", all properties not selected by nested elements will be returned. Default is "false".

Parameters:
negate - if true, negate the selection criteria.

getDynamic

public boolean getDynamic()
Get the dynamic attribute.

Returns:
true if the property set is to be evaluated each time it is used.

getMapper

public Mapper getMapper()
Get the mapper attribute.

Returns:
the mapper attribute.

getProperties

public java.util.Properties getProperties()
This is the operation to get the existing or recalculated properties.

Returns:
the properties for this propertyset.

getRef

protected PropertySet getRef()
Performs the check for circular references and returns the referenced PropertySet.

Returns:
the referenced PropertySet.

setRefid

public final void setRefid(Reference r)
Sets the value of the refid attribute.

Overrides:
setRefid in class DataType
Parameters:
r - the reference this datatype should point to.
Throws:
BuildException - if another attribute was set, since refid and all other attributes are mutually exclusive.

assertNotReference

protected final void assertNotReference()
Ensures this data type is not a reference.

Calling this method as the first line of every bean method of this data type (setXyz, addXyz, createXyz) ensure proper handling of the refid attribute.

Throws:
BuildException - if the refid attribute was already set, since refid and all other attributes are mutually exclusive.

toString

public java.lang.String toString()
A debug toString. This gets a comma separated list of key=value pairs for the properties in the set. The output order is sorted according to the keys' natural order.

Overrides:
toString in class DataType
Returns:
a string rep of this object.

iterator

public java.util.Iterator<Resource> iterator()
Fulfill the ResourceCollection interface.

Specified by:
iterator in interface java.lang.Iterable<Resource>
Specified by:
iterator in interface ResourceCollection
Returns:
an Iterator of Resources.
Since:
Ant 1.7

size

public int size()
Fulfill the ResourceCollection contract.

Specified by:
size in interface ResourceCollection
Returns:
the size of this ResourceCollection.

isFilesystemOnly

public boolean isFilesystemOnly()
Fulfill the ResourceCollection contract.

Specified by:
isFilesystemOnly in interface ResourceCollection
Returns:
whether this is a filesystem-only resource collection.

dieOnCircularReference

protected void dieOnCircularReference(java.util.Stack<java.lang.Object> stk,
                                      Project p)
                               throws BuildException
Description copied from class: DataType
Check to see whether any DataType we hold references to is included in the Stack (which holds all DataType instances that directly or indirectly reference this instance, including this instance itself).

If one is included, throw a BuildException created by circularReference.

This implementation is appropriate only for a DataType that cannot hold other DataTypes as children.

The general contract of this method is that it shouldn't do anything if checked is true and set it to true on exit.

Overrides:
dieOnCircularReference in class DataType
Parameters:
stk - the stack of references to check.
p - the project to use to dereference the references.
Throws:
BuildException - on error.