Author: jkf Date: Mon May 28 15:54:00 2012 New Revision: 1343304 URL: http://svn.apache.org/viewvc?rev=1343304&view=rev Log: Bug 51792 - Unable to override system properties with 1.8.2
Modified: ant/core/trunk/WHATSNEW ant/core/trunk/src/main/org/apache/tools/ant/Main.java Modified: ant/core/trunk/WHATSNEW URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=1343304&r1=1343303&r2=1343304&view=diff ============================================================================== --- ant/core/trunk/WHATSNEW (original) +++ ant/core/trunk/WHATSNEW Mon May 28 15:54:00 2012 @@ -24,6 +24,10 @@ Fixed bugs: * Updated documentation to fix spelling errors / broken links. Bugzilla Reports 53215, 53291, 53202 + * Unable to override system properties. It was not possible not to override + system properties from the command line (or from a property file). + Bugzilla Report 51792 + Other changes: -------------- Modified: ant/core/trunk/src/main/org/apache/tools/ant/Main.java URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/Main.java?rev=1343304&r1=1343303&r2=1343304&view=diff ============================================================================== --- ant/core/trunk/src/main/org/apache/tools/ant/Main.java (original) +++ ant/core/trunk/src/main/org/apache/tools/ant/Main.java Mon May 28 15:54:00 2012 @@ -36,6 +36,7 @@ import java.util.Vector; import org.apache.tools.ant.input.DefaultInputHandler; import org.apache.tools.ant.input.InputHandler; import org.apache.tools.ant.launch.AntMain; +import org.apache.tools.ant.property.GetProperty; import org.apache.tools.ant.property.ResolvePropertyMap; import org.apache.tools.ant.util.ClasspathUtils; import org.apache.tools.ant.util.FileUtils; @@ -147,6 +148,17 @@ public class Main implements AntMain { * proxy flag: default is false */ private boolean proxy = false; + + + private static final GetProperty NOPROPERTIES = new GetProperty(){ + @Override + public Object getProperty(String aName) { + // No existing property takes precedence + return null; + }}; + + + /** * Prints the message of the Throwable if it (the message) is not @@ -760,30 +772,7 @@ public class Main implements AntMain { } } - - - project.init(); - - // resolve properties - PropertyHelper propertyHelper - = (PropertyHelper) PropertyHelper.getPropertyHelper(project); - HashMap props = new HashMap(definedProps); - new ResolvePropertyMap(project, propertyHelper, - propertyHelper.getExpanders()) - .resolveAllProperties(props, null, false); - - // set user-define properties - for (Iterator e = props.entrySet().iterator(); e.hasNext(); ) { - Map.Entry ent = (Map.Entry) e.next(); - String arg = (String) ent.getKey(); - Object value = ent.getValue(); - project.setUserProperty(arg, String.valueOf(value)); - } - - project.setUserProperty(MagicNames.ANT_FILE, - buildFile.getAbsolutePath()); - project.setUserProperty(MagicNames.ANT_FILE_TYPE, - MagicNames.ANT_FILE_TYPE_FILE); + setProperties(project); project.setKeepGoingMode(keepGoingMode); if (proxy) { @@ -849,6 +838,33 @@ public class Main implements AntMain { } } + private void setProperties(final Project project) { + + project.init(); + + // resolve properties + PropertyHelper propertyHelper = (PropertyHelper) PropertyHelper + .getPropertyHelper(project); + HashMap props = new HashMap(definedProps); + + ResolvePropertyMap resolver = new ResolvePropertyMap(project, + NOPROPERTIES, propertyHelper.getExpanders()); + resolver.resolveAllProperties(props, null, false); + + // set user-define properties + for (Iterator e = props.entrySet().iterator(); e.hasNext(); ) { + Map.Entry ent = (Map.Entry) e.next(); + String arg = (String) ent.getKey(); + Object value = ent.getValue(); + project.setUserProperty(arg, String.valueOf(value)); + } + + project.setUserProperty(MagicNames.ANT_FILE, + buildFile.getAbsolutePath()); + project.setUserProperty(MagicNames.ANT_FILE_TYPE, + MagicNames.ANT_FILE_TYPE_FILE); + } + /** * Adds the listeners specified in the command line arguments, * along with the default listener, to the specified project.