## xdoclet
Class XDocletTagSupport

    java.lang.Object
      xdoclet.template.TemplateTagHandler
          xdoclet.XDocletTagSupport

Direct Known Subclasses:
  AbstractProgramElementTagsHandler, ActionFormTagsHandler, AntdocTagsHandler, BeanTagsHandler, CastorTagsHandler, CollectionTagsHandler, CommentTagsHandler, ConfigTagsHandler, DocumentationTagsHandler, EjbTagsHandler, EnvTagsHandler, ExternalizerTagsHandler, HibernateTagsHandler, IdTagsHandler, InfoTagsHandler, JavaBeanTagsHandler, JdoTagsHandler, MergeTagsHandler, ModuleTagsHandler, NavigationTagsHandler, ResinWebTagsHandler, TagDefTagsHandler, TapestryTagsHandler, TranslatorTagsHandler, TypeTagsHandler, WebTagsHandler, WebWorkTagsHandler, WseeTagsHandler, XmlTagsHandler

public abstract class XDocletTagSupport
extends TemplateTagHandler

Derives from TemplateTagHandler and adds handy support methods for working with Javadoc Doclet classes.

Version:
  $Revision: 1.61 $
Author:
  Dmitri Colebatch (dim@bigpond.net.au)
created
  October 12, 2001

Field Summary
`static int` `FOR_CLASS`
`static int` `FOR_CONSTRUCTOR`
`static int` `FOR_FIELD`
`static int` `FOR_METHOD`
`protected static String` `PARAMETER_DELIMITER` Default delimiter used inside a xdoclet tag attribute.

Constructor Summary
`XDocletTagSupport()`

Method Summary
`protected static String` `delimit(String attributeValue, Properties attributes)`
`protected static String` `expandClassName(String value, Properties attributes)`
`void` `generate(String template)`
`static xjavadoc.XClass` `getCurrentClass()` Provides the current class in the XDoclet build, or null if there is no current class.
`static xjavadoc.XTag` `getCurrentClassTag()`
`static xjavadoc.XConstructor` `getCurrentConstructor()` Provides the current constructor in the XDoclet build, or null if there is no current constructor.
`static xjavadoc.XField` `getCurrentField()` Provides the current field in the XDoclet build, or null if there is no current field.
`static xjavadoc.XTag` `getCurrentFieldTag()`
`static xjavadoc.XMethod` `getCurrentMethod()` Provides the current method in the XDoclet build, or null if there is no current method.
`static xjavadoc.XTag` `getCurrentMethodTag()`
`static xjavadoc.XPackage` `getCurrentPackage()` Provides the current package in the XDoclet build, or null if there is no current package.
`protected static DocletContext` `getDocletContext()`
`TemplateEngine` `getEngine()` Gets the Engine attribute of the TemplateTagHandler object.
`protected static String` `getExpandedDelimitedTagValue(Properties attributes, int forType)` The `getExpandedDelimitedTagValue` method returns a delimited version with class names expanded if requested of the tag value.
`protected static String` `getTagValue(int forType, String tagName, String paramName, String validValues, String defaultValue, boolean superclasses, boolean mandatory)` Gets the TagValue attribute of the XDocletTagSupport class
`protected static String` `getTagValue(int forType, xjavadoc.XDoc doc, String tagName, String paramName, String validValues, String defaultValue, boolean superclasses, boolean mandatory)`
`protected static String` `getTagValue(Properties attributes, int forType)` Return the Value of a tag specified in a Properties object.
`protected boolean` `hasHavingClassTag(xjavadoc.XClass clazz)` Tests whether the passed class has the tag which is specfied in the `havingClassTag` attribute of the current subtask.
`protected static boolean` `hasTag(Properties attributes, int forType)` A utility method used by ifHasClassTag/ifDoesntHaveClassTag and ifHasMethodTag/ifDoesntHaveMethodTag, return true if at least one tag exists with the specified name.
`protected static boolean` `isTagValueEqual(Properties attributes, int forType)` A utility method used by ifMethodTagValueEquals/ifMethodTagValueNotEquals and ifClassTagValueEquals/ifClassTagValueNotEquals, return true if the value of the tag/XParameter equals with value.
`protected static void` `mandatoryParamNotFound(xjavadoc.XDoc doc, String paramName, String tagName)` Throws an XDocletException exception to stop the build process.
`protected void` `mandatoryTemplateTagParamNotFound(String templateTagName, String paramName)` Throws an XDocletException exception to stop the build process.
`protected String` `modifiers(int forType)` Return the modifiers (static, private, etc.) for the current program element of the specified type.
`static xjavadoc.XClass` `popCurrentClass()` Pop the current class off the top of the class stack.
`static xjavadoc.XClass` `pushCurrentClass(xjavadoc.XClass clazz)` Push the specified class to the top of the current class stack making it effectively the current class.
`static void` `setCurrentClass(xjavadoc.XClass clazz)` Sets current class to `clazz` by clearing `currentClassStack` stack and pushing `clazz` into top of it.
`static void` `setCurrentClassTag(xjavadoc.XTag currentTag)` Sets the current class tag.
`static void` `setCurrentConstructor(xjavadoc.XConstructor constructor)` Set the current constructor.
`static void` `setCurrentField(xjavadoc.XField field)` Set the current field.
`static void` `setCurrentFieldTag(xjavadoc.XTag currentTag)` Sets the current field tag.
`static void` `setCurrentMethod(xjavadoc.XMethod method)` Set the current method.
`static void` `setCurrentMethodTag(xjavadoc.XTag currentTag)` Sets the current method tag.
`static void` `setCurrentPackage(xjavadoc.XPackage pakkage)` Set the current package.

Methods inherited from class xdoclet.template.TemplateTagHandler
`getXJavaDoc, setXJavaDoc`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### FOR_CLASS

    public static final int FOR_CLASS

See Also:
  Constant Field Values

### FOR_METHOD

    public static final int FOR_METHOD

See Also:
  Constant Field Values

### FOR_FIELD

    public static final int FOR_FIELD

See Also:
  Constant Field Values

### FOR_CONSTRUCTOR

    public static final int FOR_CONSTRUCTOR

See Also:
  Constant Field Values

### PARAMETER_DELIMITER

    protected static final String PARAMETER_DELIMITER

  Default delimiter used inside a xdoclet tag attribute.

  See Also:
    Constant Field Values

Constructor Detail

### XDocletTagSupport

    public XDocletTagSupport()

Method Detail

### getCurrentMethodTag

    public static xjavadoc.XTag getCurrentMethodTag()

  Returns:
    The current tag.

### getCurrentClassTag

    public static xjavadoc.XTag getCurrentClassTag()

  Returns:
    The current tag.

### getCurrentFieldTag

    public static xjavadoc.XTag getCurrentFieldTag()

  Returns:
    The current tag.

### getCurrentMethod

    public static xjavadoc.XMethod getCurrentMethod()

  Provides the current method in the XDoclet build, or null if there is no current method.

  Returns:
    current method
  See Also:
    `setCurrentMethod(xjavadoc.XMethod)`

### getCurrentField

    public static xjavadoc.XField getCurrentField()

  Provides the current field in the XDoclet build, or null if there is no current field.

  Returns:
    current field
  See Also:
    `setCurrentField(xjavadoc.XField)`

### getCurrentConstructor

    public static xjavadoc.XConstructor getCurrentConstructor()

  Provides the current constructor in the XDoclet build, or null if there is no current constructor.

  Returns:
    current constructor
  See Also:
    `setCurrentConstructor(xjavadoc.XConstructor)`

### getCurrentClass

    public static xjavadoc.XClass getCurrentClass()

  Provides the current class in the XDoclet build, or null if there is no current class.

  Returns:
    current class
  See Also:
    `pushCurrentClass(xjavadoc.XClass)`, `popCurrentClass()`

### getCurrentPackage

    public static xjavadoc.XPackage getCurrentPackage()

  Provides the current package in the XDoclet build, or null if there is no current package.

  Returns:
    current package

### setCurrentMethod

    public static void setCurrentMethod(xjavadoc.XMethod method)

  Set the current method.

  Parameters:
    `method` - The method to make the current method
  See Also:
    `getCurrentMethod()`

### setCurrentConstructor

    public static void setCurrentConstructor(xjavadoc.XConstructor constructor)

  Set the current constructor.

  Parameters:
    `constructor` - The constructor to make the current constructor
  See Also:
    `getCurrentConstructor()`

### setCurrentClass

    public static void setCurrentClass(xjavadoc.XClass clazz)

  Sets current class to `clazz` by clearing `currentClassStack` stack and pushing `clazz` into top of it.

  Parameters:
    `clazz` - The class to make the current class
  See Also:
    `getCurrentClass()`

### setCurrentPackage

    public static void setCurrentPackage(xjavadoc.XPackage pakkage)

  Set the current package.

  Parameters:
    `pakkage` - The package to make the current package
  See Also:
    `getCurrentPackage()`

### setCurrentMethodTag

    public static void setCurrentMethodTag(xjavadoc.XTag currentTag)

  Sets the current method tag.

  Parameters:
    `currentTag` - The tag to make the current method tag

### setCurrentClassTag

    public static void setCurrentClassTag(xjavadoc.XTag currentTag)

  Sets the current class tag.

  Parameters:
    `currentTag` - The tag to make the current class tag

### setCurrentFieldTag

    public static void setCurrentFieldTag(xjavadoc.XTag currentTag)

  Sets the current field tag.

  Parameters:
    `currentTag` - The tag to make the current field tag

### setCurrentField

    public static void setCurrentField(xjavadoc.XField field)

  Set the current field.

  Parameters:
    `field` - The field to make the current field
  See Also:
    `getCurrentField()`

### pushCurrentClass

    public static xjavadoc.XClass pushCurrentClass(xjavadoc.XClass clazz)

  Push the specified class to the top of the current class stack making it effectively the current class.

  Parameters:
    `clazz` - The class to push onto the top of the class stack.
  Returns:
    The class on the top of the stack.
  See Also:
    `getCurrentClass()`, `popCurrentClass()`

### popCurrentClass

    public static xjavadoc.XClass popCurrentClass()

  Pop the current class off the top of the class stack.

  Returns:
    The class popped off the top of the stack.
  See Also:
    `getCurrentClass()`, `pushCurrentClass(xjavadoc.XClass)`

### getDocletContext

    protected static DocletContext getDocletContext()

  Returns:
    the context object casted to DocletContext

### getExpandedDelimitedTagValue

    protected static String getExpandedDelimitedTagValue(Properties attributes,
                                                         int forType)
                                                  throws XDocletException

  The `getExpandedDelimitedTagValue` method returns a delimited version with class names expanded if requested of the tag value.

  Parameters:
    `attributes` - a `Properties` value
    `forType` - an `int` value
  Returns:
    a `String` value
  Throws:
    `XDocletException` - if an error occurs

### getTagValue

    protected static String getTagValue(Properties attributes,
                                        int forType)
                                 throws XDocletException

  Return the Value of a tag specified in a Properties object. This method work on the currentTag object variable, matchs it against the XTag specified in the attributes Properties and returns the value of the specified tag.

  Parameters:
    `attributes` - The attributes of the template tag
    `forType` - if FOR_CLASS, then a fifth property superclasses is searched, if this is set to true, then the tag is also searched in all superclasses of current class. If forType is set to FOR_METHOD or FOR_CONSTRUCTOR or FOR_FIELD, current method or field is searched for the tag.
  Returns:
    The TagValue value
  Throws:
    `XDocletException` - Description of Exception

### getTagValue

    protected static String getTagValue(int forType,
                                        String tagName,
                                        String paramName,
                                        String validValues,
                                        String defaultValue,
                                        boolean superclasses,
                                        boolean mandatory)
                                 throws XDocletException

  Gets the TagValue attribute of the XDocletTagSupport class

  Parameters:
    `forType` - Describe what the parameter does
    `tagName` - Describe what the parameter does
    `paramName` - Describe what the parameter does
    `validValues` - Describe what the parameter does
    `defaultValue` - Describe what the parameter does
    `superclasses` - Describe what the parameter does
    `mandatory` - Describe what the parameter does
  Returns:
    The TagValue value
  Throws:
    `XDocletException` - Describe the exception

### getTagValue

    protected static String getTagValue(int forType,
                                        xjavadoc.XDoc doc,
                                        String tagName,
                                        String paramName,
                                        String validValues,
                                        String defaultValue,
                                        boolean superclasses,
                                        boolean mandatory)
                                 throws XDocletException

  Parameters:
    `doc` - Describe what the parameter does
    `tagName` - Describe what the parameter does
    `paramName` - Describe what the parameter does
    `validValues` - Describe what the parameter does
    `defaultValue` - Describe what the parameter does
    `superclasses` - Describe what the parameter does
    `mandatory` - Describe what the parameter does
    `forType` -
  Returns:
    The TagValue value
  Throws:
    `XDocletException` - Describe the exception
  To do:
    (Aslak) maybe this method ought to be moved to xjavadoc.XDoc? Not a big deal though.

### isTagValueEqual

    protected static boolean isTagValueEqual(Properties attributes,
                                             int forType)
                                      throws XDocletException

  A utility method used by ifMethodTagValueEquals/ifMethodTagValueNotEquals and ifClassTagValueEquals/ifClassTagValueNotEquals, return true if the value of the tag/XParameter equals with value.

  Parameters:
    `attributes` - The attributes of the template tag
    `forType` - Describe what the parameter does
  Returns:
    Description of the Returned Value
  Throws:
    `XDocletException` - Description of Exception

### expandClassName

    protected static String expandClassName(String value,
                                            Properties attributes)

### mandatoryParamNotFound

    protected static void mandatoryParamNotFound(xjavadoc.XDoc doc,
                                                 String paramName,
                                                 String tagName)
                                          throws XDocletException

  Throws an XDocletException exception to stop the build process. The exception has an informative message to help user find out the cause of the error (not specifying a mandatory parameter for a tag).

  Parameters:
    `paramName` - tag parameter name
    `tagName` - tag name
    `doc` - member javadoc reference
  Throws:
    `XDocletException` - Description of Exception

### hasTag

    protected static boolean hasTag(Properties attributes,
                                    int forType)
                             throws XDocletException

  A utility method used by ifHasClassTag/ifDoesntHaveClassTag and ifHasMethodTag/ifDoesntHaveMethodTag, return true if at least one tag exists with the specified name.

  Parameters:
    `attributes` - The attributes of the template tag
    `forType` -
  Returns:
    `true` if matching tag found
  Throws:
    `XDocletException` - Description of Exception

### delimit

    protected static String delimit(String attributeValue,
                                    Properties attributes)

  Parameters:
    `attributeValue` - Describe what the parameter does
    `attributes` - Describe what the parameter does
  Returns:
    Describe the return value
  To do:
    fix the () equals test, it is not nice. Test : finder Home definition on AccountBean

### getEngine

    public TemplateEngine getEngine()

  Gets the Engine attribute of the TemplateTagHandler object.

  Returns:
    The Engine value

### generate

    public void generate(String template)
                  throws XDocletException

  Parameters:
    `template` -
  Throws:
    `XDocletException`
  To do:
    throw TemplateException instead

### modifiers

    protected String modifiers(int forType)
                        throws XDocletException

  Return the modifiers (static, private, etc.) for the current program element of the specified type.

  Parameters:
    `forType` - FOR_XXX type constant
  Returns:
    modifiers
  Throws:
    `XDocletException` - Describe the exception

### mandatoryTemplateTagParamNotFound

    protected void mandatoryTemplateTagParamNotFound(String templateTagName,
                                                     String paramName)
                                              throws XDocletException

  Throws an XDocletException exception to stop the build process. The exception has an informative message to help user find out the cause of the error (omitting a mandatory parameter on a tag).

  Parameters:
    `templateTagName` - tag name
    `paramName` - tag parameter name
  Throws:
    `XDocletException`

### hasHavingClassTag

    protected boolean hasHavingClassTag(xjavadoc.XClass clazz)

  Tests whether the passed class has the tag which is specfied in the `havingClassTag` attribute of the current subtask.

  Parameters:
    `clazz` - the Class to check
  Returns:
    `true` if the current subtask has no `havingClassTag` or the passed class has a tag with the same name as the `havingClassTag` attribute of the current subtask, otherwise `false`

http://xdoclet.sourceforge.net/