Class EngineContext
- All Implemented Interfaces:
IContext,IEngineContext,IExpressionContext,ITemplateContext
Basic non-web implementation of the IEngineContext interface.
This is the context implementation that will be used by default for non-web processing. Note that this is an internal implementation, and that there is no reason for users' code to directly reference or use it instead of its implemented interfaces. Normally, the only reason to directly use this class would be as a part of some kind of integration/extension efforts (e.g. making Thymeleaf work in a specific type of non-Servlet-based application server).
This class is NOT thread-safe. Thread-safety is not a requirement for context implementations.
- Since:
- 3.0.0
- Author:
- Daniel Fernández
-
Constructor Summary
ConstructorsConstructorDescriptionEngineContext(IEngineConfiguration configuration, TemplateData templateData, Map<String, Object> templateResolutionAttributes, Locale locale, Map<String, Object> variables) Creates a new instance of thisIEngineContextimplementation. -
Method Summary
Modifier and TypeMethodDescriptionbooleancontainsVariable(String name) Checks whether a specific variable is already contained in this context or not.voidDecrease the context level.Returns the list of all theIProcessableElementTagobjects corresponding to the hierarchy of elements (open or standalone elements) that had to be processed in order to reach the current point in execution.getElementStackAbove(int contextLevel) Retrieves the element stack just likeITemplateContext.getElementStack(), but only for those elements added to the hierarchy above a specific context level.Returns the inliner (implementation ofIInliner) set to be used at the current point of execution.Returns the selection target set for the current point of execution (ornullif there isn't any).Returns the template data object containing metadata about the template currently being processed.Returns the list of all theTemplateDataobjects corresponding to all the templates that have been nested in order to reach the current execution point.getVariable(String key) Retrieve a specific variable, by name.Get a list with all the names of variables contained at this context.booleanReturns whether the current template has set a selection target for the current point of execution or not.voidIncrease the context level.booleanisVariableLocal(String name) Checks whether a specific variable is local or not.intlevel()Return the current context level.voidremoveVariable(String name) Removes a variable from the context.voidsetElementTag(IProcessableElementTag elementTag) Sets a new element tag (IProcessableElementTag) into the hierarchy (stack) of element tags.voidsetInliner(IInliner inliner) Set an inliner.voidsetSelectionTarget(Object selectionTarget) Set a selection target.voidsetTemplateData(TemplateData templateData) 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.voidsetVariable(String name, Object value) Sets a new variable into the context.voidsetVariables(Map<String, Object> variables) Sets several variables at a time into the context.toString()Methods inherited from class org.thymeleaf.context.AbstractEngineContext
buildLink, getConfiguration, getExpressionObjects, getIdentifierSequences, getLocale, getMessage, getModelFactory, getTemplateMode, getTemplateResolutionAttributesMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.thymeleaf.context.IExpressionContext
getConfiguration, getExpressionObjectsMethods inherited from interface org.thymeleaf.context.ITemplateContext
buildLink, getIdentifierSequences, getMessage, getModelFactory, getTemplateMode, getTemplateResolutionAttributes
-
Constructor Details
-
EngineContext
public EngineContext(IEngineConfiguration configuration, TemplateData templateData, Map<String, Object> templateResolutionAttributes, Locale locale, Map<String, Object> variables) Creates a new instance of this
IEngineContextimplementation.Note that implementations of
IEngineContextare not meant to be used in order to call the template engine (use implementations ofIContextsuch asContextorWebContextinstead). This is therefore mostly an internal implementation, and users should have no reason to ever call this constructor except in very specific integration/extension scenarios.- Parameters:
configuration- the configuration instance being used.templateData- the template data for the template to be processed.templateResolutionAttributes- the template resolution attributes.locale- the locale.variables- the context variables, probably coming from anotherIContextimplementation.
-
-
Method Details
-
containsVariable
Description copied from interface:IContextChecks whether a specific variable is already contained in this context or not.
- Specified by:
containsVariablein interfaceIContext- Parameters:
name- the name of the variable to be checked.- Returns:
trueif the variable is already contained,falseif not.
-
getVariable
Description copied from interface:IContextRetrieve a specific variable, by name.
- Specified by:
getVariablein interfaceIContext- Parameters:
key- the name of the variable to be retrieved.- Returns:
- the variable's value.
-
getVariableNames
Description copied from interface:IContextGet a list with all the names of variables contained at this context.
- Specified by:
getVariableNamesin interfaceIContext- Returns:
- the variable names.
-
setVariable
Description copied from interface:IEngineContextSets a new variable into the context.
Depending on the context level, determined by
IEngineContext.increaseLevel()andIEngineContext.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.- Specified by:
setVariablein interfaceIEngineContext- Parameters:
name- the name of the variable.value- the value of the variable.
-
setVariables
Description copied from interface:IEngineContextSets several variables at a time into the context.
Depending on the context level, determined by
IEngineContext.increaseLevel()andIEngineContext.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.- Specified by:
setVariablesin interfaceIEngineContext- Parameters:
variables- the variables to be set.
-
removeVariable
Description copied from interface:IEngineContextRemoves a variable from the context.
Depending on the context level, determined by
IEngineContext.increaseLevel()andIEngineContext.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.- Specified by:
removeVariablein interfaceIEngineContext- Parameters:
name- the name of the variable to be removed.
-
isVariableLocal
Description copied from interface:IEngineContextChecks 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.
- Specified by:
isVariableLocalin interfaceIEngineContext- Parameters:
name- the name of the variable to be checked.- Returns:
trueif the variable is local (level > 0),falseif not (level == 0).
-
hasSelectionTarget
public boolean hasSelectionTarget()Description copied from interface:ITemplateContextReturns whether the current template has set a selection target for the current point of execution or not.
Selection targets are objects on which all
*{...}expression will be executed (instead of on the root context). They are normally set by means ofth:objects.- Specified by:
hasSelectionTargetin interfaceITemplateContext- Returns:
trueif there is a selection target,falseif not.
-
getSelectionTarget
Description copied from interface:ITemplateContextReturns the selection target set for the current point of execution (or
nullif there isn't any).Selection targets are objects on which all
*{...}expression will be executed (instead of on the root context). They are normally set by means ofth:objects.- Specified by:
getSelectionTargetin interfaceITemplateContext- Returns:
- the selection target, or null if there isn't any.
-
setSelectionTarget
Description copied from interface:IEngineContextSet a selection target. Usually the consequence of executing a
th:objectprocessor.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
IEngineContext.setVariable(String, Object)).- Specified by:
setSelectionTargetin interfaceIEngineContext- Parameters:
selectionTarget- the selection target to be set.
-
getInliner
Description copied from interface:ITemplateContextReturns the inliner (implementation of
IInliner) set to be used at the current point of execution.- Specified by:
getInlinerin interfaceITemplateContext- Returns:
- the inliner to be used.
-
setInliner
Description copied from interface:IEngineContextSet an inliner. Usually the consequence of executing a
th:inlineprocessor.This inliner will have the consideration of a local variable and thus depend on the context level (see
IEngineContext.setVariable(String, Object)).- Specified by:
setInlinerin interfaceIEngineContext- Parameters:
inliner- the inliner to be set.
-
getTemplateData
Description copied from interface:ITemplateContextReturns the template data object containing metadata about the template currently being processed.
Note that the
TemplateDatareturned here corresponds with the origin of the elements or nodes being currently processed. This is, if a processor is being executed for an element inserted from an external template (via ath:insert, for example), then this method will return the template data for the template in which the inserted fragment lives, not the one it was inserted into.- Specified by:
getTemplateDatain interfaceITemplateContext- Returns:
- the template data corresponding to the elements or nodes being currently processed.
-
setTemplateData
Description copied from interface:IEngineContextSets 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:insertorth:replace.- Specified by:
setTemplateDatain interfaceIEngineContext- Parameters:
templateData- the template data.
-
getTemplateStack
Description copied from interface:ITemplateContextReturns the list of all the
TemplateDataobjects corresponding to all the templates that have been nested in order to reach the current execution point.This is a way in which processors can know the complete execution route that lead to the execution of a specific event (e.g. Template A inserted fragment B, which inserted fragment C).
The first element in this list will always be the top-level template (the one called at the
ITemplateEngineprocess(...)methods).- Specified by:
getTemplateStackin interfaceITemplateContext- Returns:
- the stack of templates (list of
TemplateData).
-
setElementTag
Description copied from interface:IEngineContextSets 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().- Specified by:
setElementTagin interfaceIEngineContext- Parameters:
elementTag- the element tag.
-
getElementStack
Description copied from interface:ITemplateContextReturns the list of all the
IProcessableElementTagobjects corresponding to the hierarchy of elements (open or standalone elements) that had to be processed in order to reach the current point in execution.If the element being processed is a tag (open/standalone), it will appear at the end of the list.
Note this hierarchy does not correspond with the tag hierarchy at the original template, but with the hierarchy of processing (many tags could appear during processing itself and not be present at the original template).
Also note that, because of this being the processing-time hierarchy, this information is set at the processor level, so it should not be considered to be available and/or valid at the pre-processor layer.
- Specified by:
getElementStackin interfaceITemplateContext- Returns:
- the stack of elements (list of
IProcessableElementTag).
-
getElementStackAbove
Description copied from interface:IEngineContextRetrieves the element stack just like
ITemplateContext.getElementStack(), but only for those elements added to the hierarchy above a specific context level.- Specified by:
getElementStackAbovein interfaceIEngineContext- Parameters:
contextLevel- the level above which we want to obtain the element stack.- Returns:
- the element stack above a specified level.
-
level
public int level()Description copied from interface:IEngineContextReturn the current context level.
This method should only be called internally.
- Specified by:
levelin interfaceIEngineContext- Returns:
- the current level
-
increaseLevel
public void increaseLevel()Description copied from interface:IEngineContextIncrease the context level. This is usually a consequence of the
ProcessorTemplateHandlerdetecting the start of a new element (i.e. handling anIOpenElementTagevent).This method should only be called internally.
- Specified by:
increaseLevelin interfaceIEngineContext
-
decreaseLevel
public void decreaseLevel()Description copied from interface:IEngineContextDecrease the context level. This is usually a consequence of the
ProcessorTemplateHandlerdetecting the closing of an element (i.e. handling anICloseElementTagevent).This method should only be called internally.
- Specified by:
decreaseLevelin interfaceIEngineContext
-
getStringRepresentationByLevel
-
toString
-