org.eclipse.jetty.server.handler
Class ScopedHandler

java.lang.Object
  extended by org.eclipse.jetty.util.component.AbstractLifeCycle
      extended by org.eclipse.jetty.util.component.AggregateLifeCycle
          extended by org.eclipse.jetty.server.handler.AbstractHandler
              extended by org.eclipse.jetty.server.handler.AbstractHandlerContainer
                  extended by org.eclipse.jetty.server.handler.HandlerWrapper
                      extended by 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
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
ScopedHandler()
           
 
Method Summary
abstract  void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
           
abstract  void doScope(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
           
protected  void doStart()
           
 void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
          Handle a request.
protected  boolean never()
           
 void nextHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
           
 void nextScope(String target, Request baseRequest, HttpServletRequest request, 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, 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, dump, dump, dump, dump, dumpStdErr, getBean, getBeans, getBeans, removeBean, removeBeans
 
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
Overrides:
doStart in class HandlerWrapper
Throws:
Exception
See Also:
HandlerWrapper.doStart()

handle

public final void handle(String target,
                         Request baseRequest,
                         HttpServletRequest request,
                         HttpServletResponse response)
                  throws IOException,
                         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() 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() method can be used access the Response object if required.
Throws:
IOException
ServletException

doScope

public abstract void doScope(String target,
                             Request baseRequest,
                             HttpServletRequest request,
                             HttpServletResponse response)
                      throws IOException,
                             ServletException
Throws:
IOException
ServletException

nextScope

public final void nextScope(String target,
                            Request baseRequest,
                            HttpServletRequest request,
                            HttpServletResponse response)
                     throws IOException,
                            ServletException
Throws:
IOException
ServletException

doHandle

public abstract void doHandle(String target,
                              Request baseRequest,
                              HttpServletRequest request,
                              HttpServletResponse response)
                       throws IOException,
                              ServletException
Throws:
IOException
ServletException

nextHandle

public final void nextHandle(String target,
                             Request baseRequest,
                             HttpServletRequest request,
                             HttpServletResponse response)
                      throws IOException,
                             ServletException
Throws:
IOException
ServletException

never

protected boolean never()


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