bodewig 2003/05/14 05:49:14
Modified: docs/manual/CoreTypes propertyset.html src/main/org/apache/tools/ant/types PropertySet.java Log: Add new builtin attribute to <propertyset> that selects certain predefined propertysets. Revision Changes Path 1.2 +10 -1 ant/docs/manual/CoreTypes/propertyset.html Index: propertyset.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTypes/propertyset.html,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- propertyset.html 12 May 2003 15:19:18 -0000 1.1 +++ propertyset.html 14 May 2003 12:49:14 -0000 1.2 @@ -42,7 +42,7 @@ <tr> <td valign="top">name</td> <td valign="top">Select the property with the given name.</td> - <td align="center" valign="top" rowspan="3">Exactly one of these.</td> + <td align="center" valign="top" rowspan="4">Exactly one of these.</td> </tr> <tr> <td valign="top">prefix</td> @@ -55,6 +55,15 @@ regular expression. Similar to <a href="mapper.html#regexp-mapper">regexp type mappers</a>, this equires a supported regular expression library.</td> + </tr> + <tr> + <td valign="top">builtin</td> + <td valign="top">Selects a builtin set of properties. Valid + values for this attribute are <code>all</code> for all Ant + properties, <code>system</code> for the system properties and + <code>commandline</code> for all properties specified on the + command line when invoking Ant (plus a number of special + internal Ant properties).</td> </tr> </table> 1.4 +47 -3 ant/src/main/org/apache/tools/ant/types/PropertySet.java Index: PropertySet.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/PropertySet.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PropertySet.java 12 May 2003 14:00:10 -0000 1.3 +++ PropertySet.java 14 May 2003 12:49:14 -0000 1.4 @@ -90,6 +90,7 @@ private String name; private String regex; private String prefix; + private String builtin; public void setName(String name) { assertValid("name", name); @@ -106,6 +107,12 @@ this.prefix = prefix; } + public void setBuiltin(BuiltinPropertySetName b) { + String builtin = b.getValue(); + assertValid("builtin", builtin); + this.builtin = builtin; + } + private void assertValid(String attr, String value) { if (value == null || value.length() < 1) { throw new BuildException("Invalid attribute: " + attr); @@ -118,7 +125,8 @@ } public String toString() { - return "name=" + name + ", regex=" + regex + ", prefix=" + prefix; + return "name=" + name + ", regex=" + regex + ", prefix=" + prefix + + ", builtin=" + builtin; } } @@ -141,6 +149,12 @@ addPropertyref(ref); } + public void appendBuiltin(BuiltinPropertySetName b) { + PropertyRef ref = new PropertyRef(); + ref.setBuiltin(b); + addPropertyref(ref); + } + public void setMapper(String type, String from, String to) { Mapper mapper = createMapper(); Mapper.MapperType mapperType = new Mapper.MapperType(); @@ -256,8 +270,26 @@ names.addElement(name); } } - } - else { + } else if (ref.builtin != null) { + + Enumeration enum = null; + if (ref.builtin.equals(BuiltinPropertySetName.ALL)) { + enum = properties.keys(); + } else if (ref.builtin.equals(BuiltinPropertySetName.SYSTEM)) { + enum = System.getProperties().keys(); + } else if (ref.builtin.equals(BuiltinPropertySetName + .COMMANDLINE)) { + enum = getProject().getUserProperties().keys(); + } else { + throw new BuildException("Impossible: Invalid builtin " + + "attribute!"); + } + + while (enum.hasMoreElements()) { + names.addElement(enum.nextElement()); + } + + } else { throw new BuildException("Impossible: Invalid PropertyRef!"); } } @@ -321,5 +353,17 @@ noAttributeSet = false; } private boolean noAttributeSet = true; + + /** + * Used for propertyref's builtin attribute. + */ + public static class BuiltinPropertySetName extends EnumeratedAttribute { + static final String ALL = "all"; + static final String SYSTEM = "system"; + static final String COMMANDLINE = "commandline"; + public String[] getValues() { + return new String[] {ALL, SYSTEM, COMMANDLINE}; + } + } } // END class PropertySet