package org.jboss.web.tomcat.security;
import java.io.IOException;
import java.security.CodeSource;
import javax.security.jacc.PolicyContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ValveBase;
import org.jboss.logging.Logger;
public class JaccContextValve extends ValveBase
{
private static Logger log = Logger.getLogger(JaccContextValve.class);
public static ThreadLocal activeCS = new ThreadLocal();
private String contextID;
private CodeSource warCS;
private boolean trace;
public JaccContextValve(String contextID, CodeSource cs)
{
this.contextID = contextID;
this.warCS = cs;
this.trace = log.isTraceEnabled();
}
public void invoke(Request request, Response response)
throws IOException, ServletException
{
activeCS.set(warCS);
HttpServletRequest httpRequest = (HttpServletRequest) request.getRequest();
try
{
PolicyContext.setContextID(contextID);
HttpServletRequestPolicyContextHandler.setRequest(httpRequest);
getNext().invoke(request, response);
}
finally
{
activeCS.set(null);
}
}
}