Class Template


  • public class Template
    extends java.lang.Object
    Represents a compiled template. Templates are executed with a context to generate output. The context can be any tree of objects. Variables are resolved against the context. Given a name foo, the following mechanisms are supported for resolving its value (and are sought in this order):
    • If the variable has the special name this the context object itself will be returned. This is useful when iterating over lists.
    • If the object is a Map, Map.get(java.lang.Object) will be called with the string foo as the key.
    • A method named foo in the supplied object (with non-void return value).
    • A method named getFoo in the supplied object (with non-void return value).
    • A field named foo in the supplied object.

    The field type, method return type, or map value type should correspond to the desired behavior if the resolved name corresponds to a section. Boolean is used for showing or hiding sections without binding a sub-context. Arrays, Iterator and Iterable implementations are used for sections that repeat, with the context bound to the elements of the array, iterator or iterable. Lambdas are current unsupported, though they would be easy enough to add if desire exists. See the Mustache documentation for more details on section behavior.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected static class  Template.Context  
      class  Template.Fragment
      Encapsulates a fragment of a template that is passed to a lambda.
      protected static class  Template.Key
      Used to cache variable fetchers for a given context class, name combination.
      protected static class  Template.Segment
      A template is broken into segments.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Object checkForMissing​(java.lang.String name, int line, boolean missingIsNull, java.lang.Object value)  
      protected Template.Fragment createFragment​(Template.Segment[] segs, Template.Context currentCtx)  
      java.lang.String execute​(java.lang.Object context)
      Executes this template with the given context, returning the results as a string.
      void execute​(java.lang.Object context, java.io.Writer out)
      Executes this template with the given context, writing the results to the supplied writer.
      void execute​(java.lang.Object context, java.lang.Object parentContext, java.io.Writer out)
      Executes this template with the supplied context and parent context, writing the results to the supplied writer.
      protected void executeSegs​(Template.Context ctx, java.io.Writer out)  
      protected java.lang.Object getCompoundValue​(Template.Context ctx, java.lang.String name, int line, boolean missingIsNull)
      Decomposes the compound key name into components and resolves the value they reference.
      protected java.lang.Object getSectionValue​(Template.Context ctx, java.lang.String name, int line)
      Returns the value of the specified variable, noting that it is intended to be used as the contents for a section.
      protected java.lang.Object getValue​(Template.Context ctx, java.lang.String name, int line, boolean missingIsNull)
      Called by executing segments to obtain the value of the specified variable in the supplied context.
      protected java.lang.Object getValueIn​(java.lang.Object data, java.lang.String name, int line)  
      protected java.lang.Object getValueOrDefault​(Template.Context ctx, java.lang.String name, int line)
      Returns the value for the specified variable, or the configured default value if the variable resolves to null.
      protected Template indent​(java.lang.String indent)  
      protected static boolean isThisName​(java.lang.String name)  
      protected Template replaceBlocks​(java.util.Map<java.lang.String,​Mustache.BlockSegment> blocks)  
      void visit​(Mustache.Visitor visitor)
      Visits the tags in this template (via visitor) without executing it.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • execute

        public java.lang.String execute​(java.lang.Object context)
                                 throws MustacheException
        Executes this template with the given context, returning the results as a string.
        Throws:
        MustacheException - if an error occurs while executing or writing the template.
      • execute

        public void execute​(java.lang.Object context,
                            java.io.Writer out)
                     throws MustacheException
        Executes this template with the given context, writing the results to the supplied writer.
        Throws:
        MustacheException - if an error occurs while executing or writing the template.
      • execute

        public void execute​(java.lang.Object context,
                            java.lang.Object parentContext,
                            java.io.Writer out)
                     throws MustacheException
        Executes this template with the supplied context and parent context, writing the results to the supplied writer. The parent context will be searched for variables that cannot be found in the main context, in the same way the main context becomes a parent context when entering a block.
        Throws:
        MustacheException - if an error occurs while executing or writing the template.
      • visit

        public void visit​(Mustache.Visitor visitor)
        Visits the tags in this template (via visitor) without executing it.
        Parameters:
        visitor - the visitor to be called back on each tag in the template.
      • indent

        protected Template indent​(java.lang.String indent)
      • getValue

        protected java.lang.Object getValue​(Template.Context ctx,
                                            java.lang.String name,
                                            int line,
                                            boolean missingIsNull)
        Called by executing segments to obtain the value of the specified variable in the supplied context.
        Parameters:
        ctx - the context in which to look up the variable.
        name - the name of the variable to be resolved.
        missingIsNull - whether to fail if a variable cannot be resolved, or to return null in that case.
        Returns:
        the value associated with the supplied name or null if no value could be resolved.
      • getCompoundValue

        protected java.lang.Object getCompoundValue​(Template.Context ctx,
                                                    java.lang.String name,
                                                    int line,
                                                    boolean missingIsNull)
        Decomposes the compound key name into components and resolves the value they reference.
      • getSectionValue

        protected java.lang.Object getSectionValue​(Template.Context ctx,
                                                   java.lang.String name,
                                                   int line)
        Returns the value of the specified variable, noting that it is intended to be used as the contents for a section.
      • getValueIn

        protected java.lang.Object getValueIn​(java.lang.Object data,
                                              java.lang.String name,
                                              int line)
      • checkForMissing

        protected java.lang.Object checkForMissing​(java.lang.String name,
                                                   int line,
                                                   boolean missingIsNull,
                                                   java.lang.Object value)
      • isThisName

        protected static boolean isThisName​(java.lang.String name)