You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by pe...@apache.org on 2006/08/26 00:36:24 UTC
svn commit: r436992 - in /ant/core/trunk: ./ src/etc/testcases/types/
src/main/org/apache/tools/ant/ src/main/org/apache/tools/ant/types/
src/main/org/apache/tools/ant/util/ src/testcases/org/apache/tools/ant/types/
Author: peterreilly
Date: Fri Aug 25 15:36:21 2006
New Revision: 436992
URL: http://svn.apache.org/viewvc?rev=436992&view=rev
Log:
fix for 40228, add code to introspectionhelper to make addconfigured higher priority than add, and add addconfigured to chainedmapper
Modified:
ant/core/trunk/WHATSNEW
ant/core/trunk/src/etc/testcases/types/addtype.xml
ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java
ant/core/trunk/src/main/org/apache/tools/ant/types/Mapper.java
ant/core/trunk/src/main/org/apache/tools/ant/util/ContainerMapper.java
ant/core/trunk/src/testcases/org/apache/tools/ant/types/AddTypeTest.java
Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=436992&r1=436991&r2=436992&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Fri Aug 25 15:36:21 2006
@@ -258,6 +258,9 @@
* Copy of UnknownElement in macroinstance was not recursive.
Bugzilla report 40238.
+* mixing of add and addConfigured methods in Mapper/ChainedMapper
+ causes incorrect chaining. Bugzilla report 40228.
+
Other changes:
--------------
Modified: ant/core/trunk/src/etc/testcases/types/addtype.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/testcases/types/addtype.xml?rev=436992&r1=436991&r2=436992&view=diff
==============================================================================
--- ant/core/trunk/src/etc/testcases/types/addtype.xml (original)
+++ ant/core/trunk/src/etc/testcases/types/addtype.xml Fri Aug 25 15:36:21 2006
@@ -68,6 +68,9 @@
name = "myaddconfigured"
classname="${nested.package}AddTypeTest$MyAddConfigured"/>
<typedef loaderref="nested.loader"
+ name = "myaddconfiguredvalue"
+ classname="${nested.package}AddTypeTest$MyAddConfiguredValue"/>
+ <typedef loaderref="nested.loader"
name = "myvalue"
classname="${nested.package}AddTypeTest$MyValue"/>
</target>
@@ -125,6 +128,12 @@
<myaddconfigured>
<myvalue>Value Set</myvalue>
</myaddconfigured>
+ </target>
+
+ <target name="myaddconfiguredvalue" depends="init">
+ <myaddconfiguredvalue>
+ <value>Value Set</value>
+ </myaddconfiguredvalue>
</target>
<target name="namespacetest" xmlns:prefix="uri">
Modified: ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java?rev=436992&r1=436991&r2=436992&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/IntrospectionHelper.java Fri Aug 25 15:36:21 2006
@@ -267,7 +267,16 @@
constructor =
args[0].getConstructor(new Class[] {Project.class});
}
+
String propName = getPropertyName(name, "add");
+ if (nestedTypes.get(propName) != null) {
+ /*
+ * Ignore this method as there is an addConfigured
+ * form of this method that has a higher
+ * priority
+ */
+ continue;
+ }
nestedTypes.put(propName, args[0]);
nestedCreators.put(propName, new AddNestedCreator(m,
constructor, AddNestedCreator.ADD));
@@ -1439,6 +1448,8 @@
* the addTypeMethods array. The array is
* ordered so that the more derived classes
* are first.
+ * If both add and addConfigured are present, the addConfigured
+ * will take priority.
* @param method the <code>Method</code> to insert.
*/
private void insertAddTypeMethod(Method method) {
@@ -1446,6 +1457,10 @@
for (int c = 0; c < addTypeMethods.size(); ++c) {
Method current = (Method) addTypeMethods.get(c);
if (current.getParameterTypes()[0].equals(argClass)) {
+ if (method.getName().equals("addConfigured")) {
+ // add configured replaces the add method
+ addTypeMethods.set(c, method);
+ }
return; // Already present
}
if (current.getParameterTypes()[0].isAssignableFrom(
Modified: ant/core/trunk/src/main/org/apache/tools/ant/types/Mapper.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/Mapper.java?rev=436992&r1=436991&r2=436992&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/types/Mapper.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/types/Mapper.java Fri Aug 25 15:36:21 2006
@@ -58,6 +58,15 @@
}
/**
+ * Cannot mix add and addconfigured in same type, so
+ * provide this to override the add method.
+ * @param fileNameMapper the <code>FileNameMapper</code> to add.
+ */
+ public void addConfigured(FileNameMapper fileNameMapper) {
+ add(fileNameMapper);
+ }
+
+ /**
* Add a nested <code>FileNameMapper</code>.
* @param fileNameMapper the <code>FileNameMapper</code> to add.
*/
Modified: ant/core/trunk/src/main/org/apache/tools/ant/util/ContainerMapper.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/util/ContainerMapper.java?rev=436992&r1=436991&r2=436992&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/util/ContainerMapper.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/util/ContainerMapper.java Fri Aug 25 15:36:21 2006
@@ -41,6 +41,19 @@
}
/**
+ * An add configured version of the add method.
+ * This class used to contain an add method and an
+ * addConfiguredMapper method. Dur to ordering,
+ * the add method was always called first. This
+ * addConfigued method has been added to allow
+ * chaining to work correctly.
+ * @param fileNameMapper a <code>FileNameMapper</code>.
+ */
+ public void addConfigured(FileNameMapper fileNameMapper) {
+ add(fileNameMapper);
+ }
+
+ /**
* Add a <code>FileNameMapper</code>.
* @param fileNameMapper a <code>FileNameMapper</code>.
* @throws IllegalArgumentException if attempting to add this
Modified: ant/core/trunk/src/testcases/org/apache/tools/ant/types/AddTypeTest.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/testcases/org/apache/tools/ant/types/AddTypeTest.java?rev=436992&r1=436991&r2=436992&view=diff
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/types/AddTypeTest.java (original)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/types/AddTypeTest.java Fri Aug 25 15:36:21 2006
@@ -18,6 +18,7 @@
package org.apache.tools.ant.types;
import org.apache.tools.ant.BuildFileTest;
+import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.condition.Condition;
@@ -86,6 +87,12 @@
"myaddconfigured", "value is Value Setexecute: value is Value Set");
}
+ public void testAddConfiguredValue() {
+ expectLogContaining(
+ "myaddconfiguredvalue",
+ "value is Value Setexecute: value is Value Set");
+ }
+
public void testNamespace() {
executeTarget("namespacetest");
}
@@ -150,6 +157,25 @@
public void addConfigured(MyValue value) {
log("value is " + value);
this.value = value;
+ }
+ public void add(MyValue value) {
+ throw new BuildException("Should not be called");
+ }
+ public void execute() {
+ log("execute: value is " + value);
+ }
+ }
+
+ public static class MyAddConfiguredValue
+ extends Task
+ {
+ MyValue value;
+ public void addConfiguredValue(MyValue value) {
+ log("value is " + value);
+ this.value = value;
+ }
+ public void addValue(MyValue value) {
+ throw new BuildException("Should not be called");
}
public void execute() {
log("execute: value is " + value);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org