xdoclet
Class XDocletTagSupport

java.lang.Object
  extended byxdoclet.template.TemplateTagHandler
      extended byxdoclet.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/