From 1603a8769713a0417cdf59f2a217d5ff1d0a9d48 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Fri, 11 Apr 2003 13:54:47 +0000 Subject: [PATCH] More syncing of the antlib proposal with the main code line. Submitted by: Antoine Levy-Lambert git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274435 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/org/apache/tools/ant/Project.java | 49 +++++++++++++++++++ .../src/main/org/apache/tools/ant/antlib.xml | 8 +++ 2 files changed, 57 insertions(+) diff --git a/proposal/sandbox/antlib/src/main/org/apache/tools/ant/Project.java b/proposal/sandbox/antlib/src/main/org/apache/tools/ant/Project.java index f40ed1b3b..3a9b7fc98 100644 --- a/proposal/sandbox/antlib/src/main/org/apache/tools/ant/Project.java +++ b/proposal/sandbox/antlib/src/main/org/apache/tools/ant/Project.java @@ -70,6 +70,7 @@ import org.apache.tools.ant.types.FilterSet; import org.apache.tools.ant.types.FilterSetCollection; import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.util.LazyHashtable; +import org.apache.tools.ant.util.JavaEnvUtils; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.taskdefs.Antlib; import org.apache.tools.ant.input.InputHandler; @@ -132,6 +133,13 @@ public class Project { private static String javaVersion; + /** + * The class name of the Ant class loader to use for + * JDK 1.2 and above + */ + private static final String ANTCLASSLOADER_JDK12 + = "org.apache.tools.ant.loader.AntClassLoader2"; + /** * Description of the Field */ @@ -463,6 +471,47 @@ public class Project { } + /** + * Factory method to create a class loader for loading classes + * + * @return an appropriate classloader + */ + private AntClassLoader createClassLoader() { + AntClassLoader loader = null; + if (!JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) { + try { + // 1.2+ - create advanced helper dynamically + Class loaderClass + = Class.forName(ANTCLASSLOADER_JDK12); + loader = (AntClassLoader) loaderClass.newInstance(); + } catch (Exception e) { + log("Unable to create Class Loader: " + + e.getMessage(), Project.MSG_DEBUG); + } + } + + if (loader == null) { + loader = new AntClassLoader(); + } + + loader.setProject(this); + return loader; + } + + /** + * Factory method to create a class loader for loading classes from + * a given path + * + * @param path the path from whcih clases are to be loaded. + * + * @return an appropriate classloader + */ + public AntClassLoader createClassLoader(Path path) { + AntClassLoader loader = createClassLoader(); + loader.setClassPath(path); + return loader; + } + /** * Sets the coreLoader attribute of the Project object * diff --git a/proposal/sandbox/antlib/src/main/org/apache/tools/ant/antlib.xml b/proposal/sandbox/antlib/src/main/org/apache/tools/ant/antlib.xml index 6a2f0a731..f74dcf49d 100644 --- a/proposal/sandbox/antlib/src/main/org/apache/tools/ant/antlib.xml +++ b/proposal/sandbox/antlib/src/main/org/apache/tools/ant/antlib.xml @@ -122,9 +122,17 @@ + + + + + + + +