| java.lang.Object org.apache.tools.ant.util.ClasspathUtils
ClasspathUtils | public class ClasspathUtils (Code) | | Offers some helper methods on the Path structure in ant.
The basic idea behind this utility class is to use it from inside the
different Ant objects (and user defined objects) that need classLoading
for their operation.
Normally those would have a setClasspathRef() {for the @classpathref}
and/or a createClasspath() {for the nested <classpath>}
Typically one would have in your Ant Task or DataType
ClasspathUtils.Delegate cpDelegate;
public void init() {
this.cpDelegate = ClasspathUtils.getDelegate(this);
super.init();
}
public void setClasspathRef(Reference r) {
this.cpDelegate.setClasspathRef(r);
}
public Path createClasspath() {
return this.cpDelegate.createClasspath();
}
public void setClassname(String fqcn) {
this.cpDelegate.setClassname(fqcn);
}
At execution time, when you actually need the classloading
you can just:
Object o = this.cpDelegate.newInstance();
since: Ant 1.6 |
Inner Class :public static class Delegate | |
Field Summary | |
final public static String | REUSE_LOADER_REF Name of the magic property that controls classloader reuse in Ant 1.4. |
Method Summary | |
public static ClassLoader | getClassLoaderForPath(Project p, Reference ref) Convenience overloaded version of
ClasspathUtils.getClassLoaderForPath(Project,Reference,boolean) . | public static ClassLoader | getClassLoaderForPath(Project p, Reference ref, boolean reverseLoader) Convenience overloaded version of
ClasspathUtils.getClassLoaderForPath(Project,Path,String,boolean) .
Delegates to the other one after extracting the referenced
Path from the Project. | public static ClassLoader | getClassLoaderForPath(Project p, Path path, String loaderId) Convenience overloaded version of
ClasspathUtils.getClassLoaderForPath(Project,Path,String,boolean) . | public static ClassLoader | getClassLoaderForPath(Project p, Path path, String loaderId, boolean reverseLoader) Convenience overloaded version of
ClasspathUtils.getClassLoaderForPath(Project,Path,String,boolean,boolean) . | public static ClassLoader | getClassLoaderForPath(Project p, Path path, String loaderId, boolean reverseLoader, boolean reuseLoader) Gets a classloader that loads classes from the classpath
defined in the path argument. | public static Delegate | getDelegate(ProjectComponent component) Obtains a delegate that helps out with classic classpath configuration. | public static ClassLoader | getUniqueClassLoaderForPath(Project p, Path path, boolean reverseLoader) Gets a fresh, different, previously unused classloader that uses the
passed path as its classpath. | public static Object | newInstance(String className, ClassLoader userDefinedLoader) Creates a fresh object instance of the specified classname.
This uses the userDefinedLoader to load the specified class,
and then makes an instance using the default no-argument constructor.
Parameters: className - the full qualified class name to load. Parameters: userDefinedLoader - the classloader to use. | public static Object | newInstance(String className, ClassLoader userDefinedLoader, Class expectedType) Creates a fresh object instance of the specified classname.
This uses the userDefinedLoader to load the specified class,
and then makes an instance using the default no-argument constructor.
Parameters: className - the full qualified class name to load. Parameters: userDefinedLoader - the classloader to use. Parameters: expectedType - the Class that the result should be assignmentcompatible with. |
REUSE_LOADER_REF | final public static String REUSE_LOADER_REF(Code) | | Name of the magic property that controls classloader reuse in Ant 1.4.
|
getClassLoaderForPath | public static ClassLoader getClassLoaderForPath(Project p, Reference ref, boolean reverseLoader)(Code) | | Convenience overloaded version of
ClasspathUtils.getClassLoaderForPath(Project,Path,String,boolean) .
Delegates to the other one after extracting the referenced
Path from the Project. This checks also that the passed
Reference is pointing to a Path all right.
Parameters: p - current Ant project Parameters: ref - Reference to Path structure Parameters: reverseLoader - if set to true this new loader will takeprecedence over its parent (which is contra the regularclassloader behaviour) The class loader |
getClassLoaderForPath | public static ClassLoader getClassLoaderForPath(Project p, Path path, String loaderId, boolean reverseLoader)(Code) | | Convenience overloaded version of
ClasspathUtils.getClassLoaderForPath(Project,Path,String,boolean,boolean) .
Sets value for 'reuseLoader' to true if the magic property
has been set.
Parameters: p - the project Parameters: path - the path Parameters: loaderId - the loader id string Parameters: reverseLoader - if set to true this new loader will takeprecedence over its parent (which is contra the regularclassloader behaviour) The class loader |
getClassLoaderForPath | public static ClassLoader getClassLoaderForPath(Project p, Path path, String loaderId, boolean reverseLoader, boolean reuseLoader)(Code) | | Gets a classloader that loads classes from the classpath
defined in the path argument.
Based on the setting of the magic property
'ant.reuse.loader' this will try to reuse the previously
created loader with that id, and of course store it there upon
creation.
Parameters: p - Ant Project where the handled components are living in. Parameters: path - Path object to be used as classpath for this classloader Parameters: loaderId - identification for this Loader, Parameters: reverseLoader - if set to true this new loader will takeprecedence over its parent (which is contra the regularclassloader behaviour) Parameters: reuseLoader - if true reuse the loader if it is found ClassLoader that uses the Path as its classpath. |
getDelegate | public static Delegate getDelegate(ProjectComponent component)(Code) | | Obtains a delegate that helps out with classic classpath configuration.
Parameters: component - your projectComponent that needs the assistence the helper, delegate. See Also: ClasspathUtils.Delegate |
getUniqueClassLoaderForPath | public static ClassLoader getUniqueClassLoaderForPath(Project p, Path path, boolean reverseLoader)(Code) | | Gets a fresh, different, previously unused classloader that uses the
passed path as its classpath.
This method completely ignores the ant.reuse.loader magic
property and should be used with caution.
Parameters: p - Ant Project where the handled components are living in. Parameters: path - the classpath for this loader Parameters: reverseLoader - if set to true this new loader will takeprecedence over its parent (which is contra the regularclassloader behaviour) The fresh, different, previously unused class loader. |
newInstance | public static Object newInstance(String className, ClassLoader userDefinedLoader)(Code) | | Creates a fresh object instance of the specified classname.
This uses the userDefinedLoader to load the specified class,
and then makes an instance using the default no-argument constructor.
Parameters: className - the full qualified class name to load. Parameters: userDefinedLoader - the classloader to use. The fresh object instance throws: BuildException - when loading or instantiation failed. |
newInstance | public static Object newInstance(String className, ClassLoader userDefinedLoader, Class expectedType)(Code) | | Creates a fresh object instance of the specified classname.
This uses the userDefinedLoader to load the specified class,
and then makes an instance using the default no-argument constructor.
Parameters: className - the full qualified class name to load. Parameters: userDefinedLoader - the classloader to use. Parameters: expectedType - the Class that the result should be assignmentcompatible with. (No ClassCastException will be thrown in casethe result of this method is casted to the expectedType) The fresh object instance throws: BuildException - when loading or instantiation failed. since: Ant 1.7 |
|
|