Class MemoryLoader

  • All Implemented Interfaces:
    Loader<java.lang.String>

    public class MemoryLoader
    extends java.lang.Object
    implements Loader<java.lang.String>
    • Constructor Summary

      Constructors 
      Constructor Description
      MemoryLoader()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addTemplate​(java.lang.String templateName, java.lang.String content)  
      java.lang.String createCacheKey​(java.lang.String templateName)
      This method resolves the given template name to a unique object which can be used as the key within the PebbleEngine.getTemplateCache().
      java.io.Reader getReader​(java.lang.String templateName)
      The reader which will be used by Pebble to read the contents of the template.
      java.lang.String resolveRelativePath​(java.lang.String relativePath, java.lang.String anchorPath)
      Resolves the given relativePath based on the given anchorPath.
      boolean resourceExists​(java.lang.String templateName)  
      void setCharset​(java.lang.String charset)
      A method for end users to change the charset used by the loader.
      void setPrefix​(java.lang.String prefix)
      Optional prefix to help find templates, ex "/WEB-INF/templates/" or "database_schema."
      void setSuffix​(java.lang.String suffix)
      Optional suffix to help find templates, ex ".html", ".peb"
      • Methods inherited from class java.lang.Object

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

      • MemoryLoader

        public MemoryLoader()
    • Method Detail

      • getReader

        public java.io.Reader getReader​(java.lang.String templateName)
        Description copied from interface: Loader
        The reader which will be used by Pebble to read the contents of the template.
        Specified by:
        getReader in interface Loader<java.lang.String>
        Parameters:
        templateName - the cache key to use to load create the reader.
        Returns:
        A reader object
      • addTemplate

        public void addTemplate​(java.lang.String templateName,
                                java.lang.String content)
      • setSuffix

        public void setSuffix​(java.lang.String suffix)
        Description copied from interface: Loader
        Optional suffix to help find templates, ex ".html", ".peb"
        Specified by:
        setSuffix in interface Loader<java.lang.String>
        Parameters:
        suffix - Suffix to attach to template names
      • setPrefix

        public void setPrefix​(java.lang.String prefix)
        Description copied from interface: Loader
        Optional prefix to help find templates, ex "/WEB-INF/templates/" or "database_schema."
        Specified by:
        setPrefix in interface Loader<java.lang.String>
        Parameters:
        prefix - Prefix to help find templates
      • setCharset

        public void setCharset​(java.lang.String charset)
        Description copied from interface: Loader
        A method for end users to change the charset used by the loader.
        Specified by:
        setCharset in interface Loader<java.lang.String>
        Parameters:
        charset - Character set used by the loader when building a reader object
      • resolveRelativePath

        public java.lang.String resolveRelativePath​(java.lang.String relativePath,
                                                    java.lang.String anchorPath)
        Description copied from interface: Loader
        Resolves the given relativePath based on the given anchorPath.

        A path is considered as relative when it starts either with '..' or '.' and followed either by a '/' or '\\' otherwise the assumption is that the provided path is an absolute path.

        Specified by:
        resolveRelativePath in interface Loader<java.lang.String>
        Parameters:
        relativePath - the relative path which should be resolved.
        anchorPath - the anchor path based on which the relative path should be resolved on.
        Returns:
        the resolved path or null when the path could not be resolved.
      • createCacheKey

        public java.lang.String createCacheKey​(java.lang.String templateName)
        Description copied from interface: Loader
        This method resolves the given template name to a unique object which can be used as the key within the PebbleEngine.getTemplateCache(). The returned object will be passed with Loader.getReader(Object).

        The resolve method can eventually add information to the cache key from the context (e.g. user session information, servlet request etc.).

        As a concrete example if the loader loads a template created by a user form the database the template name itself is not uniquely identify the template. The identification of the template requires also the user which created the template. Hence for the key the user id and the template name should be used. So the cache key is enhanced by some contextual information.

        The implementor of the method can add as many additional contextual information to the returned object. However the following things needs to be considered:

        • This method will be called on each PebbleEngine.getTemplate(String). Hence the implementation needs to be fast and eventually use some caching for the lookup process.
        • The returned object is used within a cache and hence needs to implement Object.equals(Object) and Object.hashCode().
        • The object is kept in memory and hence it should not be to memory heavy.

        Depending on this implementation the PebbleEngine.getTemplateCache() should be tuned in a way it can operate optimal. E.g. when the number of potential templates is infinite the cache should evict some templates at some point in time otherwise the stability of the memory is not given anymore.

        Specified by:
        createCacheKey in interface Loader<java.lang.String>
        Parameters:
        templateName - The name of the template
        Returns:
        Returns the cache key
      • resourceExists

        public boolean resourceExists​(java.lang.String templateName)
        Specified by:
        resourceExists in interface Loader<java.lang.String>