## MVCSoft

Implemented in class xdoclet.modules.mvcsoft.ejb.MVCSoftTagsHandler.

- Block Tags
- Content Tags

### Block Tags:

#### forAllDistinctClassTags (block template)

Iterates over all tags named according to tagName in a non-duplicated manner. The paramName parameter specifies the tag parameter that should be unique during the iteration. Duplicated tags will generate a warning message. Please note that this tag already processes all classes. There is no need to wrap it inside a <XDtClass:forAllClasses> tag or any other tag that processes a group of classes.

tagName | The tag to iterate.
tagKey | The tag parameter that should be used as identifier.

#### classOf (block template)

Returns the not-full-qualified name of the full-qualified class name specified in the body of this tag.

#### ifIsClassAbstract (block template)

Evaluate the body block if current class is abstract.

#### ifIsClassNotAbstract (block template)

Evaluate the body block if current class is not abstract.

#### pushClass (block template)

Pushes the class specified by value parameter to top of stack making it the current class.

value | If return-type specified then push current method return type, else find the XClass for the class name and push it. Valid Values = {return-type,whatever class name}

#### forAllClasses (block template)

Iterates over all classes loaded by xjavadoc and evaluates the body of the tag for each class. It discards classes that have a xdoclet-generated class tag defined.

[abstract] | If true then accept abstract classes also; otherwise don't. Valid Values = {true,false}
[type] | For all classes by the type.
[extent] | Specifies the extent of the type search. If concrete-type then only check the concrete type, if superclass then check also superclass, if hierarchy then search the whole hierarchy and find if the class is of the specified type. Default is hierarchy. Valid Values = {concrete-type,superclass,hierarchy}

#### ifDoesntHaveClassTag (block template)

Evaluates the body if current class doesn't have at least one tag with the specified name.

tagName | The tag name.
[paramName] | The parameter name. If not specified, then the raw content of the tag is returned.
[paramNum] | The zero-based parameter number. It's used if the user used the space-separated format for specifying parameters.
[superclasses] | If true then traverse superclasses also, otherwise look up the tag in current concrete class only. Valid Values = {true,false}
[error] | Show this error message if no tag found.

#### ifHasClassTag (block template)

Evaluates the body if current class has at least one tag with the specified name.

tagName | The tag name.
[paramName] | The parameter name. If not specified, then the raw content of the tag is returned.
[paramNum] | The zero-based parameter number. It's used if the user used the space-separated format for specifying parameters.
[superclasses] | If true then traverse superclasses also, otherwise look up the tag in current concrete class only. Valid Values = {true,false}
[error] | Show this error message if no tag found.

#### ifClassTagValueMatches (block template)

Evaluate the body if the match variable equals with the value of the specified tag/parameter.

[values] | The valid values for the parameter, comma separated. An error message is printed if the parameter value is not one of the values.
[default] | The default value is returned if parameter not specified by user for the tag.
[superclasses] | If true then traverse superclasses also, otherwise look up the tag in current concrete class only. Valid Values = {true,false}

#### ifClassTagValueEquals (block template)

Evaluates the body if value for the class tag equals the specified value.

tagName | The tag name.
[paramName] | The parameter name. If not specified, then the raw content of the tag is returned.
[paramNum] | The zero-based parameter number. It's used if the user used the space-separated format for specifying parameters.
value | The desired value.

#### ifClassTagValueNotEquals (block template)

Evaluates the body if value for the class tag not equals the specified value.

tagName | The tag name.
[paramName] | The parameter name. If not specified, then the raw content of the tag is returned.
[paramNum] | The zero-based parameter number. It's used if the user used the space-separated format for specifying parameters.
value | The desired value.

#### forAllClassTags (block template)

Iterates over all tags of current class with the name tagName and evaluates the body of the tag for each method.

tagName | The tag name.
[superclasses] | If true then traverse superclasses also, otherwise look up the tag in current concrete class only. Valid Values = {true,false}
[tagKey] | A tag property that will be used as a unique key. This is used to avoid duplicate code due to similar tags in superclasses.

#### forAllClassTagTokens (block template)

Iterates over all tokens in specified class tag with the name tagName and evaluates the body for every token.

tagName | The name of the tag to look in.
paramName | The parameter of the tag whose value is to be tokenized.
[superclasses] | If true then traverse superclasses also, otherwise look up the tag in current concrete class only. Valid Values = {true,false}
[delimiter] | delimiter for the StringTokenizer. consult javadoc for java.util.StringTokenizer default is ','
[skip] | how many tokens to skip on start

#### setMatchValue (block template)

Sets the value of match variable.

value | The new value for matchPattern.

### Content templates:

#### className (content template)

Returns the not-fully-qualified name of the current class without the package name.

#### fullClassName (content template)

Returns the full-qualified name of the current class.

#### transformedClassName (content template)

Returns the transformed name of the current class with package name.

#### fullTransformedClassName (content template)

Returns the fully-qualified transformed name of the current class with package name.

#### fullSuperclassName (content template)

Returns the full-qualified name of the superclass of the current class.

#### modifiers (content template)

The current class' modifiers.

#### symbolicClassName (content template)

Returns the symbolic name of the current class. For a java bean it's the same as the class name.

#### classTagValue (content template)

Iterates over all class tags with the specified tagName and evaluates the body of the tag for each class tag.

tagName | The tag name.
[paramName] | The parameter name. If not specified, then the raw content of the tag is returned.
[paramNum] | The zero-based parameter number. It's used if the user used the space-separated format for specifying parameters.
[values] | The valid values for the parameter, comma separated. An error message is printed if the parameter value is not one of the values.
[default] | The default value is returned if parameter not specified by user for the tag.
[superclasses] | If true then traverse superclasses also, otherwise look up the tag in current concrete class only. Valid Values = {true,false}
[mandatory] | Generate an error if parameter not specified by user for the tag. Valid Values = {true,false}

#### classTagValueMatch (content template)

Sets the value of match variable. Match variable serves as a variable for templates, you set it somewhere in template and look it up somewhere else in temaplte. This tag does not return any content, it just sets the match variable.

tagName | The tag name.
[paramName] | The parameter name. If not specified, then the raw content of the tag is returned.
[paramNum] | The zero-based parameter number. It's used if the user used the space-separated format for specifying parameters.

#### classComment (content template)

The comment for the current class.

[no-comment-signs] | If true then don't decorate the comment with comment signs. Default is false. Valid Values = {true,false}
[indent] | Number of spaces to indent the comment. Default is 0.

#### classCommentText (content template)

The text of the javadoc comment for the current class.

[no-comment-signs] | If true then don't decorate the comment with comment signs. Default is false. Valid Values = {true,false}
[indent] | Number of spaces to indent the comment. Default is 0.

#### classCommentTags (content template)

The javadoc comment tags for the current class (plus xdoclet-generated).

[indent] | Number of spaces to indent the tags. Default is 0.

#### firstSentenceDescription (content template)

Return first sentence of standard javadoc of current class.

[no-description-if-lacking] | Returns 'No Description' if comment is lacking.

#### importedList (content template)

Iterates over all imported classes and packages imported in the current class and returns the list. The composed string has 'import ' in front of each import statement, and each import is in a separate line.

currentClass | ???

#### matchValue (content template)

Returns the value of match variable. Match variable serves as a variable for templates, you set it somewhere in template and look it up somewhere else in template.

#### currentToken (content template)

Returns current token inside forAllClassTagTokens.

#### skipToken (content template)

Skips current token. Returns empty string.