From c09d386575d236bd32d3d4ce78f716e90b5bbdfa Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Tue, 28 May 2002 14:19:31 +0000 Subject: [PATCH] Make sure user-properties remain user-properties. This is a partial merge of Ant.java from the 1.5 branch (only partial, sorry Magesh) that is required to avoid a Gump build failure of avalon-phoenix (which does several nested 's with varying inheritall values and ends up with relying on a property that has been set on the command line but has disappeared). git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272796 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/tools/ant/taskdefs/Ant.java | 50 ++++++++++++------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Ant.java b/src/main/org/apache/tools/ant/taskdefs/Ant.java index 5cc2e07b0..8cb591321 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Ant.java +++ b/src/main/org/apache/tools/ant/taskdefs/Ant.java @@ -184,6 +184,12 @@ public class Ant extends Task { if (p.getResource() != null) { newP.setResource(p.getResource()); } + if (p.getRefid() != null) { + newP.setRefid(p.getRefid()); + } + if (p.getEnvironment() != null) { + newP.setEnvironment(p.getEnvironment()); + } properties.setElementAt(newP, i); } } @@ -243,31 +249,37 @@ public class Ant extends Task { newProject.addDataTypeDefinition(typeName, typeClass); } - // set user-defined or all properties from calling project - Hashtable prop1; - if (inheritAll) { - prop1 = project.getProperties(); - } else { - prop1 = project.getUserProperties(); + // set user-defined + Hashtable props = getProject().getUserProperties(); + e = props.keys(); + while (e.hasMoreElements()) { + String arg = e.nextElement().toString(); + String value = props.get(arg).toString(); + newProject.setUserProperty(arg, value); + } + if (!inheritAll) { // set Java built-in properties separately, // b/c we won't inherit them. newProject.setSystemProperties(); - } - e = prop1.keys(); - while (e.hasMoreElements()) { - String arg = (String) e.nextElement(); - if ("basedir".equals(arg) || "ant.file".equals(arg)) { - // basedir and ant.file get special treatment in execute() - continue; - } + } else { + // set all properties from calling project + + 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 = (String) prop1.get(arg); - if (inheritAll){ - newProject.setProperty(arg, value); - } else { - newProject.setUserProperty(arg, value); + String value = props.get(arg).toString(); + if (newProject.getProperty(arg) == null){ + // no user property + newProject.setProperty(arg, value); + } } } }