org.codehaus.groovy.grails.web.util
Class WebUtils

java.lang.Object
  extended by org.springframework.web.util.WebUtils
      extended by org.codehaus.groovy.grails.web.util.WebUtils

public class WebUtils
extends org.springframework.web.util.WebUtils

Utility methods to access commons objects and perform common web related functions for the internal framework.

Since:
1.0

Field Summary
static java.lang.String DISPATCH_ACTION_PARAMETER
           
static java.lang.String ENABLE_FILE_EXTENSIONS
           
static char SLASH
           
 
Fields inherited from class org.springframework.web.util.WebUtils
CONTENT_TYPE_CHARSET_PREFIX, DEFAULT_CHARACTER_ENCODING, DEFAULT_WEB_APP_ROOT_KEY, ERROR_EXCEPTION_ATTRIBUTE, ERROR_EXCEPTION_TYPE_ATTRIBUTE, ERROR_MESSAGE_ATTRIBUTE, ERROR_REQUEST_URI_ATTRIBUTE, ERROR_SERVLET_NAME_ATTRIBUTE, ERROR_STATUS_CODE_ATTRIBUTE, FORWARD_CONTEXT_PATH_ATTRIBUTE, FORWARD_PATH_INFO_ATTRIBUTE, FORWARD_QUERY_STRING_ATTRIBUTE, FORWARD_REQUEST_URI_ATTRIBUTE, FORWARD_SERVLET_PATH_ATTRIBUTE, HTML_ESCAPE_CONTEXT_PARAM, INCLUDE_CONTEXT_PATH_ATTRIBUTE, INCLUDE_PATH_INFO_ATTRIBUTE, INCLUDE_QUERY_STRING_ATTRIBUTE, INCLUDE_REQUEST_URI_ATTRIBUTE, INCLUDE_SERVLET_PATH_ATTRIBUTE, SESSION_MUTEX_ATTRIBUTE, SUBMIT_IMAGE_SUFFIXES, TEMP_DIR_CONTEXT_ATTRIBUTE, WEB_APP_ROOT_KEY_PARAM
 
Constructor Summary
WebUtils()
           
 
Method Summary
static boolean areFileExtensionsEnabled()
          Returns the value of the "grails.mime.file.extensions" setting configured in COnfig.groovy
static java.lang.String buildDispatchUrlForMapping(UrlMappingInfo info)
          Constructs the URI to forward to using the given request and UrlMappingInfo instance
static void clearGrailsWebRequest()
          Removes any GrailsWebRequest instance from the current request.
static void exposeIncludeRequestAttributes(javax.servlet.http.HttpServletRequest request)
          Expose the current request URI and paths as HttpServletRequest attributes under the keys defined in the Servlet 2.4 specification, for containers that implement 2.3 or an earlier version of the Servlet API: javax.servlet.forward.request_uri, javax.servlet.forward.context_path, javax.servlet.forward.servlet_path, javax.servlet.forward.path_info, javax.servlet.forward.query_string.
static java.lang.String forwardRequestForUrlMappingInfo(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, UrlMappingInfo info)
           
static java.lang.String forwardRequestForUrlMappingInfo(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, UrlMappingInfo info, java.util.Map model)
           
static java.lang.String forwardRequestForUrlMappingInfo(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, UrlMappingInfo info, java.util.Map model, boolean includeParams)
          Forwards a request for the given UrlMappingInfo object and model
static java.util.Map<java.lang.String,java.lang.Object> fromQueryString(java.lang.String queryString)
          Takes a query string and returns the results as a map where the values are either a single entry or a list of values
static java.lang.String getFormatFromURI(java.lang.String uri)
          Obtains the format from the URI.
static java.lang.String getFormatFromURI(java.lang.String uri, org.codehaus.groovy.grails.web.mime.MimeType[] mimeTypes)
          Obtains the format from the URI.
static java.lang.String getForwardURI(javax.servlet.http.HttpServletRequest request)
          Obtains the forwardURI from the request, since Grails uses a forwarding technique for URL mappings.
static java.lang.String getRequestURIForGrailsDispatchURI(javax.servlet.http.HttpServletRequest request)
          The Grails dispatch servlet maps URIs like /app/grails/example/index.dispatch.
static IncludedContent includeForUrl(java.lang.String includeUrl, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.util.Map model)
          Includes the given URL returning the resulting content as a String
static IncludedContent includeForUrlMappingInfo(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, UrlMappingInfo info, java.util.Map model)
          Include whatever the given UrlMappingInfo maps to within the current response
static org.codehaus.groovy.grails.commons.GrailsApplication lookupApplication(javax.servlet.ServletContext servletContext)
          Looks up the GrailsApplication instance
static org.springframework.web.servlet.HandlerInterceptor[] lookupHandlerInterceptors(javax.servlet.ServletContext servletContext)
          Looks up all of the HandlerInterceptor instances registered for the application
static UrlMappingsHolder lookupUrlMappings(javax.servlet.ServletContext servletContext)
          Looks up the UrlMappingsHolder instance
static org.springframework.web.servlet.ViewResolver lookupViewResolver(org.springframework.context.ApplicationContext wac)
           
static org.springframework.web.servlet.ViewResolver lookupViewResolver(javax.servlet.ServletContext servletContext)
           
static org.springframework.web.context.request.WebRequestInterceptor[] lookupWebRequestInterceptors(javax.servlet.ServletContext servletContext)
          Looks up all of the WebRequestInterceptor instances registered with the application
static org.springframework.web.servlet.View resolveView(javax.servlet.http.HttpServletRequest request, java.lang.String viewName, java.lang.String controllerName, org.springframework.web.servlet.ViewResolver viewResolver)
          Resolves a view for the given view name and controller name
static org.springframework.web.servlet.View resolveView(javax.servlet.http.HttpServletRequest request, UrlMappingInfo info, java.lang.String viewName, org.springframework.web.servlet.ViewResolver viewResolver)
          Resolves a view for the given view and UrlMappingInfo instance
static GrailsWebRequest retrieveGrailsWebRequest()
          Returns the GrailsWebRequest associated with the current request.
static void storeGrailsWebRequest(GrailsWebRequest webRequest)
          Helper method to store the given GrailsWebRequest for the current request.
static java.lang.String toQueryString(java.util.Map parameters)
          Converts the given parameters to a query string using the default UTF-8 encoding
static java.lang.String toQueryString(java.util.Map params, java.lang.String encoding)
          Converts the given params into a query string started with ?
 
Methods inherited from class org.springframework.web.util.WebUtils
clearErrorRequestAttributes, exposeErrorRequestAttributes, exposeForwardRequestAttributes, exposeRequestAttributes, extractFilenameFromUrlPath, extractFullFilenameFromUrlPath, findParameterValue, findParameterValue, getCookie, getDefaultHtmlEscape, getNativeRequest, getNativeResponse, getOrCreateSessionAttribute, getParametersStartingWith, getRealPath, getRequiredSessionAttribute, getSessionAttribute, getSessionId, getSessionMutex, getTargetPage, getTempDir, hasSubmitParameter, isDefaultHtmlEscape, isIncludeRequest, removeWebAppRootSystemProperty, setSessionAttribute, setWebAppRootSystemProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SLASH

public static final char SLASH
See Also:
Constant Field Values

ENABLE_FILE_EXTENSIONS

public static final java.lang.String ENABLE_FILE_EXTENSIONS
See Also:
Constant Field Values

DISPATCH_ACTION_PARAMETER

public static final java.lang.String DISPATCH_ACTION_PARAMETER
See Also:
Constant Field Values
Constructor Detail

WebUtils

public WebUtils()
Method Detail

lookupViewResolver

public static org.springframework.web.servlet.ViewResolver lookupViewResolver(javax.servlet.ServletContext servletContext)

lookupViewResolver

public static org.springframework.web.servlet.ViewResolver lookupViewResolver(org.springframework.context.ApplicationContext wac)

lookupHandlerInterceptors

public static org.springframework.web.servlet.HandlerInterceptor[] lookupHandlerInterceptors(javax.servlet.ServletContext servletContext)
Looks up all of the HandlerInterceptor instances registered for the application

Parameters:
servletContext - The ServletContext instance
Returns:
An array of HandlerInterceptor instances

lookupWebRequestInterceptors

public static org.springframework.web.context.request.WebRequestInterceptor[] lookupWebRequestInterceptors(javax.servlet.ServletContext servletContext)
Looks up all of the WebRequestInterceptor instances registered with the application

Parameters:
servletContext - The ServletContext instance
Returns:
An array of WebRequestInterceptor instances

lookupUrlMappings

public static UrlMappingsHolder lookupUrlMappings(javax.servlet.ServletContext servletContext)
Looks up the UrlMappingsHolder instance

Parameters:
servletContext - The ServletContext object
Returns:
The UrlMappingsHolder

getRequestURIForGrailsDispatchURI

public static java.lang.String getRequestURIForGrailsDispatchURI(javax.servlet.http.HttpServletRequest request)
The Grails dispatch servlet maps URIs like /app/grails/example/index.dispatch. This method infers the controller URI for the dispatch URI so that /app/grails/example/index.dispatch becomes /app/example/index

Parameters:
request - The request

lookupApplication

public static org.codehaus.groovy.grails.commons.GrailsApplication lookupApplication(javax.servlet.ServletContext servletContext)
Looks up the GrailsApplication instance

Returns:
The GrailsApplication instance

resolveView

public static org.springframework.web.servlet.View resolveView(javax.servlet.http.HttpServletRequest request,
                                                               UrlMappingInfo info,
                                                               java.lang.String viewName,
                                                               org.springframework.web.servlet.ViewResolver viewResolver)
                                                        throws java.lang.Exception
Resolves a view for the given view and UrlMappingInfo instance

Parameters:
request - The request
info - The info
viewName - The view name
viewResolver - The view resolver
Returns:
The view or null
Throws:
java.lang.Exception

resolveView

public static org.springframework.web.servlet.View resolveView(javax.servlet.http.HttpServletRequest request,
                                                               java.lang.String viewName,
                                                               java.lang.String controllerName,
                                                               org.springframework.web.servlet.ViewResolver viewResolver)
                                                        throws java.lang.Exception
Resolves a view for the given view name and controller name

Parameters:
request - The request
viewName - The view name
controllerName - The controller name
viewResolver - The resolver
Returns:
A View or null
Throws:
java.lang.Exception - Thrown if an error occurs

buildDispatchUrlForMapping

public static java.lang.String buildDispatchUrlForMapping(UrlMappingInfo info)
Constructs the URI to forward to using the given request and UrlMappingInfo instance

Parameters:
info - The UrlMappingInfo
Returns:
The URI to forward to

forwardRequestForUrlMappingInfo

public static java.lang.String forwardRequestForUrlMappingInfo(javax.servlet.http.HttpServletRequest request,
                                                               javax.servlet.http.HttpServletResponse response,
                                                               UrlMappingInfo info)
                                                        throws javax.servlet.ServletException,
                                                               java.io.IOException
Throws:
javax.servlet.ServletException
java.io.IOException
See Also:
forwardRequestForUrlMappingInfo(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.codehaus.groovy.grails.web.mapping.UrlMappingInfo, java.util.Map)

forwardRequestForUrlMappingInfo

public static java.lang.String forwardRequestForUrlMappingInfo(javax.servlet.http.HttpServletRequest request,
                                                               javax.servlet.http.HttpServletResponse response,
                                                               UrlMappingInfo info,
                                                               java.util.Map model)
                                                        throws javax.servlet.ServletException,
                                                               java.io.IOException
Throws:
javax.servlet.ServletException
java.io.IOException
See Also:
forwardRequestForUrlMappingInfo(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.codehaus.groovy.grails.web.mapping.UrlMappingInfo, java.util.Map, boolean)

forwardRequestForUrlMappingInfo

public static java.lang.String forwardRequestForUrlMappingInfo(javax.servlet.http.HttpServletRequest request,
                                                               javax.servlet.http.HttpServletResponse response,
                                                               UrlMappingInfo info,
                                                               java.util.Map model,
                                                               boolean includeParams)
                                                        throws javax.servlet.ServletException,
                                                               java.io.IOException
Forwards a request for the given UrlMappingInfo object and model

Parameters:
request - The request
response - The response
info - The UrlMappingInfo object
model - The Model
includeParams - Whether to include any request parameters
Returns:
The URI forwarded too
Throws:
javax.servlet.ServletException - Thrown when an error occurs executing the forward
java.io.IOException - Thrown when an error occurs executing the forward

includeForUrlMappingInfo

public static IncludedContent includeForUrlMappingInfo(javax.servlet.http.HttpServletRequest request,
                                                       javax.servlet.http.HttpServletResponse response,
                                                       UrlMappingInfo info,
                                                       java.util.Map model)
Include whatever the given UrlMappingInfo maps to within the current response

Parameters:
request - The request
response - The response
info - The UrlMappingInfo
model - The model
Returns:
The included content

includeForUrl

public static IncludedContent includeForUrl(java.lang.String includeUrl,
                                            javax.servlet.http.HttpServletRequest request,
                                            javax.servlet.http.HttpServletResponse response,
                                            java.util.Map model)
Includes the given URL returning the resulting content as a String

Parameters:
includeUrl - The URL to include
request - The request
response - The response
model - The model
Returns:
The content

exposeIncludeRequestAttributes

public static void exposeIncludeRequestAttributes(javax.servlet.http.HttpServletRequest request)
Expose the current request URI and paths as HttpServletRequest attributes under the keys defined in the Servlet 2.4 specification, for containers that implement 2.3 or an earlier version of the Servlet API: javax.servlet.forward.request_uri, javax.servlet.forward.context_path, javax.servlet.forward.servlet_path, javax.servlet.forward.path_info, javax.servlet.forward.query_string.

Does not override values if already present, to not cause conflicts with the attributes exposed by Servlet 2.4+ containers themselves.

Parameters:
request - current servlet request

fromQueryString

public static java.util.Map<java.lang.String,java.lang.Object> fromQueryString(java.lang.String queryString)
Takes a query string and returns the results as a map where the values are either a single entry or a list of values

Parameters:
queryString - The query String
Returns:
A map

toQueryString

public static java.lang.String toQueryString(java.util.Map params,
                                             java.lang.String encoding)
                                      throws java.io.UnsupportedEncodingException
Converts the given params into a query string started with ?

Parameters:
params - The params
encoding - The encoding to use
Returns:
The query string
Throws:
java.io.UnsupportedEncodingException - If the given encoding is not supported

toQueryString

public static java.lang.String toQueryString(java.util.Map parameters)
                                      throws java.io.UnsupportedEncodingException
Converts the given parameters to a query string using the default UTF-8 encoding

Parameters:
parameters - The parameters
Returns:
The query string
Throws:
java.io.UnsupportedEncodingException - If UTF-8 encoding is not supported

getFormatFromURI

public static java.lang.String getFormatFromURI(java.lang.String uri)
Obtains the format from the URI. The format is the string following the . file extension in the last token of the URI. If nothing comes after the ".", this method assumes that there is no format and returns null.

Parameters:
uri - The URI
Returns:
The format or null if none

getFormatFromURI

public static java.lang.String getFormatFromURI(java.lang.String uri,
                                                org.codehaus.groovy.grails.web.mime.MimeType[] mimeTypes)
Obtains the format from the URI. The format is the string following the . file extension in the last token of the URI. If nothing comes after the ".", this method assumes that there is no format and returns null.

Parameters:
uri - The URI
mimeTypes - The configured mime types
Returns:
The format or null if none

areFileExtensionsEnabled

public static boolean areFileExtensionsEnabled()
Returns the value of the "grails.mime.file.extensions" setting configured in COnfig.groovy

Returns:
true if file extensions are enabled

retrieveGrailsWebRequest

public static GrailsWebRequest retrieveGrailsWebRequest()
Returns the GrailsWebRequest associated with the current request. This is the preferred means of accessing the GrailsWebRequest instance. If the exception is undesired, you can use RequestContextHolder.getRequestAttributes() instead.

Throws:
java.lang.IllegalStateException - if this is called outside of a request.

storeGrailsWebRequest

public static void storeGrailsWebRequest(GrailsWebRequest webRequest)
Helper method to store the given GrailsWebRequest for the current request. Ensures consistency between RequestContextHolder and the relevant request attribute. This is the preferred means of updating the current web request.


clearGrailsWebRequest

public static void clearGrailsWebRequest()
Removes any GrailsWebRequest instance from the current request.


getForwardURI

public static java.lang.String getForwardURI(javax.servlet.http.HttpServletRequest request)
Obtains the forwardURI from the request, since Grails uses a forwarding technique for URL mappings. The actual request URI is held within a request attribute

Parameters:
request - The request
Returns:
The forward URI