Interface IEngineContext

All Superinterfaces:
IContext, IExpressionContext, ITemplateContext
All Known Implementing Classes:
AbstractEngineContext, EngineContext, WebEngineContext

public interface IEngineContext extends ITemplateContext

Mostly-internal interface implemented by all classes containing the context required for template processing inside the engine itself.

This interface extends ITemplateContext by adding a series of methods required internally by the template engine for processing, which should not be used from users' code. Calling these methods directly from custom processors or other extensions could have undesirable effects on template processing.

Contexts used during template processing by the engine are always implementations of this interface. If the Template Engine is called with an implementation of this IEngineContext as context, the same object will be used (so that users can actually provide their own implementations). On the other side, if the context specified to the Template Engine is not an implementation of this interface, an implementation of IEngineContext will be internally created by the engine, the original context's variables and other info will be cloned, and used instead.

Again note that, besides providing custom-made implementations of this interface (which is a very complex operation, not recommended in most scenarios) there should be no reason why this interface should ever be used in users' code.

Since:
3.0.0
Author:
Daniel Fernández
  • Method Details

    • setVariable

      void setVariable(String name, Object value)

      Sets a new variable into the context.

      Depending on the context level, determined by increaseLevel() and decreaseLevel(), the variable being set might be considered a local variable and thus disappear from context once the context level is decreased below the level the variable was created at.

      Parameters:
      name - the name of the variable.
      value - the value of the variable.
    • setVariables

      void setVariables(Map<String,Object> variables)

      Sets several variables at a time into the context.

      Depending on the context level, determined by increaseLevel() and decreaseLevel(), the variables being set might be considered a local variables and thus disappear from context once the context level is decreased below the level the variable was created at.

      Parameters:
      variables - the variables to be set.
    • removeVariable

      void removeVariable(String name)

      Removes a variable from the context.

      Depending on the context level, determined by increaseLevel() and decreaseLevel(), this removal might be considered local variable-related and thus cease to happen (i.e. the variable would be recovered) once the context level is decreased below the level the variable was created at.

      Parameters:
      name - the name of the variable to be removed.
    • setSelectionTarget

      void setSelectionTarget(Object selectionTarget)

      Set a selection target. Usually the consequence of executing a th:object processor.

      Once set, all selection expressions (*{...}) will be executed on this target.

      This selection target will have the consideration of a local variable and thus depend on the context level (see setVariable(String, Object)).

      Parameters:
      selectionTarget - the selection target to be set.
    • setInliner

      void setInliner(IInliner inliner)

      Set an inliner. Usually the consequence of executing a th:inline processor.

      This inliner will have the consideration of a local variable and thus depend on the context level (see setVariable(String, Object)).

      Parameters:
      inliner - the inliner to be set.
    • setTemplateData

      void setTemplateData(TemplateData template)

      Sets a new template metadata object (TemplateData) for the current execution point, specifying that the elements and nodes that are to be processed from now on (until the context level is decreased below the current level) originally belonged to a different template.

      A call on this method is usually the consequence of th:insert or th:replace.

      Parameters:
      template - the template data.
    • setElementTag

      void setElementTag(IProcessableElementTag elementTag)

      Sets a new element tag (IProcessableElementTag) into the hierarchy (stack) of element tags.

      This hierarchy of element tags (added this way) can be obtained with ITemplateContext.getElementStack().

      Parameters:
      elementTag - the element tag.
    • getElementStackAbove

      List<IProcessableElementTag> getElementStackAbove(int contextLevel)

      Retrieves the element stack just like ITemplateContext.getElementStack(), but only for those elements added to the hierarchy above a specific context level.

      Parameters:
      contextLevel - the level above which we want to obtain the element stack.
      Returns:
      the element stack above a specified level.
    • isVariableLocal

      boolean isVariableLocal(String name)

      Checks whether a specific variable is local or not.

      This means checking if the context level at which the variable was defined was 0 or not.

      Parameters:
      name - the name of the variable to be checked.
      Returns:
      true if the variable is local (level > 0), false if not (level == 0).
    • increaseLevel

      void increaseLevel()

      Increase the context level. This is usually a consequence of the ProcessorTemplateHandler detecting the start of a new element (i.e. handling an IOpenElementTag event).

      This method should only be called internally.

    • decreaseLevel

      void decreaseLevel()

      Decrease the context level. This is usually a consequence of the ProcessorTemplateHandler detecting the closing of an element (i.e. handling an ICloseElementTag event).

      This method should only be called internally.

    • level

      int level()

      Return the current context level.

      This method should only be called internally.

      Returns:
      the current level