Google

IntrospectionHelper (Apache Ant API)

org.apache.tools.ant
Class IntrospectionHelper


java.lang.Object

  |

  +--org.apache.tools.ant.IntrospectionHelper

All Implemented Interfaces:
BuildListener, java.util.EventListener

public class IntrospectionHelper
extends java.lang.Object
implements BuildListener

Helper class that collects the methods a task or nested element holds to set attributes, create nested elements or hold PCDATA elements.

Author:
Stefan Bodewig

Method Summary
 void addText(Project project, java.lang.Object element, java.lang.String text)
          Adds PCDATA to an element, using the element's void addText(String) method, if it has one.
 void buildFinished(BuildEvent event)
          Clears all storage used by this class, including the static cache of helpers.
 void buildStarted(BuildEvent event)
          Empty implementation to satisfy the BuildListener interface.
 java.lang.Object createElement(Project project, java.lang.Object parent, java.lang.String elementName)
          Creates a named nested element.
 java.util.Enumeration getAttributes()
          Returns an enumeration of the names of the attributes supported by the introspected class.
 java.lang.Class getAttributeType(java.lang.String attributeName)
          Returns the type of a named attribute.
protected  java.lang.String getElementName(Project project, java.lang.Object element)
          Returns a description of the type of the given element in relation to a given project.
 java.lang.Class getElementType(java.lang.String elementName)
          Returns the type of a named nested element.
static IntrospectionHelper getHelper(java.lang.Class c)
          Returns a helper for the given class, either from the cache or by creating a new instance.
 java.util.Enumeration getNestedElements()
          Returns an enumeration of the names of the nested elements supported by the introspected class.
 void messageLogged(BuildEvent event)
          Empty implementation to satisfy the BuildListener interface.
 void setAttribute(Project p, java.lang.Object element, java.lang.String attributeName, java.lang.String value)
          Sets the named attribute in the given element, which is part of the given project.
 void storeElement(Project project, java.lang.Object parent, java.lang.Object child, java.lang.String elementName)
          Stores a named nested element using a storage method determined by the initial introspection.
 boolean supportsCharacters()
          Returns whether or not the introspected class supports PCDATA.
 void targetFinished(BuildEvent event)
          Empty implementation to satisfy the BuildListener interface.
 void targetStarted(BuildEvent event)
          Empty implementation to satisfy the BuildListener interface.
 void taskFinished(BuildEvent event)
          Empty implementation to satisfy the BuildListener interface.
 void taskStarted(BuildEvent event)
          Empty implementation to satisfy the BuildListener interface.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getHelper


public static IntrospectionHelper getHelper(java.lang.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 be null.
Returns:
a helper for the specified class

setAttribute


public void setAttribute(Project p,
                         java.lang.Object element,
                         java.lang.String attributeName,
                         java.lang.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 be null.
element - The element to set the attribute in. Must not be null.
attributeName - The name of the attribute to set. Must not be null.
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 be null.
Throws:
BuildException - if the introspected class doesn't support the given attribute, or if the setting method fails.

addText


public void addText(Project project,
                    java.lang.Object element,
                    java.lang.String text)
             throws BuildException
Adds PCDATA to an element, using the element's void 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 be null.
element - The element to add the text to. Must not be null.
text - The text to add. Must not be null.
Throws:
BuildException - if non-whitespace text is provided and no method is available to handle it, or if the handling method fails.

createElement


public java.lang.Object createElement(Project project,
                                      java.lang.Object parent,
                                      java.lang.String elementName)
                               throws BuildException
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 be null. 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 be null.
elementName - Name of the element to create an instance of. Must not be null.
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.

storeElement


public void storeElement(Project project,
                         java.lang.Object parent,
                         java.lang.Object child,
                         java.lang.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 be null.
parent - Parent instance to store the child in. Must not be null.
child - Child instance to store in the parent. Should not be null.
elementName - Name of the child element to store. May be null, in which case this method returns immediately.
Throws:
BuildException - if the storage method fails.

getElementType


public java.lang.Class getElementType(java.lang.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 be null.
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.

getAttributeType


public java.lang.Class getAttributeType(java.lang.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 be null.
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.

supportsCharacters


public boolean supportsCharacters()
Returns whether or not the introspected class supports PCDATA.

Returns:
whether or not the introspected class supports PCDATA.

getAttributes


public java.util.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.

getNestedElements


public java.util.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.

getElementName


protected java.lang.String getElementName(Project project,
                                          java.lang.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 be null.
element - The element to describe. Must not be null.
Returns:
a description of the element type

buildFinished


public void buildFinished(BuildEvent event)
Clears all storage used by this class, including the static cache of helpers.

Specified by:
buildFinished in interface BuildListener
Parameters:
event - Ignored in this implementation.
See Also:
BuildEvent.getException()

buildStarted


public void buildStarted(BuildEvent event)
Empty implementation to satisfy the BuildListener interface.

Specified by:
buildStarted in interface BuildListener
Parameters:
event - An event with any relevant extra information. Must not be null.

targetStarted


public void targetStarted(BuildEvent event)
Empty implementation to satisfy the BuildListener interface.

Specified by:
targetStarted in interface BuildListener
Parameters:
event - An event with any relevant extra information. Must not be null.
See Also:
BuildEvent.getTarget()

targetFinished


public void targetFinished(BuildEvent event)
Empty implementation to satisfy the BuildListener interface.

Specified by:
targetFinished in interface BuildListener
Parameters:
event - An event with any relevant extra information. Must not be null.
See Also:
BuildEvent.getException()

taskStarted


public void taskStarted(BuildEvent event)
Empty implementation to satisfy the BuildListener interface.

Specified by:
taskStarted in interface BuildListener
Parameters:
event - An event with any relevant extra information. Must not be null.
See Also:
BuildEvent.getTask()

taskFinished


public void taskFinished(BuildEvent event)
Empty implementation to satisfy the BuildListener interface.

Specified by:
taskFinished in interface BuildListener
Parameters:
event - An event with any relevant extra information. Must not be null.
See Also:
BuildEvent.getException()

messageLogged


public void messageLogged(BuildEvent event)
Empty implementation to satisfy the BuildListener interface.

Specified by:
messageLogged in interface BuildListener
Parameters:
event - An event with any relevant extra information. Must not be null.
See Also:
BuildEvent.getMessage(), BuildEvent.getPriority()


Copyright 2000-2002 Apache Software Foundation. All Rights Reserved.