public abstract class ProtectedTask
extends org.apache.tools.ant.Task
implements org.apache.tools.ant.DynamicConfigurator
Task
in a special class loader that allows
us to control where to load 2.1 APIs, even if we run in Java 6.
No JDK 1.5 code here, please. This allows us to detect "require JDK5" bug nicely.
Modifier and Type | Class and Description |
---|---|
private class |
ProtectedTask.AntElement
Captures the elements and attributes.
|
Modifier and Type | Field and Description |
---|---|
private ProtectedTask.AntElement |
root |
Constructor and Description |
---|
ProtectedTask() |
Modifier and Type | Method and Description |
---|---|
protected abstract java.lang.ClassLoader |
createClassLoader()
Creates a protective class loader that will host the actual task.
|
java.lang.Object |
createDynamicElement(java.lang.String name) |
void |
execute() |
protected abstract java.lang.String |
getCoreClassName()
Returns the name of the class that extends
Task . |
private java.lang.ClassLoader |
getParentClassLoader(java.lang.ClassLoader cl) |
private java.lang.ClassLoader |
getPCL(java.lang.ClassLoader cl) |
void |
setDynamicAttribute(java.lang.String name,
java.lang.String value) |
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType
private final ProtectedTask.AntElement root
public void setDynamicAttribute(java.lang.String name, java.lang.String value) throws org.apache.tools.ant.BuildException
setDynamicAttribute
in interface org.apache.tools.ant.DynamicAttribute
org.apache.tools.ant.BuildException
public java.lang.Object createDynamicElement(java.lang.String name) throws org.apache.tools.ant.BuildException
createDynamicElement
in interface org.apache.tools.ant.DynamicElement
org.apache.tools.ant.BuildException
public void execute() throws org.apache.tools.ant.BuildException
execute
in class org.apache.tools.ant.Task
org.apache.tools.ant.BuildException
protected abstract java.lang.String getCoreClassName()
Task
.
This class will be loaded int the protected classloader.protected abstract java.lang.ClassLoader createClassLoader() throws java.lang.ClassNotFoundException, java.io.IOException
java.lang.ClassNotFoundException
java.io.IOException
private java.lang.ClassLoader getParentClassLoader(java.lang.ClassLoader cl)
private java.lang.ClassLoader getPCL(java.lang.ClassLoader cl)