Class TagScript

  • All Implemented Interfaces:
    Script
    Direct Known Subclasses:
    StaticTagScript

    public class TagScript
    extends Object
    implements Script

    TagScript is a Script that evaluates a custom tag.

    Note that this class should be re-entrant and used concurrently by multiple threads.
    Version:
    $Revision: 227285 $
    Author:
    James Strachan
    • Constructor Detail

      • TagScript

        public TagScript()
      • TagScript

        public TagScript​(TagFactory tagFactory)
    • Method Detail

      • newInstance

        public static TagScript newInstance​(Class tagClass)
        Returns:
        a new TagScript based on whether the given Tag class is a bean tag or DynaTag
      • setTagNamespacesMap

        public void setTagNamespacesMap​(Map tagNamespacesMap)
        Sets the optional namespaces prefix -> URI map of the namespaces attached to this Tag
      • setLocator

        public void setLocator​(Locator locator)
        Configures this TagScript from the SAX Locator, setting the column and line numbers
      • addAttribute

        public void addAttribute​(String name,
                                 Expression expression)
        Add an initialization attribute for the tag. This method must be called after the setTag() method
      • addAttribute

        public void addAttribute​(String name,
                                 String prefix,
                                 String nsURI,
                                 Expression expression)
        Add an initialization attribute for the tag. This method must be called after the setTag() method
      • getTagFactory

        public TagFactory getTagFactory()
        Returns the Factory of Tag instances.
        Returns:
        the factory
      • setTagFactory

        public void setTagFactory​(TagFactory tagFactory)
        Sets the Factory of Tag instances.
        Parameters:
        tagFactory - The factory to set
      • getParent

        public TagScript getParent()
        Returns the parent.
        Returns:
        TagScript
      • getTagBody

        public Script getTagBody()
        Returns the tagBody.
        Returns:
        Script
      • setParent

        public void setParent​(TagScript parent)
        Sets the parent.
        Parameters:
        parent - The parent to set
      • setTagBody

        public void setTagBody​(Script tagBody)
        Sets the tagBody.
        Parameters:
        tagBody - The tagBody to set
      • getFileName

        public String getFileName()
        Returns:
        the Jelly file which caused the problem
      • setFileName

        public void setFileName​(String fileName)
        Sets the Jelly file which caused the problem
      • getScriptURL

        public URL getScriptURL()
        Base URL from which the script (that uses this tag) is loaded. Useful fo resolving other resources/scripts that are placed side-by-side.
      • getElementName

        public String getElementName()
        Returns:
        the element name which caused the problem
      • setElementName

        public void setElementName​(String elementName)
        Sets the element name which caused the problem
      • getLineNumber

        public int getLineNumber()
        Returns:
        the line number of the tag
      • setLineNumber

        public void setLineNumber​(int lineNumber)
        Sets the line number of the tag
      • getColumnNumber

        public int getColumnNumber()
        Returns:
        the column number of the tag
      • setColumnNumber

        public void setColumnNumber​(int columnNumber)
        Sets the column number of the tag
      • getSaxAttributes

        public Attributes getSaxAttributes()
        Returns the SAX attributes of this tag
        Returns:
        Attributes
      • setSaxAttributes

        public void setSaxAttributes​(Attributes saxAttributes)
        Sets the SAX attributes of this tag
        Parameters:
        saxAttributes - The saxAttributes to set
      • getLocalName

        public String getLocalName()
        Returns the local, non namespaced XML name of this tag
        Returns:
        String
      • setLocalName

        public void setLocalName​(String localName)
        Sets the local, non namespaced name of this tag.
        Parameters:
        localName - The localName to set
      • getNsUri

        public String getNsUri()
      • setNsUri

        public void setNsUri​(String nsUri)
      • getNamespaceContext

        public Map getNamespaceContext()
        Returns the namespace context of this tag. This is all the prefixes in scope in the document where this tag is used which are mapped to their namespace URIs.
        Returns:
        a Map with the keys are namespace prefixes and the values are namespace URIs.
      • createTag

        protected Tag createTag()
                         throws JellyException
        Factory method to create a new Tag instance. The default implementation is to delegate to the TagFactory
        Throws:
        JellyException
      • clearTag

        protected void clearTag()
        Flushes the current cached tag so that it will be created, lazily, next invocation
      • setTag

        protected void setTag​(Tag tag,
                              JellyContext context)
        Allows the script to set the tag instance to be used, such as in a StaticTagScript when a StaticTag is switched with a DynamicTag
      • startNamespacePrefixes

        protected void startNamespacePrefixes​(XMLOutput output)
                                       throws SAXException
        Output the new namespace prefixes used for this element
        Throws:
        SAXException
      • endNamespacePrefixes

        protected void endNamespacePrefixes​(XMLOutput output)
                                     throws SAXException
        End the new namespace prefixes mapped for the current element
        Throws:
        SAXException
      • convertType

        protected Object convertType​(Object value,
                                     Class requiredType)
                              throws JellyException
        Converts the given value to the required type.
        Parameters:
        value - is the value to be converted. This will not be null
        requiredType - the type that the value should be converted to
        Throws:
        JellyException
      • createJellyException

        protected JellyException createJellyException​(String reason)
        Creates a new Jelly exception, adorning it with location information
      • createJellyException

        protected JellyException createJellyException​(String reason,
                                                      Exception cause)
        Creates a new Jelly exception, adorning it with location information
      • handleException

        protected void handleException​(JellyTagException e)
                                throws JellyTagException
        A helper method to handle this Jelly exception. This method adorns the JellyException with location information such as adding line number information etc.
        Throws:
        JellyTagException
      • handleException

        protected void handleException​(JellyException e)
                                throws JellyTagException
        A helper method to handle this Jelly exception. This method adorns the JellyException with location information such as adding line number information etc.
        Throws:
        JellyTagException
      • applyLocation

        protected void applyLocation​(LocationAware locationAware)
      • handleException

        protected void handleException​(Exception e)
                                throws JellyTagException
        A helper method to handle this non-Jelly exception. This method will rethrow the exception, wrapped in a JellyException while adding line number information etc.
        Throws:
        JellyTagException
      • handleException

        protected void handleException​(Error e)
                                throws Error,
                                       JellyTagException
        A helper method to handle this non-Jelly exception. This method will rethrow the exception, wrapped in a JellyException while adding line number information etc. Is this method wise?
        Throws:
        Error
        JellyTagException
      • getAttribute

        protected Expression getAttribute​(String name)
        Retrieves the expression of the given attribute name. If no such attribute exists, this method returns Expression.NULL so that the caller doesn't have to do the null check.
      • getBodyText

        protected String getBodyText​(JellyContext context,
                                     boolean shouldEscape)
                              throws JellyTagException
        Evaluates the body and obtains it as a string. Uses standard XMLOutput.createXMLOutput() to generate output unless the JellyContext contains a variable named org.apache.commons.jelly.XMLOutputFactory which is an object of that type.
        Throws:
        JellyTagException