Class RuntimeMacro

  • All Implemented Interfaces:
    java.lang.Cloneable, DirectiveConstants

    public class RuntimeMacro
    extends Directive
    This class acts as a proxy for potential macros. When the AST is built this class is inserted as a placeholder for the macro (whether or not the macro is actually defined). At render time we check whether there is a implementation for the macro call. If an implementation cannot be found the literal text is rendered.
    Since:
    1.6
    • Field Detail

      • strictRef

        protected boolean strictRef
        Indicates if we are running in strict reference mode.
    • Constructor Detail

      • RuntimeMacro

        public RuntimeMacro()
    • Method Detail

      • getName

        public java.lang.String getName()
        Return name of this Velocimacro.
        Specified by:
        getName in class Directive
        Returns:
        The name of this Velocimacro.
      • getScopeName

        public java.lang.String getScopeName()
        Override to always return "macro". We don't want to use the macro name here, since when writing VTL that uses the scope, we are within a #macro call. The macro name will instead be used as the scope name when defining the body of a BlockMacro.
        Overrides:
        getScopeName in class Directive
        Returns:
        the name to be used when a scope control is provided for this directive.
      • getType

        public int getType()
        Velocimacros are always LINE type directives.
        Specified by:
        getType in class Directive
        Returns:
        The type of this directive.
      • init

        public void init​(RuntimeServices rs,
                         java.lang.String name,
                         InternalContextAdapter context,
                         Node node)
        Initialize the Runtime macro. At the init time no implementation so we just save the values to use at the render time.
        Parameters:
        rs - runtime services
        name - macro name
        context - InternalContextAdapter
        node - node containing the macro call