You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2003/05/12 14:57:06 UTC
cvs commit: ant/src/testcases/org/apache/tools/ant/taskdefs AntTest.java
bodewig 2003/05/12 05:57:05
Modified: src/etc/testcases/taskdefs ant.xml
src/main/org/apache/tools/ant/taskdefs Ant.java
CallTarget.java SubAnt.java
src/testcases/org/apache/tools/ant/taskdefs AntTest.java
Log:
Add nested <propertyset>s to <ant>, <antcall> and <subant>.
Revision Changes Path
1.10 +19 -0 ant/src/etc/testcases/taskdefs/ant.xml
Index: ant.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/ant.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ant.xml 16 Jul 2002 13:06:45 -0000 1.9
+++ ant.xml 12 May 2003 12:57:04 -0000 1.10
@@ -143,4 +143,23 @@
<property name="test" value="5" />
<echo message="The value of test is ${test}" />
</target>
+
+ <target name="test-propertyset">
+ <property name="test1" value="1"/>
+ <property name="test2" value="2"/>
+ <propertyset id="set">
+ <propertyref name="test1"/>
+ <mapper type="glob" from="*" to="*.x"/>
+ </propertyset>
+ <ant antfile="ant.xml" target="echo-for-propertyset-test"
+ inheritall="false">
+ <propertyset refid="set"/>
+ </ant>
+ </target>
+
+ <target name="echo-for-propertyset-test">
+ <echo>test1 is ${test1}</echo>
+ <echo>test2 is ${test2}</echo>
+ <echo>test1.x is ${test1.x}</echo>
+ </target>
</project>
1.77 +44 -16 ant/src/main/org/apache/tools/ant/taskdefs/Ant.java
Index: Ant.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Ant.java,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -r1.76 -r1.77
--- Ant.java 3 Apr 2003 14:44:02 -0000 1.76
+++ Ant.java 12 May 2003 12:57:04 -0000 1.77
@@ -69,6 +69,7 @@
import org.apache.tools.ant.ProjectComponent;
import org.apache.tools.ant.ProjectHelper;
import org.apache.tools.ant.Task;
+import org.apache.tools.ant.types.PropertySet;
import org.apache.tools.ant.util.FileUtils;
/**
@@ -129,6 +130,9 @@
/** The stream to which output is to be written. */
private PrintStream out = null;
+ /** the sets of properties to pass to the new project */
+ private Vector propertySets = new Vector();
+
/**
* If true, pass all properties to the new Ant project.
* Defaults to true.
@@ -264,23 +268,13 @@
} else {
// set all properties from calling project
+ addAlmostAll(getProject().getProperties());
+ }
- Hashtable props = getProject().getProperties();
- e = props.keys();
- while (e.hasMoreElements()) {
- String arg = e.nextElement().toString();
- if ("basedir".equals(arg) || "ant.file".equals(arg)) {
- // basedir and ant.file get special treatment in execute()
- continue;
- }
-
- String value = props.get(arg).toString();
- // don't re-set user properties, avoid the warning message
- if (newProject.getProperty(arg) == null){
- // no user property
- newProject.setNewProperty(arg, value);
- }
- }
+ e = propertySets.elements();
+ while (e.hasMoreElements()) {
+ PropertySet ps = (PropertySet) e.nextElement();
+ addAlmostAll(ps.getProperties());
}
}
@@ -551,6 +545,31 @@
}
/**
+ * Copies all properties from the given table to the new project -
+ * ommiting those that have already been set in the new project as
+ * well as properties named basedir or ant.file.
+ *
+ * @since Ant 1.6
+ */
+ private void addAlmostAll(Hashtable props) {
+ Enumeration e = props.keys();
+ while (e.hasMoreElements()) {
+ String key = e.nextElement().toString();
+ if ("basedir".equals(key) || "ant.file".equals(key)) {
+ // basedir and ant.file get special treatment in execute()
+ continue;
+ }
+
+ String value = props.get(key).toString();
+ // don't re-set user properties, avoid the warning message
+ if (newProject.getProperty(key) == null){
+ // no user property
+ newProject.setNewProperty(key, value);
+ }
+ }
+ }
+
+ /**
* The directory to use as a base directory for the new Ant project.
* Defaults to the current project's basedir, unless inheritall
* has been set to false, in which case it doesn't have a default
@@ -615,6 +634,15 @@
*/
public void addReference(Reference r) {
references.addElement(r);
+ }
+
+ /**
+ * Set of properties to pass to the new project.
+ *
+ * @since Ant 1.6
+ */
+ public void addPropertyset(PropertySet ps) {
+ propertySets.addElement(ps);
}
/**
1.33 +12 -0 ant/src/main/org/apache/tools/ant/taskdefs/CallTarget.java
Index: CallTarget.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/CallTarget.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- CallTarget.java 7 Mar 2003 11:23:00 -0000 1.32
+++ CallTarget.java 12 May 2003 12:57:04 -0000 1.33
@@ -167,6 +167,18 @@
}
/**
+ * Set of properties to pass to the new project.
+ *
+ * @since Ant 1.6
+ */
+ public void addPropertyset(org.apache.tools.ant.types.PropertySet ps) {
+ if (callee == null) {
+ init();
+ }
+ callee.addPropertyset(ps);
+ }
+
+ /**
* Target to execute, required.
*/
public void setTarget(String target) {
1.2 +14 -0 ant/src/main/org/apache/tools/ant/taskdefs/SubAnt.java
Index: SubAnt.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/SubAnt.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SubAnt.java 14 Mar 2003 00:42:04 -0000 1.1
+++ SubAnt.java 12 May 2003 12:57:04 -0000 1.2
@@ -68,6 +68,7 @@
import org.apache.tools.ant.types.DirSet;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.FileList;
+import org.apache.tools.ant.types.PropertySet;
import org.apache.tools.ant.types.Reference;
import org.apache.tools.ant.taskdefs.Ant;
@@ -97,6 +98,7 @@
private Vector properties = new Vector();
private Vector references = new Vector();
+ private Vector propertySets = new Vector();
/**
* Runs the various sub-builds.
@@ -239,6 +241,14 @@
}
/**
+ * Corresponds to <code><ant></code>'s
+ * nested <code><propertyset></code> element.
+ */
+ public void addPropertyset(PropertySet ps) {
+ propertySets.addElement(ps);
+ }
+
+ /**
* Adds a directory set to the implicit build path.
* <p>
* <em>Note that the directories will be added to the build path
@@ -343,6 +353,10 @@
ant.setInheritAll(inheritAll);
for (Enumeration i = properties.elements(); i.hasMoreElements();) {
copyProperty(ant.createProperty(), (Property) i.nextElement());
+ }
+
+ for (Enumeration i = propertySets.elements(); i.hasMoreElements();) {
+ ant.addPropertyset((PropertySet) i.nextElement());
}
ant.setInheritRefs(inheritRefs);
1.17 +9 -2 ant/src/testcases/org/apache/tools/ant/taskdefs/AntTest.java
Index: AntTest.java
===================================================================
RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/AntTest.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- AntTest.java 7 Mar 2003 11:23:11 -0000 1.16
+++ AntTest.java 12 May 2003 12:57:05 -0000 1.17
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000-2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2000-2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -293,6 +293,13 @@
public void testOverrideWinsNoInheritAll() {
expectLogContaining("test-property-override-no-inheritall-start",
"The value of test is 4");
+ }
+
+ public void testPropertySet() {
+ executeTarget("test-propertyset");
+ assertTrue(getLog().indexOf("test1 is ${test1}") > -1);
+ assertTrue(getLog().indexOf("test2 is ${test2}") > -1);
+ assertTrue(getLog().indexOf("test1.x is 1") > -1);
}
private class BasedirChecker implements BuildListener {