org.codehaus.groovy.grails.web.errors
Class GrailsExceptionResolver

java.lang.Object
  extended by org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver
      extended by org.springframework.web.servlet.handler.SimpleMappingExceptionResolver
          extended by org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver
All Implemented Interfaces:
org.codehaus.groovy.grails.plugins.support.aware.GrailsApplicationAware, org.springframework.beans.factory.Aware, org.springframework.core.Ordered, org.springframework.web.context.ServletContextAware, org.springframework.web.servlet.HandlerExceptionResolver

public class GrailsExceptionResolver
extends org.springframework.web.servlet.handler.SimpleMappingExceptionResolver
implements org.springframework.web.context.ServletContextAware, org.codehaus.groovy.grails.plugins.support.aware.GrailsApplicationAware

Wraps any runtime exceptions with a GrailsWrappedException instance.


Field Summary
static java.lang.String EXCEPTION_ATTRIBUTE
           
protected  org.codehaus.groovy.grails.commons.GrailsApplication grailsApplication
           
protected static java.lang.String LINE_SEPARATOR
           
protected static org.apache.commons.logging.Log LOG
           
protected  javax.servlet.ServletContext servletContext
           
protected  org.codehaus.groovy.grails.exceptions.StackTraceFilterer stackFilterer
           
 
Fields inherited from class org.springframework.web.servlet.handler.SimpleMappingExceptionResolver
DEFAULT_EXCEPTION_ATTRIBUTE
 
Fields inherited from class org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
GrailsExceptionResolver()
           
 
Method Summary
protected  void createStackFilterer()
           
protected  java.lang.String determineUri(javax.servlet.http.HttpServletRequest request)
           
static int extractLineNumber(org.codehaus.groovy.control.CompilationFailedException e)
           
protected  void filterStackTrace(java.lang.Exception e)
           
protected  java.lang.Exception findWrappedException(java.lang.Exception e)
           
protected  void forwardRequest(UrlMappingInfo info, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.springframework.web.servlet.ModelAndView mv, java.lang.String uri)
           
static java.lang.RuntimeException getFirstRuntimeException(java.lang.Throwable e)
           
 java.lang.String getRequestLogMessage(javax.servlet.http.HttpServletRequest request)
           
protected  java.lang.String getRequestLogMessage(java.lang.String exceptionName, javax.servlet.http.HttpServletRequest request, java.lang.String message)
           
 java.lang.String getRequestLogMessage(java.lang.Throwable e, javax.servlet.http.HttpServletRequest request)
           
static java.lang.Throwable getRootCause(java.lang.Throwable ex)
          Obtains the root cause of the given exception
protected  void logStackTrace(java.lang.Exception e, javax.servlet.http.HttpServletRequest request)
           
protected  UrlMappingsHolder lookupUrlMappings()
           
protected  UrlMappingInfo matchStatusCode(java.lang.Exception ex, UrlMappingsHolder urlMappings)
           
 org.springframework.web.servlet.ModelAndView resolveException(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.Object handler, java.lang.Exception ex)
           
protected  void resolveView(javax.servlet.http.HttpServletRequest request, UrlMappingInfo info, org.springframework.web.servlet.ModelAndView mv)
           
protected  org.springframework.web.servlet.ModelAndView resolveViewOrForward(java.lang.Exception ex, UrlMappingsHolder urlMappings, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.springframework.web.servlet.ModelAndView mv)
           
 void setGrailsApplication(org.codehaus.groovy.grails.commons.GrailsApplication grailsApplication)
           
 void setServletContext(javax.servlet.ServletContext servletContext)
           
protected  void setStatus(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.springframework.web.servlet.ModelAndView mv, java.lang.Exception e)
           
 
Methods inherited from class org.springframework.web.servlet.handler.SimpleMappingExceptionResolver
addStatusCode, applyStatusCodeIfPossible, determineStatusCode, determineViewName, doResolveException, findMatchingViewName, getDepth, getModelAndView, getModelAndView, getStatusCodesAsMap, setDefaultErrorView, setDefaultStatusCode, setExceptionAttribute, setExceptionMappings, setStatusCodes
 
Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver
buildLogMessage, getOrder, logException, prepareResponse, preventCaching, setMappedHandlerClasses, setMappedHandlers, setOrder, setPreventResponseCaching, setWarnLogCategory, shouldApplyTo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EXCEPTION_ATTRIBUTE

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

LOG

protected static final org.apache.commons.logging.Log LOG

LINE_SEPARATOR

protected static final java.lang.String LINE_SEPARATOR

servletContext

protected javax.servlet.ServletContext servletContext

grailsApplication

protected org.codehaus.groovy.grails.commons.GrailsApplication grailsApplication

stackFilterer

protected org.codehaus.groovy.grails.exceptions.StackTraceFilterer stackFilterer
Constructor Detail

GrailsExceptionResolver

public GrailsExceptionResolver()
Method Detail

resolveException

public org.springframework.web.servlet.ModelAndView resolveException(javax.servlet.http.HttpServletRequest request,
                                                                     javax.servlet.http.HttpServletResponse response,
                                                                     java.lang.Object handler,
                                                                     java.lang.Exception ex)
Specified by:
resolveException in interface org.springframework.web.servlet.HandlerExceptionResolver
Overrides:
resolveException in class org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver

filterStackTrace

protected void filterStackTrace(java.lang.Exception e)

setStatus

protected void setStatus(javax.servlet.http.HttpServletRequest request,
                         javax.servlet.http.HttpServletResponse response,
                         org.springframework.web.servlet.ModelAndView mv,
                         java.lang.Exception e)

lookupUrlMappings

protected UrlMappingsHolder lookupUrlMappings()

resolveViewOrForward

protected org.springframework.web.servlet.ModelAndView resolveViewOrForward(java.lang.Exception ex,
                                                                            UrlMappingsHolder urlMappings,
                                                                            javax.servlet.http.HttpServletRequest request,
                                                                            javax.servlet.http.HttpServletResponse response,
                                                                            org.springframework.web.servlet.ModelAndView mv)

forwardRequest

protected void forwardRequest(UrlMappingInfo info,
                              javax.servlet.http.HttpServletRequest request,
                              javax.servlet.http.HttpServletResponse response,
                              org.springframework.web.servlet.ModelAndView mv,
                              java.lang.String uri)
                       throws javax.servlet.ServletException,
                              java.io.IOException
Throws:
javax.servlet.ServletException
java.io.IOException

determineUri

protected java.lang.String determineUri(javax.servlet.http.HttpServletRequest request)

resolveView

protected void resolveView(javax.servlet.http.HttpServletRequest request,
                           UrlMappingInfo info,
                           org.springframework.web.servlet.ModelAndView mv)
                    throws java.lang.Exception
Throws:
java.lang.Exception

matchStatusCode

protected UrlMappingInfo matchStatusCode(java.lang.Exception ex,
                                         UrlMappingsHolder urlMappings)

logStackTrace

protected void logStackTrace(java.lang.Exception e,
                             javax.servlet.http.HttpServletRequest request)

findWrappedException

protected java.lang.Exception findWrappedException(java.lang.Exception e)

getRootCause

public static java.lang.Throwable getRootCause(java.lang.Throwable ex)
Obtains the root cause of the given exception

Parameters:
ex - The exception
Returns:
The root cause

extractLineNumber

public static int extractLineNumber(org.codehaus.groovy.control.CompilationFailedException e)

getFirstRuntimeException

public static java.lang.RuntimeException getFirstRuntimeException(java.lang.Throwable e)

getRequestLogMessage

protected java.lang.String getRequestLogMessage(java.lang.String exceptionName,
                                                javax.servlet.http.HttpServletRequest request,
                                                java.lang.String message)

getRequestLogMessage

public java.lang.String getRequestLogMessage(java.lang.Throwable e,
                                             javax.servlet.http.HttpServletRequest request)

getRequestLogMessage

public java.lang.String getRequestLogMessage(javax.servlet.http.HttpServletRequest request)

setServletContext

public void setServletContext(javax.servlet.ServletContext servletContext)
Specified by:
setServletContext in interface org.springframework.web.context.ServletContextAware

setGrailsApplication

public void setGrailsApplication(org.codehaus.groovy.grails.commons.GrailsApplication grailsApplication)
Specified by:
setGrailsApplication in interface org.codehaus.groovy.grails.plugins.support.aware.GrailsApplicationAware

createStackFilterer

protected void createStackFilterer()