Class WebEngineContext
- Object
-
- org.thymeleaf.context.AbstractEngineContext
-
- org.thymeleaf.context.WebEngineContext
-
- All Implemented Interfaces:
IContext,IEngineContext,IExpressionContext,ITemplateContext,IWebContext
public class WebEngineContext extends AbstractEngineContext implements IEngineContext, IWebContext
Basic web implementation of the
IEngineContextinterface, based on the Servlet API.This is the context implementation that will be used by default for web processing. Note that this is an internal implementation, and there is no reason for users' code to directly reference or use it instead of its implemented interfaces.
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
Constructors Constructor Description WebEngineContext(IEngineConfiguration configuration, TemplateData templateData, Map<String,Object> templateResolutionAttributes, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.ServletContext servletContext, Locale locale, Map<String,Object> variables)Creates a new instance of thisIEngineContextimplementation binding engine execution to the Servlet API.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancontainsVariable(String name)Checks whether a specific variable is already contained in this context or not.voiddecreaseLevel()Decrease the context level.List<IProcessableElementTag>getElementStack()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.List<IProcessableElementTag>getElementStackAbove(int contextLevel)Retrieves the element stack just likeITemplateContext.getElementStack(), but only for those elements added to the hierarchy above a specific context level.IInlinergetInliner()Returns the inliner (implementation ofIInliner) set to be used at the current point of execution.javax.servlet.http.HttpServletRequestgetRequest()Returns theHttpServletRequestobject associated with the template execution.javax.servlet.http.HttpServletResponsegetResponse()Returns theHttpServletResponseobject associated with the template execution.ObjectgetSelectionTarget()Returns the selection target set for the current point of execution (ornullif there isn't any).javax.servlet.ServletContextgetServletContext()Returns theServletContextobject associated with the template execution.javax.servlet.http.HttpSessiongetSession()Returns theHttpSessionobject associated with the template execution, or null if there is no session.StringgetStringRepresentationByLevel()TemplateDatagetTemplateData()Returns the template data object containing metadata about the template currently being processed.List<TemplateData>getTemplateStack()Returns the list of all theTemplateDataobjects corresponding to all the templates that have been nested in order to reach the current execution point.ObjectgetVariable(String key)Retrieve a specific variable, by name.Set<String>getVariableNames()Get a list with all the names of variables contained at this context.booleanhasSelectionTarget()Returns whether the current template has set a selection target for the current point of execution or not.voidincreaseLevel()Increase 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.StringtoString()-
Methods inherited from class org.thymeleaf.context.AbstractEngineContext
buildLink, getConfiguration, getExpressionObjects, getIdentifierSequences, getLocale, getMessage, getModelFactory, getTemplateMode, getTemplateResolutionAttributes
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.thymeleaf.context.IExpressionContext
getConfiguration, getExpressionObjects
-
Methods inherited from interface org.thymeleaf.context.ITemplateContext
buildLink, getIdentifierSequences, getMessage, getModelFactory, getTemplateMode, getTemplateResolutionAttributes
-
-
-
-
Constructor Detail
-
WebEngineContext
public WebEngineContext(IEngineConfiguration configuration, TemplateData templateData, Map<String,Object> templateResolutionAttributes, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.ServletContext servletContext, Locale locale, Map<String,Object> variables)
Creates a new instance of this
IEngineContextimplementation binding engine execution to the Servlet API.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.request- the servlet request object.response- the servlet response object.servletContext- the servlet context object.locale- the locale.variables- the context variables, probably coming from anotherIContextimplementation.
-
-
Method Detail
-
getRequest
public javax.servlet.http.HttpServletRequest getRequest()
Description copied from interface:IWebContextReturns the
HttpServletRequestobject associated with the template execution.- Specified by:
getRequestin interfaceIWebContext- Returns:
- the request object.
-
getResponse
public javax.servlet.http.HttpServletResponse getResponse()
Description copied from interface:IWebContextReturns the
HttpServletResponseobject associated with the template execution.- Specified by:
getResponsein interfaceIWebContext- Returns:
- the response object.
-
getSession
public javax.servlet.http.HttpSession getSession()
Description copied from interface:IWebContextReturns the
HttpSessionobject associated with the template execution, or null if there is no session.- Specified by:
getSessionin interfaceIWebContext- Returns:
- the session object. Might be null if no session has been created.
-
getServletContext
public javax.servlet.ServletContext getServletContext()
Description copied from interface:IWebContextReturns the
ServletContextobject associated with the template execution.- Specified by:
getServletContextin interfaceIWebContext- Returns:
- the servlet context object.
-
containsVariable
public boolean containsVariable(String name)
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
public Object getVariable(String key)
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
public Set<String> 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
public void setVariable(String name, Object value)
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
public void setVariables(Map<String,Object> variables)
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
public void removeVariable(String name)
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
public boolean isVariableLocal(String name)
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
public Object 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
public void setSelectionTarget(Object selectionTarget)
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
public IInliner 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
public void setInliner(IInliner inliner)
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
public TemplateData 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
public void setTemplateData(TemplateData templateData)
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
public List<TemplateData> 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
public void setElementTag(IProcessableElementTag elementTag)
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
public List<IProcessableElementTag> 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
public List<IProcessableElementTag> getElementStackAbove(int contextLevel)
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
public String getStringRepresentationByLevel()
-
-