Class ScopedHandler

  • All Implemented Interfaces:
    Handler, HandlerContainer, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle
    Direct Known Subclasses:
    ContextHandler, ServletHandler, SessionHandler

    public abstract class ScopedHandler
    extends HandlerWrapper
    ScopedHandler. A ScopedHandler is a HandlerWrapper where the wrapped handlers each define a scope.

    When handle(String, Request, HttpServletRequest, HttpServletResponse) is called on the first ScopedHandler in a chain of HandlerWrappers, the doScope(String, Request, HttpServletRequest, HttpServletResponse) method is called on all contained ScopedHandlers, before the doHandle(String, Request, HttpServletRequest, HttpServletResponse) method is called on all contained handlers.

    For example if Scoped handlers A, B & C were chained together, then the calling order would be:

     A.handle(...)
       A.doScope(...)
         B.doScope(...)
           C.doScope(...)
             A.doHandle(...)
               B.doHandle(...)
                  C.doHandle(...)
     

    If non scoped handler X was in the chained A, B, X & C, then the calling order would be:

     A.handle(...)
       A.doScope(...)
         B.doScope(...)
           C.doScope(...)
             A.doHandle(...)
               B.doHandle(...)
                 X.handle(...)
                   C.handle(...)
                     C.doHandle(...)
     

    A typical usage pattern is:

         private static class MyHandler extends ScopedHandler
         {
             public void doScope(String target, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
             {
                 try
                 {
                     setUpMyScope();
                     super.doScope(target,request,response);
                 }
                 finally
                 {
                     tearDownMyScope();
                 }
             }
    
             public void doHandle(String target, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
             {
                 try
                 {
                     doMyHandling();
                     super.doHandle(target,request,response);
                 }
                 finally
                 {
                     cleanupMyHandling();
                 }
             }
         }
     
    • Constructor Detail

      • ScopedHandler

        public ScopedHandler()
    • Method Detail

      • handle

        public final void handle​(java.lang.String target,
                                 Request baseRequest,
                                 javax.servlet.http.HttpServletRequest request,
                                 javax.servlet.http.HttpServletResponse response)
                          throws java.io.IOException,
                                 javax.servlet.ServletException
        ------------------------------------------------------------
        Specified by:
        handle in interface Handler
        Overrides:
        handle in class HandlerWrapper
        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
        javax.servlet.ServletException - if unable to handle the request or response due to underlying servlet issue
      • doScope

        public void doScope​(java.lang.String target,
                            Request baseRequest,
                            javax.servlet.http.HttpServletRequest request,
                            javax.servlet.http.HttpServletResponse response)
                     throws java.io.IOException,
                            javax.servlet.ServletException
        Scope the handler

        Derived implementations should call nextScope(String, Request, HttpServletRequest, HttpServletResponse)

        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
        javax.servlet.ServletException - if unable to handle the request or response due to underlying servlet issue
      • nextScope

        public final void nextScope​(java.lang.String target,
                                    Request baseRequest,
                                    javax.servlet.http.HttpServletRequest request,
                                    javax.servlet.http.HttpServletResponse response)
                             throws java.io.IOException,
                                    javax.servlet.ServletException
        Scope the handler
        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
        javax.servlet.ServletException - if unable to handle the request or response due to underlying servlet issue
      • doHandle

        public abstract void doHandle​(java.lang.String target,
                                      Request baseRequest,
                                      javax.servlet.http.HttpServletRequest request,
                                      javax.servlet.http.HttpServletResponse response)
                               throws java.io.IOException,
                                      javax.servlet.ServletException
        Do the handler work within the scope.

        Derived implementations should call nextHandle(String, Request, HttpServletRequest, HttpServletResponse)

        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
        javax.servlet.ServletException - if unable to handle the request or response due to underlying servlet issue
      • nextHandle

        public final void nextHandle​(java.lang.String target,
                                     Request baseRequest,
                                     javax.servlet.http.HttpServletRequest request,
                                     javax.servlet.http.HttpServletResponse response)
                              throws java.io.IOException,
                                     javax.servlet.ServletException
        Throws:
        java.io.IOException
        javax.servlet.ServletException