org.opencms.flex
Class CmsFlexRequest

java.lang.Object
  extended by javax.servlet.ServletRequestWrapper
      extended by javax.servlet.http.HttpServletRequestWrapper
          extended by org.opencms.flex.CmsFlexRequest
All Implemented Interfaces:
javax.servlet.http.HttpServletRequest, javax.servlet.ServletRequest

public class CmsFlexRequest
extends javax.servlet.http.HttpServletRequestWrapper

Wrapper class for a HttpServletRequest.

This class wraps the standard HttpServletRequest so that it's output can be delivered to the CmsFlexCache.

Since:
6.0.0
Version:
$Revision: 1.50 $
Author:
Alexander Kandzior

Field Summary
static java.lang.String PARAMETER_FLEX
          Request parameter for FlexCache commands.
 
Fields inherited from interface javax.servlet.http.HttpServletRequest
BASIC_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH, FORM_AUTH
 
Constructor Summary
CmsFlexRequest(javax.servlet.http.HttpServletRequest req, CmsFlexController controller)
          Creates a new CmsFlexRequest wrapper which is most likely the "Top" request wrapper, i.e. the wrapper that is constructed around the first "real" (not wrapped) request.
 
Method Summary
 java.util.Map addParameterMap(java.util.Map map)
          Adds the specified Map to the parameters of the request, added parameters will not overwrite existing parameters in the request.
protected  java.util.List getCmsIncludeCalls()
          Returns the List of include calls which will be passed to the next wrapping layer.
 java.lang.String getElementRootPath()
          Returns the full element URI site root path to the resource currently processed.
 java.lang.String getElementUri()
          Returns the element URI of the resource currently processed, relative to the current site root.
protected  CmsJspLoader getJspLoader()
          Returns the jsp loader instance.
 java.lang.String getParameter(java.lang.String name)
          Return the value of the specified request parameter, if any; otherwise, return null.
 java.util.Map getParameterMap()
          Returns a Map of the parameters of this request.
 java.util.Enumeration getParameterNames()
          Return the names of all defined request parameters for this request.
 java.lang.String[] getParameterValues(java.lang.String name)
          Returns the defined values for the specified request parameter, if any; otherwise, return null.
 javax.servlet.RequestDispatcher getRequestDispatcher(java.lang.String target)
          Allows requests to be dispatched to internal VFS resources or external JSP pages, overloads the standard servlet API getRequestDispatcher() method.
 CmsFlexRequestDispatcher getRequestDispatcherToExternal(java.lang.String vfs_target, java.lang.String ext_target)
          Replacement for the standard servlet API getRequestDispatcher() method.
 java.lang.String getRequestURI()
          Wraps the request URI, overloading the standard API.
 java.lang.StringBuffer getRequestURL()
          Wraps the request URL, overloading the standard API, the wrapped URL will always point to the currently included VFS resource.
 java.lang.String getServletPath()
          This is a work around for servlet containers creating a new application dispatcher instead of using our request dispatcher, so missing RFS JSP pages are not requested to OpenCms and the dispatcher is unable to load the included/forwarded JSP file.
 boolean isDoRecompile()
          Checks if JSPs should always be recompiled.
 boolean isOnline()
          Indicates that this request belongs to an online project.
 void setParameterMap(java.util.Map map)
          Sets the specified Map as parameter map of the request.
 java.lang.String toString()
           
 
Methods inherited from class javax.servlet.http.HttpServletRequestWrapper
getAuthType, getContextPath, getCookies, getDateHeader, getHeader, getHeaderNames, getHeaders, getIntHeader, getMethod, getPathInfo, getPathTranslated, getQueryString, getRemoteUser, getRequestedSessionId, getSession, getSession, getUserPrincipal, isRequestedSessionIdFromCookie, isRequestedSessionIdFromUrl, isRequestedSessionIdFromURL, isRequestedSessionIdValid, isUserInRole
 
Methods inherited from class javax.servlet.ServletRequestWrapper
getAttribute, getAttributeNames, getCharacterEncoding, getContentLength, getContentType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getReader, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getRequest, getScheme, getServerName, getServerPort, isSecure, removeAttribute, setAttribute, setCharacterEncoding, setRequest
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface javax.servlet.ServletRequest
getAttribute, getAttributeNames, getCharacterEncoding, getContentLength, getContentType, getInputStream, getLocalAddr, getLocale, getLocales, getLocalName, getLocalPort, getProtocol, getReader, getRealPath, getRemoteAddr, getRemoteHost, getRemotePort, getScheme, getServerName, getServerPort, isSecure, removeAttribute, setAttribute, setCharacterEncoding
 

Field Detail

PARAMETER_FLEX

public static final java.lang.String PARAMETER_FLEX
Request parameter for FlexCache commands.

See Also:
Constant Field Values
Constructor Detail

CmsFlexRequest

public CmsFlexRequest(javax.servlet.http.HttpServletRequest req,
                      CmsFlexController controller)
Creates a new CmsFlexRequest wrapper which is most likely the "Top" request wrapper, i.e. the wrapper that is constructed around the first "real" (not wrapped) request.

Parameters:
req - the request to wrap
controller - the controller to use
Method Detail

addParameterMap

public java.util.Map addParameterMap(java.util.Map map)
Adds the specified Map to the parameters of the request, added parameters will not overwrite existing parameters in the request.

Remember that the value for a parameter name in a HttpRequest is a String array. If a parameter name already exists in the HttpRequest, the values will be added to the existing value array. Multiple occurrences of the same value for one parameter are also possible.

Parameters:
map - the map to add
Returns:
the merged map of parameters

getElementRootPath

public java.lang.String getElementRootPath()
Returns the full element URI site root path to the resource currently processed.

Returns:
the name of the resource currently processed

getElementUri

public java.lang.String getElementUri()
Returns the element URI of the resource currently processed, relative to the current site root.

This might be the name of an included resource, not necessarily the name the resource requested by the user.

Returns:
the name of the resource currently processed

getParameter

public java.lang.String getParameter(java.lang.String name)
Return the value of the specified request parameter, if any; otherwise, return null.

If there is more than one value defined, return only the first one.

Specified by:
getParameter in interface javax.servlet.ServletRequest
Overrides:
getParameter in class javax.servlet.ServletRequestWrapper
Parameters:
name - the name of the desired request parameter
Returns:
the value of the specified request parameter
See Also:
ServletRequest.getParameter(java.lang.String)

getParameterMap

public java.util.Map getParameterMap()
Returns a Map of the parameters of this request.

Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.

Specified by:
getParameterMap in interface javax.servlet.ServletRequest
Overrides:
getParameterMap in class javax.servlet.ServletRequestWrapper
Returns:
a Map containing parameter names as keys and parameter values as map values
See Also:
ServletRequest.getParameterMap()

getParameterNames

public java.util.Enumeration getParameterNames()
Return the names of all defined request parameters for this request.

Specified by:
getParameterNames in interface javax.servlet.ServletRequest
Overrides:
getParameterNames in class javax.servlet.ServletRequestWrapper
Returns:
the names of all defined request parameters for this request
See Also:
ServletRequest.getParameterNames()

getParameterValues

public java.lang.String[] getParameterValues(java.lang.String name)
Returns the defined values for the specified request parameter, if any; otherwise, return null.

Specified by:
getParameterValues in interface javax.servlet.ServletRequest
Overrides:
getParameterValues in class javax.servlet.ServletRequestWrapper
Parameters:
name - Name of the desired request parameter
Returns:
the defined values for the specified request parameter, if any; null otherwise
See Also:
ServletRequest.getParameterValues(java.lang.String)

getRequestDispatcher

public javax.servlet.RequestDispatcher getRequestDispatcher(java.lang.String target)
Allows requests to be dispatched to internal VFS resources or external JSP pages, overloads the standard servlet API getRequestDispatcher() method.

Specified by:
getRequestDispatcher in interface javax.servlet.ServletRequest
Overrides:
getRequestDispatcher in class javax.servlet.ServletRequestWrapper
Parameters:
target - the target for the request dispatcher
Returns:
a special RequestDispatcher that allows access to VFS resources

getRequestDispatcherToExternal

public CmsFlexRequestDispatcher getRequestDispatcherToExternal(java.lang.String vfs_target,
                                                               java.lang.String ext_target)
Replacement for the standard servlet API getRequestDispatcher() method.

This variation is used if an external file (probably JSP) is dispatched to. This external file must have a "mirror" version, i.e. a file in the OpenCms VFS that represents the external file.

Parameters:
vfs_target - the OpenCms file that is a "mirror" version of the external file
ext_target - the external file (outside the OpenCms VFS)
Returns:
the constructed CmsFlexRequestDispatcher

getRequestURI

public java.lang.String getRequestURI()
Wraps the request URI, overloading the standard API.

This ensures that any wrapped request will use the "faked" target parameters. Remember that for the real request, a mixture of PathInfo and other request information is used to identify the target.

Specified by:
getRequestURI in interface javax.servlet.http.HttpServletRequest
Overrides:
getRequestURI in class javax.servlet.http.HttpServletRequestWrapper
Returns:
a faked URI that will point to the wrapped target in the VFS
See Also:
HttpServletRequest.getRequestURI()

getRequestURL

public java.lang.StringBuffer getRequestURL()
Wraps the request URL, overloading the standard API, the wrapped URL will always point to the currently included VFS resource.

Specified by:
getRequestURL in interface javax.servlet.http.HttpServletRequest
Overrides:
getRequestURL in class javax.servlet.http.HttpServletRequestWrapper
Returns:
a faked URL that will point to the included target in the VFS
See Also:
HttpServletRequest.getRequestURL()

getServletPath

public java.lang.String getServletPath()
This is a work around for servlet containers creating a new application dispatcher instead of using our request dispatcher, so missing RFS JSP pages are not requested to OpenCms and the dispatcher is unable to load the included/forwarded JSP file.

Specified by:
getServletPath in interface javax.servlet.http.HttpServletRequest
Overrides:
getServletPath in class javax.servlet.http.HttpServletRequestWrapper
See Also:
HttpServletRequestWrapper.getServletPath()

isDoRecompile

public boolean isDoRecompile()
Checks if JSPs should always be recompiled.

This is useful in case directive based includes are used with <%@ include file="..." %> on a JSP. Note that this also forces the request not to be cached.

Returns:
true if JSPs should be recompiled, false otherwise

isOnline

public boolean isOnline()
Indicates that this request belongs to an online project.

This is required to distinguish between online and offline resources in the cache. Since the resources have the same name, a suffix [online] or [offline] is added to distinguish the strings when building cache keys. Any resource from a request that isOnline() will be saved with the [online] suffix and vice versa.

Resources in the OpenCms workplace are not distinguished between online and offline but have their own suffix [workplace]. The assumption is that if you do change the workplace, this is only on true development machines so you can do the cache clearing manually if required.

The suffixes are used so that we have a simple String name for the resources in the cache. This makes it easy to use a standard HashMap for storage of the resources.

Returns:
true if an online resource was requested, false otherwise

setParameterMap

public void setParameterMap(java.util.Map map)
Sets the specified Map as parameter map of the request.

The map set should be immutable. This will completely replace the parameter map. Use this in combination with getParameterMap() and addParameterMap() in case you want to set the old status of the parameter map after you have modified it for a specific operation.

Parameters:
map - the map to set

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
See Also:
Object.toString()

getCmsIncludeCalls

protected java.util.List getCmsIncludeCalls()
Returns the List of include calls which will be passed to the next wrapping layer.

The set of include calls is maintained to detect an endless inclusion loop.

Returns:
the List of include calls

getJspLoader

protected CmsJspLoader getJspLoader()
Returns the jsp loader instance.

Returns:
the jsp loader instance