org.apache.commons.jelly
Class TagSupport

java.lang.Object
  extended by org.apache.commons.jelly.TagSupport
All Implemented Interfaces:
Tag
Direct Known Subclasses:
BaseClassLoaderTag, BreakTag, CaseTag, CatchTag, ChooseTag, DefaultTag, DynaTagSupport, ExprTag, FileTag, ForEachTag, GetStaticTag, IfTag, ImportTag, IncludeTag, InvokeStaticTag, InvokeTag, JellyTag, MuteTag, OtherwiseTag, ParseTag, RemoveTag, ScopeTag, SetTag, SwitchTag, ThreadTag, WhenTag, WhileTag, WhitespaceTag, XPathTagSupport

public abstract class TagSupport
extends java.lang.Object
implements Tag

TagSupport an abstract base class which is useful to inherit from if developing your own tag.

Version:
$Revision: 1807798 $
Author:
James Strachan

Field Summary
protected  Script body
          the body of the tag
protected  JellyContext context
           
private  boolean escapeText
          whether xml text should be escaped
protected  boolean hasTrimmed
           
protected  Tag parent
          the parent of this tag
protected  java.lang.Boolean shouldTrim
          The current context
 
Constructor Summary
TagSupport()
           
TagSupport(boolean shouldTrim)
           
 
Method Summary
protected  Tag findAncestorWithClass(java.lang.Class parentClass)
          Searches up the parent hierarchy for a Tag of the given type.
protected  Tag findAncestorWithClass(java.lang.Class[] parentClasses)
          Searches up the parent hierarchy for a Tag of one of the given types.
protected  Tag findAncestorWithClass(java.util.Collection parentClasses)
          Searches up the parent hierarchy for a Tag of one of the given types.
static Tag findAncestorWithClass(Tag from, java.lang.Class tagClass)
          Searches up the parent hierarchy from the given tag for a Tag of the given type
static Tag findAncestorWithClass(Tag from, java.lang.Class[] tagClasses)
          Searches up the parent hierarchy from the given tag for a Tag matching one or more of given types.
static Tag findAncestorWithClass(Tag from, java.util.Collection tagClasses)
          Searches up the parent hierarchy from the given tag for a Tag matching one or more of given types.
 Script getBody()
           
protected  java.lang.String getBodyText()
          Executes the body of the tag and returns the result as a String.
protected  java.lang.String getBodyText(boolean shouldEscape)
          Executes the body of the tag and returns the result as a String.
 JellyContext getContext()
          Gets the context in which the tag will be run
 Tag getParent()
           
 void invokeBody(XMLOutput output)
          Invokes the body of this tag using the given output
 boolean isEscapeText()
          Returns whether the body of this tag will be escaped or not.
 boolean isTrim()
           
 void setBody(Script body)
          Sets the body of the tag
 void setContext(JellyContext context)
          Sets the context in which the tag will be run
 void setEscapeText(boolean escapeText)
          Sets whether the body of the tag should be escaped as text (so that < and > are escaped as &lt; and &gt;), which is the default or leave the text as XML.
 void setParent(Tag parent)
          Sets the parent of this tag
 void setTrim(boolean shouldTrim)
          Sets whether whitespace inside this tag should be trimmed or not.
protected  void trimBody()
          Find all text nodes inside the top level of this body and if they are just whitespace then remove them
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.commons.jelly.Tag
doTag
 

Field Detail

parent

protected Tag parent
the parent of this tag


body

protected Script body
the body of the tag


shouldTrim

protected java.lang.Boolean shouldTrim
The current context


hasTrimmed

protected boolean hasTrimmed

context

protected JellyContext context

escapeText

private boolean escapeText
whether xml text should be escaped

Constructor Detail

TagSupport

public TagSupport()

TagSupport

public TagSupport(boolean shouldTrim)
Method Detail

findAncestorWithClass

public static Tag findAncestorWithClass(Tag from,
                                        java.lang.Class tagClass)
Searches up the parent hierarchy from the given tag for a Tag of the given type

Parameters:
from - the tag to start searching from
tagClass - the type of the tag to find
Returns:
the tag of the given type or null if it could not be found

findAncestorWithClass

public static Tag findAncestorWithClass(Tag from,
                                        java.util.Collection tagClasses)
Searches up the parent hierarchy from the given tag for a Tag matching one or more of given types.

Parameters:
from - the tag to start searching from
tagClasses - a Collection of Class types that might match
Returns:
the tag of the given type or null if it could not be found

findAncestorWithClass

public static Tag findAncestorWithClass(Tag from,
                                        java.lang.Class[] tagClasses)
Searches up the parent hierarchy from the given tag for a Tag matching one or more of given types.

Parameters:
from - the tag to start searching from
tagClasses - an array of types that might match
Returns:
the tag of the given type or null if it could not be found
See Also:
findAncestorWithClass(Tag,Collection)

setTrim

public void setTrim(boolean shouldTrim)
Sets whether whitespace inside this tag should be trimmed or not. Defaults to true so whitespace is trimmed


isTrim

public boolean isTrim()

getParent

public Tag getParent()
Specified by:
getParent in interface Tag
Returns:
the parent of this tag

setParent

public void setParent(Tag parent)
Sets the parent of this tag

Specified by:
setParent in interface Tag

getBody

public Script getBody()
Specified by:
getBody in interface Tag
Returns:
the body of the tag

setBody

public void setBody(Script body)
Sets the body of the tag

Specified by:
setBody in interface Tag

getContext

public JellyContext getContext()
Description copied from interface: Tag
Gets the context in which the tag will be run

Specified by:
getContext in interface Tag
Returns:
the context in which the tag will be run

setContext

public void setContext(JellyContext context)
                throws JellyTagException
Sets the context in which the tag will be run

Specified by:
setContext in interface Tag
Throws:
JellyTagException

invokeBody

public void invokeBody(XMLOutput output)
                throws JellyTagException
Invokes the body of this tag using the given output

Specified by:
invokeBody in interface Tag
Throws:
JellyTagException

findAncestorWithClass

protected Tag findAncestorWithClass(java.lang.Class parentClass)
Searches up the parent hierarchy for a Tag of the given type.

Returns:
the tag of the given type or null if it could not be found

findAncestorWithClass

protected Tag findAncestorWithClass(java.lang.Class[] parentClasses)
Searches up the parent hierarchy for a Tag of one of the given types.

Returns:
the tag of the given type or null if it could not be found
See Also:
findAncestorWithClass(Collection)

findAncestorWithClass

protected Tag findAncestorWithClass(java.util.Collection parentClasses)
Searches up the parent hierarchy for a Tag of one of the given types.

Returns:
the tag of the given type or null if it could not be found

getBodyText

protected java.lang.String getBodyText()
                                throws JellyTagException
Executes the body of the tag and returns the result as a String.

Returns:
the text evaluation of the body
Throws:
JellyTagException

getBodyText

protected java.lang.String getBodyText(boolean shouldEscape)
                                throws JellyTagException
Executes the body of the tag and returns the result as a String.

Parameters:
shouldEscape - Signal if the text should be escaped.
Returns:
the text evaluation of the body
Throws:
JellyTagException

trimBody

protected void trimBody()
Find all text nodes inside the top level of this body and if they are just whitespace then remove them


isEscapeText

public boolean isEscapeText()
Returns whether the body of this tag will be escaped or not.


setEscapeText

public void setEscapeText(boolean escapeText)
Sets whether the body of the tag should be escaped as text (so that < and > are escaped as &lt; and &gt;), which is the default or leave the text as XML.