# Class Node.CustomTag

java.lang.Object
org.apache.jasper.compiler.Node
org.apache.jasper.compiler.Node.ChildInfoBase
org.apache.jasper.compiler.Node.CustomTag

All Implemented Interfaces:
  `TagConstants`

Enclosing class:
  `Node`

public static class Node.CustomTag extends Node.ChildInfoBase
Represents a custom tag

Author:
  Kin-man Chung, Jan Luehe, Shawn Bayern, Mark Roth

## Nested Class Summary

### Nested classes/interfaces inherited from class org.apache.jasper.compiler.Node

`Node.AttributeDirective, Node.AttributeGenerator, Node.ChildInfo, Node.ChildInfoBase, Node.Comment, Node.CustomTag, Node.Declaration, Node.DoBodyAction, Node.ELExpression, Node.Expression, Node.FallBackAction, Node.ForwardAction, Node.GetProperty, Node.IncludeAction, Node.IncludeDirective, Node.InvokeAction, Node.JspAttribute, Node.JspBody, Node.JspElement, Node.JspOutput, Node.JspRoot, Node.JspText, Node.NamedAttribute, Node.Nodes, Node.PageDirective, Node.ParamAction, Node.ParamsAction, Node.PlugIn, Node.Root, Node.ScriptingElement, Node.Scriptlet, Node.SetProperty, Node.TagDirective, Node.TaglibDirective, Node.TemplateText, Node.UninterpretedTag, Node.UseBean, Node.VariableDirective, Node.Visitor`

## Field Summary

### Fields inherited from class org.apache.jasper.compiler.Node

`attrs, beginJavaLine, body, endJavaLine, innerClassName, localName, namedAttributeNodes, nonTaglibXmlnsAttrs, parent, qName, startMark, taglibAttrs, text`

### Fields inherited from interface org.apache.jasper.compiler.TagConstants

`ATTRIBUTE_ACTION, ATTRIBUTE_DIRECTIVE_ACTION, BODY_ACTION, DECLARATION_ACTION, DIRECTIVE_ACTION, DOBODY_ACTION, ELEMENT_ACTION, EXPRESSION_ACTION, FALLBACK_ACTION, FORWARD_ACTION, GET_PROPERTY_ACTION, INCLUDE_ACTION, INCLUDE_DIRECTIVE_ACTION, INVOKE_ACTION, JSP_ATTRIBUTE_ACTION, JSP_ATTRIBUTE_DIRECTIVE_ACTION, JSP_BODY_ACTION, JSP_DECLARATION_ACTION, JSP_DOBODY_ACTION, JSP_ELEMENT_ACTION, JSP_EXPRESSION_ACTION, JSP_FALLBACK_ACTION, JSP_FORWARD_ACTION, JSP_GET_PROPERTY_ACTION, JSP_INCLUDE_ACTION, JSP_INCLUDE_DIRECTIVE_ACTION, JSP_INVOKE_ACTION, JSP_OUTPUT_ACTION, JSP_PAGE_DIRECTIVE_ACTION, JSP_PARAM_ACTION, JSP_PARAMS_ACTION, JSP_PLUGIN_ACTION, JSP_ROOT_ACTION, JSP_SCRIPTLET_ACTION, JSP_SET_PROPERTY_ACTION, JSP_TAG_DIRECTIVE_ACTION, JSP_TAGLIB_DIRECTIVE_ACTION, JSP_TEXT_ACTION, JSP_TEXT_ACTION_END, JSP_URI, JSP_USE_BEAN_ACTION, JSP_VARIABLE_DIRECTIVE_ACTION, OUTPUT_ACTION, PAGE_DIRECTIVE_ACTION, PARAM_ACTION, PARAMS_ACTION, PLUGIN_ACTION, ROOT_ACTION, SCRIPTLET_ACTION, SET_PROPERTY_ACTION, TAG_DIRECTIVE_ACTION, TAGLIB_DIRECTIVE_ACTION, TEXT_ACTION, URN_JSPTAGDIR, URN_JSPTLD, USE_BEAN_ACTION, VARIABLE_DIRECTIVE_ACTION`

## Method Summary

Modifier and Type
Method
Description
`void`
`accept(Node.Visitor v)`
`boolean`
`checkIfAttributeIsJspFragment(String name)`
Checks to see if the attribute of the given name is of type JspFragment.
`Node.Nodes`
`getAtETag()`
`Node.Nodes`
`getAtSTag()`
`int`
`getCustomNestingLevel()`
`Node.CustomTag`
`getCustomTagParent()`
`Node.JspAttribute[]`
`getJspAttributes()`
`Integer`
`getNumCount()`
`String`
`getPrefix()`
`List<Object>`
`getScriptingVars(int scope)`
`TagData`
`getTagData()`
`TagFileInfo`
`getTagFileInfo()`
`Class<?>`
`getTagHandlerClass()`
`String`
`getTagHandlerPoolName()`
`TagInfo`
`getTagInfo()`
`TagPluginContext`
`getTagPluginContext()`
`TagVariableInfo[]`
`getTagVariableInfos()`
`String`
`getURI()`
`VariableInfo[]`
`getVariableInfos()`
`boolean`
`hasEmptyBody()`
A custom action is considered to have an empty body if any of the following hold true: getBody() returns null all immediate children are jsp:attribute actions the action's jsp:body is empty
`boolean`
`implementsBodyTag()`
`boolean`
`implementsDynamicAttributes()`
`boolean`
`implementsIterationTag()`
`boolean`
`implementsJspIdConsumer()`
`boolean`
`implementsSimpleTag()`
`boolean`
`implementsTryCatchFinally()`
`boolean`
`isTagFile()`
`void`
`setAtETag(Node.Nodes eTag)`
`void`
`setAtSTag(Node.Nodes sTag)`
`void`
`setCustomTagParent(Node.CustomTag n)`
`void`
`setJspAttributes(Node.JspAttribute[] jspAttrs)`
`void`
`setNumCount(Integer count)`
`void`
`setScriptingVars(List<Object> vec, int scope)`
`void`
`setTagData(TagData tagData)`
`void`
`setTagHandlerClass(Class<?> hc)`
`void`
`setTagHandlerPoolName(String s)`
`void`
`setTagPluginContext(TagPluginContext tagPluginContext)`
`void`
`setUseTagPlugin(boolean use)`
`boolean`
`useTagPlugin()`

### Methods inherited from class org.apache.jasper.compiler.Node.ChildInfoBase

`getChildInfo`

### Methods inherited from class org.apache.jasper.compiler.Node

`getAttributes, getAttributeValue, getBeginJavaLine, getBody, getEndJavaLine, getInnerClassName, getLocalName, getNamedAttributeNode, getNamedAttributeNodes, getNonTaglibXmlnsAttributes, getParent, getQName, getRoot, getStart, getTaglibAttributes, getText, getTextAttribute, setAttributes, setBeginJavaLine, setBody, setEndJavaLine, setInnerClassName`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### accept

public void accept(Node.Visitor v) throws JasperException

Throws:
  `JasperException`

### getURI

public String getURI()

Returns:
  The URI namespace that this custom action belongs to

### getPrefix

public String getPrefix()

Returns:
  The tag prefix

### setJspAttributes

public void setJspAttributes(Node.JspAttribute[] jspAttrs)

### getJspAttributes

public Node.JspAttribute[] getJspAttributes()

### setTagData

public void setTagData(TagData tagData)

### getTagData

public TagData getTagData()

### setTagHandlerPoolName

public void setTagHandlerPoolName(String s)

### getTagHandlerPoolName

public String getTagHandlerPoolName()

### getTagInfo

public TagInfo getTagInfo()

### getTagFileInfo

public TagFileInfo getTagFileInfo()

### isTagFile

public boolean isTagFile()

### getTagHandlerClass

public Class<?> getTagHandlerClass()

### setTagHandlerClass

public void setTagHandlerClass(Class<?> hc)

### implementsIterationTag

public boolean implementsIterationTag()

### implementsBodyTag

public boolean implementsBodyTag()

### implementsTryCatchFinally

public boolean implementsTryCatchFinally()

### implementsJspIdConsumer

public boolean implementsJspIdConsumer()

### implementsSimpleTag

public boolean implementsSimpleTag()

### implementsDynamicAttributes

public boolean implementsDynamicAttributes()

### getTagVariableInfos

public TagVariableInfo[] getTagVariableInfos()

### getVariableInfos

public VariableInfo[] getVariableInfos()

### setCustomTagParent

public void setCustomTagParent(Node.CustomTag n)

### getCustomTagParent

public Node.CustomTag getCustomTagParent()

### setNumCount

public void setNumCount(Integer count)

### getNumCount

public Integer getNumCount()

### setScriptingVars

public void setScriptingVars(List<Object> vec, int scope)

### getScriptingVars

public List<Object> getScriptingVars(int scope)

### getCustomNestingLevel

public int getCustomNestingLevel()

### checkIfAttributeIsJspFragment

public boolean checkIfAttributeIsJspFragment(String name)
Checks to see if the attribute of the given name is of type JspFragment.

Parameters:
  `name` - The attribute to check
Returns:
  `true` if it is a JspFragment

### setUseTagPlugin

public void setUseTagPlugin(boolean use)

### useTagPlugin

public boolean useTagPlugin()

### setTagPluginContext

public void setTagPluginContext(TagPluginContext tagPluginContext)

### getTagPluginContext

public TagPluginContext getTagPluginContext()

### setAtSTag

public void setAtSTag(Node.Nodes sTag)

### getAtSTag

public Node.Nodes getAtSTag()

### setAtETag

public void setAtETag(Node.Nodes eTag)

### getAtETag

public Node.Nodes getAtETag()

### hasEmptyBody

public boolean hasEmptyBody()
A custom action is considered to have an empty body if any of the following hold true:

- getBody() returns null
- all immediate children are jsp:attribute actions
- the action's jsp:body is empty

Returns:
  `true` if this custom action has an empty body, and `false` otherwise.