001 /**
002 *
003 * Copyright 2006 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.jetty;
019
020 import java.io.IOException;
021
022 import javax.servlet.ServletException;
023 import javax.servlet.UnavailableException;
024 import javax.servlet.http.HttpServletRequest;
025 import javax.servlet.http.HttpServletResponse;
026
027 import org.apache.geronimo.security.Callers;
028 import org.apache.geronimo.security.ContextManager;
029 import org.mortbay.jetty.servlet.ServletHolder;
030 import org.mortbay.jetty.servlet.WebApplicationHandler;
031
032 /**
033 * @version $Rev: 437254 $ $Date: 2006-08-26 17:07:55 -0700 (Sat, 26 Aug 2006) $
034 */
035 public class JettyWebApplicationHandler extends WebApplicationHandler {
036
037 /**
038 * Wrap the dispatch call to prevent leaking Subject back into the environemnt.
039 *
040 * @param pathInContext
041 * @param request
042 * @param response
043 * @param servletHolder
044 * @param type
045 * @throws ServletException
046 * @throws UnavailableException
047 * @throws IOException
048 */
049 protected void dispatch(String pathInContext,
050 HttpServletRequest request,
051 HttpServletResponse response,
052 ServletHolder servletHolder,
053 int type)
054 throws ServletException, UnavailableException, IOException
055 {
056 Callers oldCallers = ContextManager.getCallers();
057 try {
058 super.dispatch(pathInContext, request, response, servletHolder, type);
059 } finally {
060 ContextManager.popCallers(oldCallers);
061 }
062
063 }
064 }