Class ErrorHandler

    • Constructor Detail

      • ErrorHandler

        public ErrorHandler()
    • Method Detail

      • handle

        public void handle​(java.lang.String target,
                           Request baseRequest,
                           javax.servlet.http.HttpServletRequest request,
                           javax.servlet.http.HttpServletResponse response)
                    throws java.io.IOException
        Description copied from interface: Handler
        Handle a request.
        Specified by:
        handle in interface Handler
        Specified by:
        handle in class AbstractHandler
        Parameters:
        target - The target of the request - either a URI or a name.
        baseRequest - The original unwrapped request object.
        request - The request either as the Request object or a wrapper of that request. The HttpConnection.getCurrentConnection().getHttpChannel().getRequest() method can be used access the Request object if required.
        response - The response as the Response object or a wrapper of that request. The HttpConnection.getCurrentConnection().getHttpChannel().getResponse() method can be used access the Response object if required.
        Throws:
        java.io.IOException - if unable to handle the request or response processing
      • generateAcceptableResponse

        protected void generateAcceptableResponse​(Request baseRequest,
                                                  javax.servlet.http.HttpServletRequest request,
                                                  javax.servlet.http.HttpServletResponse response,
                                                  int code,
                                                  java.lang.String message)
                                           throws java.io.IOException
        Generate an acceptable error response.

        This method is called to generate an Error page of a mime type that is acceptable to the user-agent. The Accept header is evaluated in quality order and the method generateAcceptableResponse(Request, HttpServletRequest, HttpServletResponse, int, String, String) is called for each mimetype until Request.isHandled() is true.

        Parameters:
        baseRequest - The base request
        request - The servlet request (may be wrapped)
        response - The response (may be wrapped)
        code - the http error code
        message - the http error message
        Throws:
        java.io.IOException - if the response cannot be generated
      • getAcceptableWriter

        protected java.io.Writer getAcceptableWriter​(Request baseRequest,
                                                     javax.servlet.http.HttpServletRequest request,
                                                     javax.servlet.http.HttpServletResponse response)
                                              throws java.io.IOException
        Returns an acceptable writer for an error page.

        Uses the user-agent's Accept-Charset to get response Writer. The acceptable charsets are tested in quality order if they are known to the JVM and the first known is set on ServletResponse.setCharacterEncoding(String) and the ServletResponse.getWriter() method used to return a writer. If there is no Accept-Charset header then ISO-8859-1 is used. If '*' is the highest quality known charset, then utf-8 is used.

        Parameters:
        baseRequest - The base request
        request - The servlet request (may be wrapped)
        response - The response (may be wrapped)
        Returns:
        A Writer if there is a known acceptable charset or null
        Throws:
        java.io.IOException - if a Writer cannot be returned
      • generateAcceptableResponse

        protected void generateAcceptableResponse​(Request baseRequest,
                                                  javax.servlet.http.HttpServletRequest request,
                                                  javax.servlet.http.HttpServletResponse response,
                                                  int code,
                                                  java.lang.String message,
                                                  java.lang.String mimeType)
                                           throws java.io.IOException
        Generate an acceptable error response for a mime type.

        This method is called for each mime type in the users agent's Accept header, until Request.isHandled() is true and a response of the appropriate type is generated.

        Parameters:
        baseRequest - The base request
        request - The servlet request (may be wrapped)
        response - The response (may be wrapped)
        code - the http error code
        message - the http error message
        mimeType - The mimetype to generate (may be */*or other wildcard)
        Throws:
        java.io.IOException - if a response cannot be generated
      • handleErrorPage

        protected void handleErrorPage​(javax.servlet.http.HttpServletRequest request,
                                       java.io.Writer writer,
                                       int code,
                                       java.lang.String message)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • writeErrorPage

        protected void writeErrorPage​(javax.servlet.http.HttpServletRequest request,
                                      java.io.Writer writer,
                                      int code,
                                      java.lang.String message,
                                      boolean showStacks)
                               throws java.io.IOException
        Throws:
        java.io.IOException
      • writeErrorPageHead

        protected void writeErrorPageHead​(javax.servlet.http.HttpServletRequest request,
                                          java.io.Writer writer,
                                          int code,
                                          java.lang.String message)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • writeErrorPageBody

        protected void writeErrorPageBody​(javax.servlet.http.HttpServletRequest request,
                                          java.io.Writer writer,
                                          int code,
                                          java.lang.String message,
                                          boolean showStacks)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • writeErrorPageMessage

        protected void writeErrorPageMessage​(javax.servlet.http.HttpServletRequest request,
                                             java.io.Writer writer,
                                             int code,
                                             java.lang.String message,
                                             java.lang.String uri)
                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • writeErrorPageStacks

        protected void writeErrorPageStacks​(javax.servlet.http.HttpServletRequest request,
                                            java.io.Writer writer)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • badMessageError

        public java.nio.ByteBuffer badMessageError​(int status,
                                                   java.lang.String reason,
                                                   HttpFields fields)
        Bad Message Error body

        Generate a error response body to be sent for a bad message. In this case there is something wrong with the request, so either a request cannot be built, or it is not safe to build a request. This method allows for a simple error page body to be returned and some response headers to be set.

        Parameters:
        status - The error code that will be sent
        reason - The reason for the error code (may be null)
        fields - The header fields that will be sent with the response.
        Returns:
        The content as a ByteBuffer, or null for no body.
      • getCacheControl

        public java.lang.String getCacheControl()
        Get the cacheControl.
        Returns:
        the cacheControl header to set on error responses.
      • setCacheControl

        public void setCacheControl​(java.lang.String cacheControl)
        Set the cacheControl.
        Parameters:
        cacheControl - the cacheControl header to set on error responses.
      • isShowStacks

        public boolean isShowStacks()
        Returns:
        True if stack traces are shown in the error pages
      • setShowStacks

        public void setShowStacks​(boolean showStacks)
        Parameters:
        showStacks - True if stack traces are shown in the error pages
      • setShowMessageInTitle

        public void setShowMessageInTitle​(boolean showMessageInTitle)
        Parameters:
        showMessageInTitle - if true, the error message appears in page title
      • getShowMessageInTitle

        public boolean getShowMessageInTitle()
      • write

        protected void write​(java.io.Writer writer,
                             java.lang.String string)
                      throws java.io.IOException
        Throws:
        java.io.IOException