build.sysclasspath is a magic namemaster
| @@ -448,7 +448,7 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener, Clo | |||||
| if (LoaderUtils.isContextLoaderAvailable()) { | if (LoaderUtils.isContextLoaderAvailable()) { | ||||
| savedContextLoader = LoaderUtils.getContextClassLoader(); | savedContextLoader = LoaderUtils.getContextClassLoader(); | ||||
| ClassLoader loader = this; | ClassLoader loader = this; | ||||
| if (project != null && "only".equals(project.getProperty("build.sysclasspath"))) { | |||||
| if (project != null && "only".equals(project.getProperty(MagicNames.BUILD_SYSCLASSPATH))) { | |||||
| loader = this.getClass().getClassLoader(); | loader = this.getClass().getClassLoader(); | ||||
| } | } | ||||
| LoaderUtils.setContextClassLoader(loader); | LoaderUtils.setContextClassLoader(loader); | ||||
| @@ -824,7 +824,7 @@ public class ComponentHelper { | |||||
| if (uri.isEmpty()) { | if (uri.isEmpty()) { | ||||
| uri = ProjectHelper.ANT_CORE_URI; | uri = ProjectHelper.ANT_CORE_URI; | ||||
| } | } | ||||
| if (!uri.startsWith(ProjectHelper.ANTLIB_URI)) { | |||||
| if (!uri.startsWith(MagicNames.ANTLIB_PREFIX)) { | |||||
| return; // namespace that does not contain antlib | return; // namespace that does not contain antlib | ||||
| } | } | ||||
| if (checkedNamespaces.contains(uri)) { | if (checkedNamespaces.contains(uri)) { | ||||
| @@ -218,7 +218,7 @@ public final class MagicNames { | |||||
| * Value: {@value} | * Value: {@value} | ||||
| */ | */ | ||||
| public static final String PROJECT_HELPER_SERVICE = | public static final String PROJECT_HELPER_SERVICE = | ||||
| "META-INF/services/org.apache.tools.ant.ProjectHelper"; | |||||
| "META-INF/services/" + PROJECT_HELPER_CLASS; | |||||
| /** | /** | ||||
| * Name of ProjectHelper reference that we add to a project. | * Name of ProjectHelper reference that we add to a project. | ||||
| @@ -38,7 +38,7 @@ import org.xml.sax.AttributeList; | |||||
| */ | */ | ||||
| public class ProjectHelper { | public class ProjectHelper { | ||||
| /** The URI for ant name space */ | /** The URI for ant name space */ | ||||
| public static final String ANT_CORE_URI = "antlib:org.apache.tools.ant"; | |||||
| public static final String ANT_CORE_URI = MagicNames.ANTLIB_PREFIX + "org.apache.tools.ant"; | |||||
| /** The URI for antlib current definitions */ | /** The URI for antlib current definitions */ | ||||
| public static final String ANT_CURRENT_URI = "ant:current"; | public static final String ANT_CURRENT_URI = "ant:current"; | ||||
| @@ -49,7 +49,7 @@ public class ProjectHelper { | |||||
| public static final String ANT_ATTRIBUTE_URI = "ant:attribute"; | public static final String ANT_ATTRIBUTE_URI = "ant:attribute"; | ||||
| /** The URI for defined types/tasks - the format is antlib:<package> */ | /** The URI for defined types/tasks - the format is antlib:<package> */ | ||||
| public static final String ANTLIB_URI = "antlib:"; | |||||
| public static final String ANTLIB_URI = MagicNames.ANTLIB_PREFIX; | |||||
| /** Polymorphic attribute */ | /** Polymorphic attribute */ | ||||
| public static final String ANT_TYPE = "ant-type"; | public static final String ANT_TYPE = "ant-type"; | ||||
| @@ -158,10 +158,10 @@ public class Classloader extends Task { | |||||
| public void execute() { | public void execute() { | ||||
| try { | try { | ||||
| // Gump friendly - don't mess with the core loader if only classpath | // Gump friendly - don't mess with the core loader if only classpath | ||||
| if ("only".equals(getProject().getProperty("build.sysclasspath")) | |||||
| if ("only".equals(getProject().getProperty(MagicNames.BUILD_SYSCLASSPATH)) | |||||
| && (name == null || SYSTEM_LOADER_REF.equals(name))) { | && (name == null || SYSTEM_LOADER_REF.equals(name))) { | ||||
| log("Changing the system loader is disabled by build.sysclasspath=only", | |||||
| Project.MSG_WARN); | |||||
| log("Changing the system loader is disabled by " | |||||
| + MagicNames.BUILD_SYSCLASSPATH + "=only", Project.MSG_WARN); | |||||
| return; | return; | ||||
| } | } | ||||
| @@ -463,12 +463,12 @@ public abstract class Definer extends DefBase { | |||||
| if (definerSet) { | if (definerSet) { | ||||
| tooManyDefinitions(); | tooManyDefinitions(); | ||||
| } | } | ||||
| if (!antlib.startsWith("antlib:")) { | |||||
| if (!antlib.startsWith(MagicNames.ANTLIB_PREFIX)) { | |||||
| throw new BuildException( | throw new BuildException( | ||||
| "Invalid antlib attribute - it must start with antlib:"); | |||||
| "Invalid antlib attribute - it must start with " + MagicNames.ANTLIB_PREFIX); | |||||
| } | } | ||||
| setURI(antlib); | setURI(antlib); | ||||
| this.resource = antlib.substring("antlib:".length()).replace('.', '/') | |||||
| this.resource = antlib.substring(MagicNames.ANTLIB_PREFIX.length()).replace('.', '/') | |||||
| + "/antlib.xml"; | + "/antlib.xml"; | ||||
| definerSet = true; | definerSet = true; | ||||
| } | } | ||||
| @@ -1350,9 +1350,9 @@ public class Javac extends MatchingTask { | |||||
| + destDir | + destDir | ||||
| + "\" does not exist or is not a directory", getLocation()); | + "\" does not exist or is not a directory", getLocation()); | ||||
| } | } | ||||
| if (includeAntRuntime == null && getProject().getProperty("build.sysclasspath") == null) { | |||||
| log(getLocation() | |||||
| + "warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds", | |||||
| if (includeAntRuntime == null && getProject().getProperty(MagicNames.BUILD_SYSCLASSPATH) == null) { | |||||
| log(getLocation() + "warning: 'includeantruntime' was not set, defaulting to " | |||||
| + MagicNames.BUILD_SYSCLASSPATH + "=last; set to false for repeatable builds", | |||||
| Project.MSG_WARN); | Project.MSG_WARN); | ||||
| } | } | ||||
| } | } | ||||
| @@ -75,7 +75,7 @@ public class AntClassLoaderTest { | |||||
| String extjarstring = buildRule.getProject().getProperty("ext.jar"); | String extjarstring = buildRule.getProject().getProperty("ext.jar"); | ||||
| Path myPath = new Path(buildRule.getProject()); | Path myPath = new Path(buildRule.getProject()); | ||||
| myPath.setLocation(new File(mainjarstring)); | myPath.setLocation(new File(mainjarstring)); | ||||
| buildRule.getProject().setUserProperty("build.sysclasspath", "ignore"); | |||||
| buildRule.getProject().setUserProperty(MagicNames.BUILD_SYSCLASSPATH, "ignore"); | |||||
| loader = buildRule.getProject().createClassLoader(myPath); | loader = buildRule.getProject().createClassLoader(myPath); | ||||
| String path = loader.getClasspath(); | String path = loader.getClasspath(); | ||||
| assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | ||||
| @@ -87,7 +87,7 @@ public class AntClassLoaderTest { | |||||
| String extjarstring = buildRule.getProject().getProperty("ext.jar.nonascii"); | String extjarstring = buildRule.getProject().getProperty("ext.jar.nonascii"); | ||||
| Path myPath = new Path(buildRule.getProject()); | Path myPath = new Path(buildRule.getProject()); | ||||
| myPath.setLocation(new File(mainjarstring)); | myPath.setLocation(new File(mainjarstring)); | ||||
| buildRule.getProject().setUserProperty("build.sysclasspath", "ignore"); | |||||
| buildRule.getProject().setUserProperty(MagicNames.BUILD_SYSCLASSPATH, "ignore"); | |||||
| loader = buildRule.getProject().createClassLoader(myPath); | loader = buildRule.getProject().createClassLoader(myPath); | ||||
| String path = loader.getClasspath(); | String path = loader.getClasspath(); | ||||
| assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | assertEquals(mainjarstring + File.pathSeparator + extjarstring, path); | ||||
| @@ -135,7 +135,7 @@ public class AntClassLoaderTest { | |||||
| buildRule.executeTarget("prepareGetPackageTest"); | buildRule.executeTarget("prepareGetPackageTest"); | ||||
| Path myPath = new Path(buildRule.getProject()); | Path myPath = new Path(buildRule.getProject()); | ||||
| myPath.setLocation(new File(buildRule.getProject().getProperty("test.jar"))); | myPath.setLocation(new File(buildRule.getProject().getProperty("test.jar"))); | ||||
| buildRule.getProject().setUserProperty("build.sysclasspath", "ignore"); | |||||
| buildRule.getProject().setUserProperty(MagicNames.BUILD_SYSCLASSPATH, "ignore"); | |||||
| loader = buildRule.getProject().createClassLoader(myPath); | loader = buildRule.getProject().createClassLoader(myPath); | ||||
| assertNotNull("should find class", loader.findClass("org.example.Foo")); | assertNotNull("should find class", loader.findClass("org.example.Foo")); | ||||
| assertNotNull("should find package", | assertNotNull("should find package", | ||||
| @@ -148,7 +148,7 @@ public class AntClassLoaderTest { | |||||
| Path myPath = new Path(buildRule.getProject()); | Path myPath = new Path(buildRule.getProject()); | ||||
| File testJar = new File(buildRule.getProject().getProperty("test.jar")); | File testJar = new File(buildRule.getProject().getProperty("test.jar")); | ||||
| myPath.setLocation(testJar); | myPath.setLocation(testJar); | ||||
| buildRule.getProject().setUserProperty("build.sysclasspath", "ignore"); | |||||
| buildRule.getProject().setUserProperty(MagicNames.BUILD_SYSCLASSPATH, "ignore"); | |||||
| loader = buildRule.getProject().createClassLoader(myPath); | loader = buildRule.getProject().createClassLoader(myPath); | ||||
| Class<?> foo = loader.findClass("org.example.Foo"); | Class<?> foo = loader.findClass("org.example.Foo"); | ||||
| URL codeSourceLocation = | URL codeSourceLocation = | ||||
| @@ -164,7 +164,7 @@ public class AntClassLoaderTest { | |||||
| Path myPath = new Path(buildRule.getProject()); | Path myPath = new Path(buildRule.getProject()); | ||||
| myPath.setLocation(jar); | myPath.setLocation(jar); | ||||
| buildRule.getProject().setUserProperty("build.sysclasspath", "ignore"); | |||||
| buildRule.getProject().setUserProperty(MagicNames.BUILD_SYSCLASSPATH, "ignore"); | |||||
| loader = buildRule.getProject().createClassLoader(myPath); | loader = buildRule.getProject().createClassLoader(myPath); | ||||
| Class<?> foo = loader.findClass("org.example.Foo"); | Class<?> foo = loader.findClass("org.example.Foo"); | ||||
| @@ -188,7 +188,7 @@ public class AntClassLoaderTest { | |||||
| Path myPath = new Path(buildRule.getProject()); | Path myPath = new Path(buildRule.getProject()); | ||||
| myPath.setLocation(jar); | myPath.setLocation(jar); | ||||
| buildRule.getProject().setUserProperty("build.sysclasspath", "ignore"); | |||||
| buildRule.getProject().setUserProperty(MagicNames.BUILD_SYSCLASSPATH, "ignore"); | |||||
| loader = buildRule.getProject().createClassLoader(myPath); | loader = buildRule.getProject().createClassLoader(myPath); | ||||
| PrintStream sysErr = System.err; | PrintStream sysErr = System.err; | ||||
| try { | try { | ||||
| @@ -92,7 +92,7 @@ public class ExecutorTest implements BuildListener { | |||||
| private Project getProject(String e, boolean f, boolean k) { | private Project getProject(String e, boolean f, boolean k) { | ||||
| Project p = buildRule.getProject(); | Project p = buildRule.getProject(); | ||||
| p.setNewProperty("ant.executor.class", e); | |||||
| p.setNewProperty(MagicNames.ANT_EXECUTOR_CLASSNAME, e); | |||||
| p.setKeepGoingMode(k); | p.setKeepGoingMode(k); | ||||
| if (f) { | if (f) { | ||||
| p.setNewProperty("failfoo", "foo"); | p.setNewProperty("failfoo", "foo"); | ||||
| @@ -37,6 +37,7 @@ import java.util.Properties; | |||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.BuildFileRule; | import org.apache.tools.ant.BuildFileRule; | ||||
| import org.apache.tools.ant.MagicNames; | |||||
| import org.apache.tools.ant.util.regexp.RegexpMatcherFactory; | import org.apache.tools.ant.util.regexp.RegexpMatcherFactory; | ||||
| import org.junit.After; | import org.junit.After; | ||||
| import org.junit.Before; | import org.junit.Before; | ||||
| @@ -182,7 +183,7 @@ public class EchoPropertiesTest { | |||||
| buildRule.executeTarget("testWithRegex"); | buildRule.executeTarget("testWithRegex"); | ||||
| // the following line has been changed from checking ant.home to ant.version | // the following line has been changed from checking ant.home to ant.version | ||||
| // so the test will still work when run outside of an Ant script | // so the test will still work when run outside of an Ant script | ||||
| assertThat(buildRule.getFullLog(), containsString("ant.version=")); | |||||
| assertThat(buildRule.getFullLog(), containsString(MagicNames.ANT_VERSION + "=")); | |||||
| } | } | ||||
| private void testEchoPrefixVarious(String target) throws Exception { | private void testEchoPrefixVarious(String target) throws Exception { | ||||
| @@ -53,7 +53,7 @@ public class CommandlineJavaTest { | |||||
| if (System.getProperty(MagicTestNames.TEST_ROOT_DIRECTORY) != null) { | if (System.getProperty(MagicTestNames.TEST_ROOT_DIRECTORY) != null) { | ||||
| project.setBasedir(System.getProperty(MagicTestNames.TEST_ROOT_DIRECTORY)); | project.setBasedir(System.getProperty(MagicTestNames.TEST_ROOT_DIRECTORY)); | ||||
| } | } | ||||
| project.setProperty("build.sysclasspath", "ignore"); | |||||
| project.setProperty(MagicNames.BUILD_SYSCLASSPATH, "ignore"); | |||||
| cloneVm = System.getProperty("ant.build.clonevm"); | cloneVm = System.getProperty("ant.build.clonevm"); | ||||
| if (cloneVm != null) { | if (cloneVm != null) { | ||||
| System.setProperty("ant.build.clonevm", "false"); | System.setProperty("ant.build.clonevm", "false"); | ||||