Class ScopedHandler

  • All Implemented Interfaces:
    Handler, HandlerContainer, org.eclipse.jetty.util.component.Container, org.eclipse.jetty.util.component.Destroyable, org.eclipse.jetty.util.component.Dumpable, org.eclipse.jetty.util.component.Dumpable.DumpableContainer, org.eclipse.jetty.util.component.LifeCycle
    Direct Known Subclasses:
    ContextHandler, 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();
                 }
             }
         }
     
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener, org.eclipse.jetty.util.component.AbstractLifeCycle.StopException
      • Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container

        org.eclipse.jetty.util.component.Container.InheritedListener, org.eclipse.jetty.util.component.Container.Listener
      • Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable

        org.eclipse.jetty.util.component.Dumpable.DumpableContainer
      • Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle

        org.eclipse.jetty.util.component.LifeCycle.Listener
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected ScopedHandler _nextScope  
      protected ScopedHandler _outerScope  
      • Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        FAILED, STARTED, STARTING, STOPPED, STOPPING
      • Fields inherited from interface org.eclipse.jetty.util.component.Dumpable

        KEY
    • Constructor Summary

      Constructors 
      Constructor Description
      ScopedHandler()  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract void doHandle​(java.lang.String target, Request baseRequest, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      Do the handler work within the scope.
      void doScope​(java.lang.String target, Request baseRequest, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      Scope the handler
      protected void doStart()  
      void handle​(java.lang.String target, Request baseRequest, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      Handle a request.
      void nextHandle​(java.lang.String target, Request baseRequest, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)  
      void nextScope​(java.lang.String target, Request baseRequest, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)
      Scope the handler
      • Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle

        addBean, addBean, addEventListener, addManaged, contains, dump, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans, updateBeans
      • Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop, toString
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface org.eclipse.jetty.util.component.Container

        getCachedBeans, getEventListeners
      • Methods inherited from interface org.eclipse.jetty.util.component.Dumpable

        dumpSelf
      • Methods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer

        isDumpable
      • Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle

        addEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
    • Constructor Detail

      • ScopedHandler

        public ScopedHandler()
    • Method Detail

      • doStart

        protected void doStart()
                        throws java.lang.Exception
        Overrides:
        doStart in class AbstractHandler
        Throws:
        java.lang.Exception
      • handle

        public final void handle​(java.lang.String target,
                                 Request baseRequest,
                                 jakarta.servlet.http.HttpServletRequest request,
                                 jakarta.servlet.http.HttpServletResponse response)
                          throws java.io.IOException,
                                 jakarta.servlet.ServletException
        Description copied from interface: Handler
        Handle a request.
        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
        jakarta.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,
                            jakarta.servlet.http.HttpServletRequest request,
                            jakarta.servlet.http.HttpServletResponse response)
                     throws java.io.IOException,
                            jakarta.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
        jakarta.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,
                                    jakarta.servlet.http.HttpServletRequest request,
                                    jakarta.servlet.http.HttpServletResponse response)
                             throws java.io.IOException,
                                    jakarta.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
        jakarta.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,
                                      jakarta.servlet.http.HttpServletRequest request,
                                      jakarta.servlet.http.HttpServletResponse response)
                               throws java.io.IOException,
                                      jakarta.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
        jakarta.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,
                                     jakarta.servlet.http.HttpServletRequest request,
                                     jakarta.servlet.http.HttpServletResponse response)
                              throws java.io.IOException,
                                     jakarta.servlet.ServletException
        Throws:
        java.io.IOException
        jakarta.servlet.ServletException