Class HandlerWrapper

All Implemented Interfaces:
Handler, HandlerContainer, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle
Direct Known Subclasses:
AsyncDelayHandler, BufferedResponseHandler, ConnectHandler, DebugHandler, GzipHandler, IdleTimeoutHandler, InetAccessHandler, RequestLogHandler, ResourceHandler, RewriteHandler, ScopedHandler, SecuredRedirectHandler, SecurityHandler, Server, ShutdownHandler, StatisticsHandler, ThreadLimitHandler, WebSocketUpgradeHandler

@ManagedObject("Handler wrapping another Handler") public class HandlerWrapper extends AbstractHandlerContainer
A HandlerWrapper acts as a Handler but delegates the handle method and life cycle events to a delegate. This is primarily used to implement the Decorator pattern.
  • Field Details

    • _handler

      protected Handler _handler
  • Constructor Details

    • HandlerWrapper

      public HandlerWrapper()
  • Method Details

    • getHandler

      @ManagedAttribute(value="Wrapped Handler", readonly=true) public Handler getHandler()
      Returns:
      Returns the handlers.
    • getHandlers

      public Handler[] getHandlers()
      Returns:
      Returns the handlers.
    • setHandler

      public void setHandler(Handler handler)
      Parameters:
      handler - Set the Handler which should be wrapped.
    • insertHandler

      public void insertHandler(HandlerWrapper wrapper)
      Replace the current handler with another HandlerWrapper linked to the current handler.

      This is equivalent to:

         wrapper.setHandler(getHandler());
         setHandler(wrapper);
       
      Parameters:
      wrapper - the wrapper to insert
    • handle

      public void handle(String target, Request baseRequest, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws IOException, jakarta.servlet.ServletException
      Description copied from interface: Handler
      Handle a request.
      Specified by:
      handle in interface Handler
      Specified by:
      handle in class AbstractHandler
      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:
      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
    • expandChildren

      protected void expandChildren(List<Handler> list, Class<?> byClass)
      Overrides:
      expandChildren in class AbstractHandlerContainer
    • destroy

      public void destroy()
      Description copied from class: ContainerLifeCycle
      Destroys the managed Destroyable beans in the reverse order they were added.
      Specified by:
      destroy in interface Destroyable
      Specified by:
      destroy in interface Handler
      Overrides:
      destroy in class AbstractHandler