diff options
Diffstat (limited to 'jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java')
-rw-r--r-- | jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java index d5fca99b09..7501d84def 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/AbstractHandler.java @@ -21,7 +21,14 @@ package org.eclipse.jetty.server.handler; import java.io.IOException; +import javax.servlet.DispatcherType; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.util.annotation.ManagedObject; import org.eclipse.jetty.util.component.ContainerLifeCycle; @@ -47,6 +54,31 @@ public abstract class AbstractHandler extends ContainerLifeCycle implements Hand { } + @Override + public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + if (baseRequest.getDispatcherType()==DispatcherType.ERROR) + doError(target,baseRequest,request,response); + else + doHandle(target,baseRequest,request,response); + } + + /* ------------------------------------------------------------ */ + protected void doHandle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + } + + /* ------------------------------------------------------------ */ + protected void doError(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException + { + Object o = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); + int code = (o instanceof Integer)?((Integer)o).intValue():(o!=null?Integer.valueOf(o.toString()):500); + o = request.getAttribute(RequestDispatcher.ERROR_MESSAGE); + String reason = o!=null?o.toString():null; + + response.sendError(code,reason); + } + /* ------------------------------------------------------------ */ /* * @see org.eclipse.thread.LifeCycle#start() |