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
`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
`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()