Class AbstractWebContext
- java.lang.Object
-
- org.nuxeo.ecm.webengine.model.impl.AbstractWebContext
-
- All Implemented Interfaces:
WebContext
,Adaptable
- Direct Known Subclasses:
DefaultContext
public abstract class AbstractWebContext extends Object implements WebContext
- Author:
- Bogdan Stefanescu
-
-
Field Summary
Fields Modifier and Type Field Description protected String
basePath
protected static Locale
DEFAULT_LOCALE
protected WebEngine
engine
protected FormData
form
protected Resource
head
static String
LOCALE_SESSION_KEY
protected Module
module
protected javax.servlet.http.HttpServletRequest
request
protected javax.servlet.http.HttpServletResponse
response
protected Resource
root
protected LinkedList<File>
scriptExecutionStack
protected Resource
tail
protected Map<String,Object>
vars
-
Fields inherited from interface org.nuxeo.ecm.webengine.model.WebContext
NUXEO_WEBENGINE_BASE_PATH
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractWebContext(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
checkGuard(String guard)
Check the given expression in this context and return true if the expression is verified or false otherwise.Map<String,Object>
createBindings(Map<String,Object> vars)
<T> T
getAdapter(Class<T> adapter)
Returns an object which is an instance of the given class associated with this object.String
getBasePath()
Gets the path of the servlet.String
getBaseURL()
Gets the URL of the base path.String
getCookie(String name)
Convenience method to get a cookie value.String
getCookie(String name, String defaultValue)
Convenience method to get a cookie value using a default value.CoreSession
getCoreSession()
Gets the Core Session (or Repository Session) corresponding to that request.File
getCurrentScriptDirectory()
File
getCurrentScriptFile()
WebEngine
getEngine()
Gets the web engine instance.ScriptFile
getFile(String path)
template and script resolverFormData
getForm()
Gets the representation of the data form submitted by the user.Locale
getLocale()
Gets the context locale.Log
getLog()
Gets a logger to be used by scripts for logging.String
getLoginPath()
Gets the login path for the current context.String
getMessage(String key)
Gets the i18n message for the given key.String
getMessage(String key, Object... args)
The same asWebContext.getMessage(String)
but with parameter supportString
getMessage(String key, List<Object> args)
The same asWebContext.getMessage(String)
but with parameter supportString
getMessageL(String key, String language)
Same asWebContext.getMessage(String)
but uses the given locale.String
getMessageL(String key, String locale, Object... args)
The same asWebContext.getMessage(String)
but uses the given locale, with parameter supportString
getMessageL(String key, String locale, List<Object> args)
The same asWebContext.getMessage(String)
but uses the given locale, with parameter support.String
getMethod()
Get HTTP Method.Module
getModule()
Gets the current web application.String
getModulePath()
Get the path prefix that identify the current web application.NuxeoPrincipal
getPrincipal()
Gets the principal identifying the user that originated the request.Object
getProperty(String key)
Gets a context variable.Object
getProperty(String key, Object defaultValue)
Gets a context variable.javax.servlet.http.HttpServletRequest
getRequest()
Gets the underlying HTTP servlet request object.javax.servlet.http.HttpServletResponse
getResponse()
Resource
getRoot()
Gets the root resource if any resource was defined as being the rootStringBuilder
getServerURL()
Gets the server URL without any path or trailing /.AdapterResource
getTargetAdapter()
Resource
getTargetObject()
String
getURI()
Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request.String
getURL()
Gets the URL requested by the client.String
getUrlPath()
Gets the path portion of the request URL.String
getUrlPath(DocumentModel document)
This method is working only for root objects that implementModuleResource
StringBuilder
getUrlPathBuffer()
UserSession
getUserSession()
Gets the current user session.Resource
head()
protected void
initializeBindings(Map<String,Object> bindings)
static boolean
isRepositorySupportDisabled()
AdapterResource
newAdapter(Resource ctx, String serviceName, Object... args)
Resource
newObject(String typeName, Object... args)
Resource
newObject(ResourceType type, Object... args)
Resource
pop()
File
popScriptFile()
Resource
push(Resource rs)
void
pushScriptFile(File file)
void
render(String template, Writer writer)
Renders the given template using the rendering engine registered in that web engine.void
render(String template, Object ctx, Writer writer)
Renders the given template using the rendering engine registered in that web engine.void
render(ScriptFile script, Object ctx, Writer writer)
Renders the given template using the rendering engine registered in that web engine.Object
runScript(String script)
Runs the given script.Object
runScript(String script, Map<String,Object> args)
Runs the given script.Object
runScript(ScriptFile script, Map<String,Object> args)
Runs the script using given argumentsstatic void
setIsRepositorySupportDisabled(boolean isRepositoryDisabled)
Can be used by the application to disable injecting repository sessions in scripting context.void
setLocale(Locale locale)
Sets the current locale, that will be kept in context.void
setModule(Module module)
void
setProperty(String key, Object value)
Sets a context variable.void
setRepositoryName(String repoName)
Sets the repository name that will be used byWebContext.getCoreSession()
.void
setRoot(Resource root)
Set the root resource of this contextResource
tail()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.nuxeo.ecm.webengine.model.WebContext
getHttpHeaders, getServerHttpContext, getServerInjectableProviderContext, getUriInfo
-
-
-
-
Field Detail
-
DEFAULT_LOCALE
protected static final Locale DEFAULT_LOCALE
-
LOCALE_SESSION_KEY
public static final String LOCALE_SESSION_KEY
- See Also:
- Constant Field Values
-
engine
protected final WebEngine engine
-
scriptExecutionStack
protected final LinkedList<File> scriptExecutionStack
-
request
protected final javax.servlet.http.HttpServletRequest request
-
response
protected final javax.servlet.http.HttpServletResponse response
-
head
protected Resource head
-
tail
protected Resource tail
-
root
protected Resource root
-
module
protected Module module
-
form
protected FormData form
-
basePath
protected String basePath
-
-
Method Detail
-
setModule
public void setModule(Module module)
-
getRoot
public Resource getRoot()
Description copied from interface:WebContext
Gets the root resource if any resource was defined as being the rootA root resource can be any resource from the resource chain.
- Specified by:
getRoot
in interfaceWebContext
- Returns:
- the root resource or null if no root was defined
-
setRoot
public void setRoot(Resource root)
Description copied from interface:WebContext
Set the root resource of this context- Specified by:
setRoot
in interfaceWebContext
-
getAdapter
public <T> T getAdapter(Class<T> adapter)
Description copied from interface:Adaptable
Returns an object which is an instance of the given class associated with this object. Returnsnull
if no such object can be found.- Specified by:
getAdapter
in interfaceAdaptable
- Parameters:
adapter
- the adapter class to look up- Returns:
- a object castable to the given class, or
null
if this object does not have an adapter for the given class
-
getModule
public Module getModule()
Description copied from interface:WebContext
Gets the current web application.- Specified by:
getModule
in interfaceWebContext
- Returns:
- the web root. Cannot return null.
-
getEngine
public WebEngine getEngine()
Description copied from interface:WebContext
Gets the web engine instance.- Specified by:
getEngine
in interfaceWebContext
- Returns:
- the web engine instance. Cannot return null
-
getUserSession
public UserSession getUserSession()
Description copied from interface:WebContext
Gets the current user session.The user session is a WebEngine abstraction for the current user session and can be used to retrieve current login, core session, and to set or get user session variables.
- Specified by:
getUserSession
in interfaceWebContext
- Returns:
- the user session. Never returns null.
-
getCoreSession
public CoreSession getCoreSession()
Description copied from interface:WebContext
Gets the Core Session (or Repository Session) corresponding to that request.- Specified by:
getCoreSession
in interfaceWebContext
- Returns:
- the core session. Cannot return null
-
getPrincipal
public NuxeoPrincipal getPrincipal()
Description copied from interface:WebContext
Gets the principal identifying the user that originated the request.- Specified by:
getPrincipal
in interfaceWebContext
- Returns:
- the current principal. Can return null if the user has not been authenticated.
-
getRequest
public javax.servlet.http.HttpServletRequest getRequest()
Description copied from interface:WebContext
Gets the underlying HTTP servlet request object.- Specified by:
getRequest
in interfaceWebContext
- Returns:
- the HTTP Request object. Cannot return null
-
getResponse
public javax.servlet.http.HttpServletResponse getResponse()
-
getMethod
public String getMethod()
Description copied from interface:WebContext
Get HTTP Method.- Specified by:
getMethod
in interfaceWebContext
- Returns:
- the method
-
getModulePath
public String getModulePath()
Description copied from interface:WebContext
Get the path prefix that identify the current web application.The application path will include the base path (context + servlet path).
- Specified by:
getModulePath
in interfaceWebContext
- Returns:
- the application path. Cannot be null
-
getMessage
public String getMessage(String key)
Description copied from interface:WebContext
Gets the i18n message for the given key.The current module i18n messages are queried first then if no message is found the global message pool is queried (the one living in WEB-INF/i18n). If no message is found the key surrounded by exclamation marks is returned.
- Specified by:
getMessage
in interfaceWebContext
- Parameters:
key
- the message key- Returns:
- the message
-
getMessage
public String getMessage(String key, Object... args)
Description copied from interface:WebContext
The same asWebContext.getMessage(String)
but with parameter support- Specified by:
getMessage
in interfaceWebContext
-
getMessage
public String getMessage(String key, List<Object> args)
Description copied from interface:WebContext
The same asWebContext.getMessage(String)
but with parameter support- Specified by:
getMessage
in interfaceWebContext
-
getMessageL
public String getMessageL(String key, String language)
Description copied from interface:WebContext
Same asWebContext.getMessage(String)
but uses the given locale.- Specified by:
getMessageL
in interfaceWebContext
- Parameters:
key
- the message keylanguage
- the locale to use- Returns:
- the message
-
getMessageL
public String getMessageL(String key, String locale, Object... args)
Description copied from interface:WebContext
The same asWebContext.getMessage(String)
but uses the given locale, with parameter support- Specified by:
getMessageL
in interfaceWebContext
-
getMessageL
public String getMessageL(String key, String locale, List<Object> args)
Description copied from interface:WebContext
The same asWebContext.getMessage(String)
but uses the given locale, with parameter support.- Specified by:
getMessageL
in interfaceWebContext
-
getLocale
public Locale getLocale()
Description copied from interface:WebContext
Gets the context locale.If the locale has been set using
WebContext.setLocale(Locale)
, returns the last locale set. Otherwise, compute it from the Accept-Language language sent by the client, usingServletRequest.getLocale()
.- Specified by:
getLocale
in interfaceWebContext
- Returns:
- the context locale
-
setLocale
public void setLocale(Locale locale)
Description copied from interface:WebContext
Sets the current locale, that will be kept in context.- Specified by:
setLocale
in interfaceWebContext
-
newObject
public Resource newObject(String typeName, Object... args)
- Specified by:
newObject
in interfaceWebContext
-
newObject
public Resource newObject(ResourceType type, Object... args)
- Specified by:
newObject
in interfaceWebContext
-
newAdapter
public AdapterResource newAdapter(Resource ctx, String serviceName, Object... args)
- Specified by:
newAdapter
in interfaceWebContext
-
setProperty
public void setProperty(String key, Object value)
Description copied from interface:WebContext
Sets a context variable.- Specified by:
setProperty
in interfaceWebContext
- Parameters:
key
- the variable keyvalue
- the variable value- See Also:
WebContext.getProperty(String)
-
getProperty
public Object getProperty(String key)
Description copied from interface:WebContext
Gets a context variable.Context variables can be used to share data between the scripts that are called in that request (and between Java code too of course).
- Specified by:
getProperty
in interfaceWebContext
- Parameters:
key
- the variable key- Returns:
- the variable value or null if none
-
getProperty
public Object getProperty(String key, Object defaultValue)
Description copied from interface:WebContext
Gets a context variable.Context variables can be used to share data between the scripts that are called in that request (and between java code too of course).
- Specified by:
getProperty
in interfaceWebContext
- Parameters:
key
- the variable keydefaultValue
- the default value to use if the property doesn't exists- Returns:
- the variable value or the given default value if none
-
getCookie
public String getCookie(String name)
Description copied from interface:WebContext
Convenience method to get a cookie value.- Specified by:
getCookie
in interfaceWebContext
- Parameters:
name
- the cookie name- Returns:
- the cookie value if any null otherwise
-
getCookie
public String getCookie(String name, String defaultValue)
Description copied from interface:WebContext
Convenience method to get a cookie value using a default value.- Specified by:
getCookie
in interfaceWebContext
- Parameters:
name
- the cookie namedefaultValue
- the value to return when cookie is not set- Returns:
- the cookie value if any or the default if none
-
getForm
public FormData getForm()
Description copied from interface:WebContext
Gets the representation of the data form submitted by the user.This provides access to both POST and GET parameters, or to multipart form data requests.
- Specified by:
getForm
in interfaceWebContext
- Returns:
- the request form data. Cannot return null
-
getBasePath
public String getBasePath()
Description copied from interface:WebContext
Gets the path of the servlet. Same as servlet context path + servlet path.- Specified by:
getBasePath
in interfaceWebContext
- Returns:
- the site path
-
getBaseURL
public String getBaseURL()
Description copied from interface:WebContext
Gets the URL of the base path. This is the same asWebContext.getURL()
after removing the path segments over the base path.- Specified by:
getBaseURL
in interfaceWebContext
- Returns:
- the base URL
-
getServerURL
public StringBuilder getServerURL()
Description copied from interface:WebContext
Gets the server URL without any path or trailing /. The returned string builder can be used to build the wanted URL. If the server is behind a proxy, return the server url of the proxy so writing the url in a webpage is safe.- Specified by:
getServerURL
in interfaceWebContext
- Returns:
- a string builder
-
getURI
public String getURI()
Description copied from interface:WebContext
Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request. This is the same asHttpServletRequest.getRequestURI()
.- Specified by:
getURI
in interfaceWebContext
- Returns:
- the request URI. Cannot return null.
-
getURL
public String getURL()
Description copied from interface:WebContext
Gets the URL requested by the client. Same asHttpServletRequest.getRequestURL()
.- Specified by:
getURL
in interfaceWebContext
- Returns:
- the request URL. Cannot return null.
-
getUrlPathBuffer
public StringBuilder getUrlPathBuffer()
-
getUrlPath
public String getUrlPath()
Description copied from interface:WebContext
Gets the path portion of the request URL.- Specified by:
getUrlPath
in interfaceWebContext
- Returns:
- the path portion of the request URL. Cannot return null.
-
getLoginPath
public String getLoginPath()
Description copied from interface:WebContext
Gets the login path for the current context.This is the path you can use as a login form action to perform a login or a logout. After the login/logout is done the current page in that context will be served.
- Specified by:
getLoginPath
in interfaceWebContext
-
getUrlPath
public String getUrlPath(DocumentModel document)
This method is working only for root objects that implementModuleResource
- Specified by:
getUrlPath
in interfaceWebContext
- Parameters:
document
- the nuxeo document- Returns:
- the path if any or null if no suitable path can be found XXX can this method return null?
-
getLog
public Log getLog()
Description copied from interface:WebContext
Gets a logger to be used by scripts for logging.- Specified by:
getLog
in interfaceWebContext
- Returns:
- a logger
-
push
public Resource push(Resource rs)
- Specified by:
push
in interfaceWebContext
-
pop
public Resource pop()
- Specified by:
pop
in interfaceWebContext
-
tail
public Resource tail()
- Specified by:
tail
in interfaceWebContext
-
head
public Resource head()
- Specified by:
head
in interfaceWebContext
-
getFile
public ScriptFile getFile(String path)
template and script resolver- Specified by:
getFile
in interfaceWebContext
- Parameters:
path
- the path to resolve into a file- Returns:
- the file or null if the path couldn't be resolved
-
pushScriptFile
public void pushScriptFile(File file)
-
popScriptFile
public File popScriptFile()
-
getCurrentScriptFile
public File getCurrentScriptFile()
-
getCurrentScriptDirectory
public File getCurrentScriptDirectory()
-
render
public void render(String template, Writer writer)
Description copied from interface:WebContext
Renders the given template using the rendering engine registered in that web engine.This is similar to the
WebContext.render(String, Object, Writer)
method with a null value for the args argument.- Specified by:
render
in interfaceWebContext
- Parameters:
template
- the template to render. Can be a path absolute to the web directory or relative to the caller script if any.writer
- the writer to use- See Also:
WebContext.render(String, Object, Writer)
-
render
public void render(String template, Object ctx, Writer writer)
Description copied from interface:WebContext
Renders the given template using the rendering engine registered in that web engine. The given arguments are passed to the rendering process as context variables- Specified by:
render
in interfaceWebContext
- Parameters:
template
- the template to renderctx
- the arguments to passwriter
- the writer to use
-
render
public void render(ScriptFile script, Object ctx, Writer writer)
Description copied from interface:WebContext
Renders the given template using the rendering engine registered in that web engine.The given arguments are passed to the rendering process as context variables.
- Specified by:
render
in interfaceWebContext
- Parameters:
script
- the template to renderctx
- the arguments to passwriter
- the writer to use
-
runScript
public Object runScript(String script)
Description copied from interface:WebContext
Runs the given script.This is similar to
WebContext.runScript(String, Map)
with a null value for the args argument- Specified by:
runScript
in interfaceWebContext
- Parameters:
script
- the script path. Can be a path absolute to the web directory or relative to the caller script if any.- See Also:
WebContext.runScript(String, Map)
-
runScript
public Object runScript(String script, Map<String,Object> args)
Description copied from interface:WebContext
Runs the given script.- Specified by:
runScript
in interfaceWebContext
- Parameters:
script
- the script path. Can be a path absolute to the web directory or relative to the caller script if any.args
- the arguments to pass
-
runScript
public Object runScript(ScriptFile script, Map<String,Object> args)
Description copied from interface:WebContext
Runs the script using given argumentsThis is similar to
WebContext.runScript(String, Map)
with a null value for the args argument- Specified by:
runScript
in interfaceWebContext
- Parameters:
script
- the script path. Can be a path absolute to the web directory or relative to the caller script if any.args
- a map of arguments- See Also:
WebContext.runScript(String, Map)
-
checkGuard
public boolean checkGuard(String guard) throws ParseException
Description copied from interface:WebContext
Check the given expression in this context and return true if the expression is verified or false otherwise. Any valid guard expression is accepted- Specified by:
checkGuard
in interfaceWebContext
- Parameters:
guard
- the guard to check- Throws:
ParseException
- See Also:
Guard
-
getTargetObject
public Resource getTargetObject()
- Specified by:
getTargetObject
in interfaceWebContext
-
getTargetAdapter
public AdapterResource getTargetAdapter()
- Specified by:
getTargetAdapter
in interfaceWebContext
-
isRepositorySupportDisabled
public static boolean isRepositorySupportDisabled()
-
setIsRepositorySupportDisabled
public static void setIsRepositorySupportDisabled(boolean isRepositoryDisabled)
Can be used by the application to disable injecting repository sessions in scripting context. If the application is not deploying a repository injecting a repository session will throw exceptions each time rendering is used.- Parameters:
isRepositoryDisabled
- true to disable repository session injection, false otherwise
-
setRepositoryName
public void setRepositoryName(String repoName)
Description copied from interface:WebContext
Sets the repository name that will be used byWebContext.getCoreSession()
.- Specified by:
setRepositoryName
in interfaceWebContext
-
-