Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
org.apache.tools.ant.IntrospectionHelper
public final class IntrospectionHelper
extends java.lang.Object
Nested Class Summary | |
static class |
|
Method Summary | |
void | |
static void |
|
Object |
|
Method |
|
Map |
|
Method |
|
Class |
|
Enumeration |
|
IntrospectionHelper.Creator |
|
Method |
|
protected String |
|
Class |
|
List |
|
static IntrospectionHelper |
|
static IntrospectionHelper | |
Map |
|
Enumeration |
|
boolean |
|
boolean |
|
void |
|
void |
|
boolean |
|
boolean |
|
boolean |
|
void |
|
public void addText(Project project, Object element, String text) throws BuildException
Adds PCDATA to an element, using the element'svoid addText(String)
method, if it has one. If no such method is present, a BuildException is thrown if the given text contains non-whitespace.
- Parameters:
project
- The project which the element is part of. Must not benull
.element
- The element to add the text to. Must not benull
.text
- The text to add. Must not benull
.
- Throws:
BuildException
- if non-whitespace text is provided and no method is available to handle it, or if the handling method fails.
public static void clearCache()
Clears the static cache of on build finished.
public Object createElement(Project project, Object parent, String elementName) throws BuildException
Deprecated. since 1.6.x. This is not a namespace aware method.
Creates a named nested element. Depending on the results of the initial introspection, either a method in the given parent instance or a simple no-arg constructor is used to create an instance of the specified element type.
- Parameters:
project
- Project to which the parent object belongs. Must not benull
. If the resulting object is an instance of ProjectComponent, its Project reference is set to this parameter value.parent
- Parent object used to create the instance. Must not benull
.elementName
- Name of the element to create an instance of. Must not benull
.
- Returns:
- an instance of the specified element type
- Throws:
BuildException
- if no method is available to create the element instance, or if the creating method fails.
public Method getAddTextMethod() throws BuildException
Returns the addText method when the introspected class supports nested text.
- Returns:
- the method on this introspected class that adds nested text. Cannot be
null
.
- Throws:
BuildException
- if the introspected class does not support the nested text.
- Since:
- Ant 1.6.3
public Map getAttributeMap()
Returns a read-only map of attributes supported by the introspected class.
- Returns:
- an attribute name to attribute
Class
unmodifiable map. Can be empty, but nevernull
.
- Since:
- Ant 1.6.3
public Method getAttributeMethod(String attributeName) throws BuildException
Returns the setter method of a named attribute.
- Parameters:
attributeName
- The name of the attribute to find the setter method of. Must not benull
.
- Returns:
- the method on this introspected class that sets this attribute. This will never be
null
.
- Throws:
BuildException
- if the introspected class does not support the named attribute.
- Since:
- Ant 1.6.3
public Class getAttributeType(String attributeName) throws BuildException
Returns the type of a named attribute.
- Parameters:
attributeName
- The name of the attribute to find the type of. Must not benull
.
- Returns:
- the type of the attribute with the specified name. This will never be
null
.
- Throws:
BuildException
- if the introspected class does not support the named attribute.
public Enumeration getAttributes()
Returns an enumeration of the names of the attributes supported by the introspected class.
- Returns:
- an enumeration of the names of the attributes supported by the introspected class.
- See Also:
getAttributeMap()
public IntrospectionHelper.Creator getElementCreator(Project project, String parentUri, Object parent, String elementName, UnknownElement ue)
returns an object that creates and stores an object for an element of a parent.
- Parameters:
project
- Project to which the parent object belongs.parentUri
- The namespace uri of the parent object.parent
- Parent object used to create the creator object to create and store and instance of a subelement.elementName
- Name of the element to create an instance of.ue
- The unknown element associated with the element.
- Returns:
- a creator object to create and store the element instance.
public Method getElementMethod(String elementName) throws BuildException
Returns the adder or creator method of a named nested element.
- Parameters:
elementName
- The name of the attribute to find the setter method of. Must not benull
.
- Returns:
- the method on this introspected class that adds or creates this nested element. Can be
null
when the introspected class is a dynamic configurator!
- Throws:
BuildException
- if the introspected class does not support the named nested element.
- Since:
- Ant 1.6.3
protected String getElementName(Project project, Object element)
Returns a description of the type of the given element in relation to a given project. This is used for logging purposes when the element is asked to cope with some data it has no way of handling.
- Parameters:
project
- The project the element is defined in. Must not benull
.element
- The element to describe. Must not benull
.
- Returns:
- a description of the element type
public Class getElementType(String elementName) throws BuildException
Returns the type of a named nested element.
- Parameters:
elementName
- The name of the element to find the type of. Must not benull
.
- Returns:
- the type of the nested element with the specified name. This will never be
null
.
- Throws:
BuildException
- if the introspected class does not support the named nested element.
public List getExtensionPoints()
Returns a read-only list of extension points supported by the introspected class. A task/type or nested element with void methods namedadd()
or
addConfigured()
, taking a single class or interface argument, supports extensions point. This method returns the list of all these void add[Configured](type) methods.
- Returns:
- a list of void, single argument add() or addConfigured()
Method
s of all supported extension points. These methods are sorted such that if the argument type of a method derives from another type also an argument of a method of this list, the method with the most derived argument will always appear first. Can be empty, but never
null
.
- Since:
- Ant 1.6.3
public static IntrospectionHelper getHelper(Class c)
Returns a helper for the given class, either from the cache or by creating a new instance.
- Parameters:
c
- The class for which a helper is required. Must not benull
.
- Returns:
- a helper for the specified class
public static IntrospectionHelper getHelper(Project p, Class c)
Returns a helper for the given class, either from the cache or by creating a new instance. The method will make sure the helper will be cleaned up at the end of the project, and only one instance will be created for each class.
- Parameters:
p
- the project instance.c
- The class for which a helper is required. Must not benull
.
- Returns:
- a helper for the specified class
public Map getNestedElementMap()
Returns a read-only map of nested elements supported by the introspected class.
- Returns:
- a nested-element name to nested-element
Class
unmodifiable map. Can be empty, but nevernull
.
- Since:
- Ant 1.6.3
public Enumeration getNestedElements()
Returns an enumeration of the names of the nested elements supported by the introspected class.
- Returns:
- an enumeration of the names of the nested elements supported by the introspected class.
- See Also:
getNestedElementMap()
public boolean isContainer()
Indicates whether the introspected class is a task container, supporting arbitrary nested tasks/types.
- Returns:
true
if the introspected class is a container;
false
otherwise.
- Since:
- Ant 1.6.3
- See Also:
TaskContainer
public boolean isDynamic()
Indicates whether the introspected class is a dynamic one, supporting arbitrary nested elements and/or attributes.
- Returns:
true
if the introspected class is dynamic;
false
otherwise.
- Since:
- Ant 1.6.3
- See Also:
DynamicElement
,DynamicElementNS
public void setAttribute(Project p, Object element, String attributeName, String value) throws BuildException
Sets the named attribute in the given element, which is part of the given project.
- Parameters:
p
- The project containing the element. This is used when files need to be resolved. Must not benull
.element
- The element to set the attribute in. Must not benull
.attributeName
- The name of the attribute to set. Must not benull
.value
- The value to set the attribute to. This may be interpreted or converted to the necessary type if the setter method doesn't just take a string. Must not benull
.
- Throws:
BuildException
- if the introspected class doesn't support the given attribute, or if the setting method fails.
public void storeElement(Project project, Object parent, Object child, String elementName) throws BuildException
Stores a named nested element using a storage method determined by the initial introspection. If no appropriate storage method is available, this method returns immediately.
- Parameters:
project
- Ignored in this implementation. May benull
.parent
- Parent instance to store the child in. Must not benull
.child
- Child instance to store in the parent. Should not benull
.elementName
- Name of the child element to store. May benull
, in which case this method returns immediately.
- Throws:
BuildException
- if the storage method fails.
public boolean supportsCharacters()
Returns whether or not the introspected class supports PCDATA.
- Returns:
- whether or not the introspected class supports PCDATA.
public boolean supportsNestedElement(String elementName)
Indicates if this element supports a nested element of the given name.
- Parameters:
elementName
- the name of the nested element being checked
- Returns:
- true if the given nested element is supported
public boolean supportsNestedElement(String parentUri, String elementName)
Indicate if this element supports a nested element of the given name.
- Parameters:
parentUri
- the uri of the parentelementName
- the name of the nested element being checked
- Returns:
- true if the given nested element is supported
public void throwNotSupported(Project project, Object parent, String elementName)
Utility method to throw a NotSupported exception
- Parameters:
project
- the Project instance.parent
- the object which doesn't support a requested elementelementName
- the name of the Element which is trying to be created.