org.eclipse.jetty.server.handler

## Class ScopedHandler

- java.lang.Object
- - org.eclipse.jetty.util.component.AbstractLifeCycle
  - - org.eclipse.jetty.util.component.AggregateLifeCycle
    - - org.eclipse.jetty.server.handler.AbstractHandler
      - - org.eclipse.jetty.server.handler.AbstractHandlerContainer
        - - org.eclipse.jetty.server.handler.HandlerWrapper
          - - org.eclipse.jetty.server.handler.ScopedHandler

- All Implemented Interfaces:
    Handler, HandlerContainer, Destroyable, Dumpable, 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();
                   }
               }
           }

- - ### Nested Class Summary

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

      `AbstractLifeCycle.AbstractLifeCycleListener`

    - ### Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle

      `LifeCycle.Listener`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected ScopedHandler` | `_nextScope`
    `protected ScopedHandler` | `_outerScope`

    - ### Fields inherited from class org.eclipse.jetty.server.handler.HandlerWrapper

      `_handler`

    - ### Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

      `_listeners, FAILED, RUNNING, STARTED, STARTING, STOPPED, STOPPING`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ScopedHandler()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract void` | `doHandle(String target, Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`
    `abstract void` | `doScope(String target, Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`
    `protected void` | `doStart()` Start the managed lifecycle beans in the order they were added.
    `void` | `handle(String target, Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)` Handle a request.
    `protected boolean` | `never()`
    `void` | `nextHandle(String target, Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`
    `void` | `nextScope(String target, Request baseRequest, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`

    - ### Methods inherited from class org.eclipse.jetty.server.handler.HandlerWrapper

      `destroy, doStop, expandChildren, getHandler, getHandlers, getNestedHandlerByClass, setHandler, setServer`

    - ### Methods inherited from class org.eclipse.jetty.server.handler.AbstractHandlerContainer

      `dump, expandHandler, findContainerOf, getChildHandlerByClass, getChildHandlers, getChildHandlersByClass`

    - ### Methods inherited from class org.eclipse.jetty.server.handler.AbstractHandler

      `dumpThis, getServer`

    - ### Methods inherited from class org.eclipse.jetty.util.component.AggregateLifeCycle

      `addBean, addBean, contains, dump, dump, dump, dump, dumpObject, dumpStdErr, getBean, getBeans, getBeans, isManaged, manage, removeBean, removeBeans, unmanage`

    - ### Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

      `addLifeCycleListener, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle

      `addLifeCycleListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop`

- - ### Field Detail

    - #### _outerScope

          protected ScopedHandler _outerScope

    - #### _nextScope

          protected ScopedHandler _nextScope

  - ### Constructor Detail

    - #### ScopedHandler

          public ScopedHandler()

  - ### Method Detail

    - #### doStart

          protected void doStart()
                          throws Exception

      Description copied from class: `AggregateLifeCycle`
      Start the managed lifecycle beans in the order they were added.
      Overrides:
        `doStart` in class `HandlerWrapper`
      Throws:
        `Exception`
      See Also:
        `HandlerWrapper.doStart()`

    - #### handle

          public final void handle(String target,
                    Request baseRequest,
                    javax.servlet.http.HttpServletRequest request,
                    javax.servlet.http.HttpServletResponse response)
                            throws IOException,
                                   javax.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 `AbstractHttpConnection.getCurrentConnection()` method can be used access the Request object if required.
        `response` - The response as the `Response` object or a wrapper of that request. The `AbstractHttpConnection.getCurrentConnection()` method can be used access the Response object if required.
      Throws:
        `IOException`
        `javax.servlet.ServletException`

    - #### doScope

          public abstract void doScope(String target,
                     Request baseRequest,
                     javax.servlet.http.HttpServletRequest request,
                     javax.servlet.http.HttpServletResponse response)
                                throws IOException,
                                       javax.servlet.ServletException

      Throws:
        `IOException`
        `javax.servlet.ServletException`

    - #### nextScope

          public final void nextScope(String target,
                       Request baseRequest,
                       javax.servlet.http.HttpServletRequest request,
                       javax.servlet.http.HttpServletResponse response)
                               throws IOException,
                                      javax.servlet.ServletException

      Throws:
        `IOException`
        `javax.servlet.ServletException`

    - #### doHandle

          public abstract void doHandle(String target,
                      Request baseRequest,
                      javax.servlet.http.HttpServletRequest request,
                      javax.servlet.http.HttpServletResponse response)
                                 throws IOException,
                                        javax.servlet.ServletException

      Throws:
        `IOException`
        `javax.servlet.ServletException`

    - #### nextHandle

          public final void nextHandle(String target,
                        Request baseRequest,
                        javax.servlet.http.HttpServletRequest request,
                        javax.servlet.http.HttpServletResponse response)
                                throws IOException,
                                       javax.servlet.ServletException

      Throws:
        `IOException`
        `javax.servlet.ServletException`

    - #### never

          protected boolean never()

Copyright © 1995-2013 Mort Bay Consulting. All Rights Reserved.