JPolicyContextHandler.java

00001 
00027 package org.objectweb.jonas.security.jacc;
00028 
00029 import javax.security.jacc.PolicyContextException;
00030 import javax.security.jacc.PolicyContextHandler;
00031 
00032 import org.objectweb.jonas.common.Log;
00033 
00034 import org.objectweb.util.monolog.api.BasicLevel;
00035 import org.objectweb.util.monolog.api.Logger;
00036 
00043 public class JPolicyContextHandler implements PolicyContextHandler {
00044 
00049     private static final String CONTAINER_SUBJECT = "javax.security.auth.Subject.container";
00050 
00055     private static final String SOAP_MESSAGE = "javax.xml.soap.SOAPMessage";
00056 
00061     private static final String HTTP_SERVLET_REQUEST = "javax.servlet.http.HttpServletRequest";
00062 
00067     private static final String ENTERPRISE_BEAN = "javax.ejb.EnterpriseBean";
00068 
00073     private static final String EJB_ARGUMENTS = "javax.ejb.arguments";
00074 
00078     private static final String[] SUPPORTED_KEYS = new String[] {CONTAINER_SUBJECT, SOAP_MESSAGE, HTTP_SERVLET_REQUEST,
00079             ENTERPRISE_BEAN, EJB_ARGUMENTS};
00080 
00084     private static Logger logger = Log.getLogger(Log.JONAS_JACC_SECURITY_PREFIX);
00085 
00089     public JPolicyContextHandler() {
00090         super();
00091 
00092     }
00093 
00100     public boolean supports(String key) throws PolicyContextException {
00101         for (int k = 0; k < SUPPORTED_KEYS.length; k++) {
00102             if (key.equals(SUPPORTED_KEYS[k])) {
00103                 return true;
00104             }
00105         }
00106         return false;
00107     }
00108 
00113     public String[] getKeys() throws PolicyContextException {
00114         return SUPPORTED_KEYS;
00115     }
00116 
00125     public Object getContext(String key, Object data) throws PolicyContextException {
00126 
00127         if (logger.isLoggable(BasicLevel.DEBUG)) {
00128             logger.log(BasicLevel.DEBUG, "Asking key" + key);
00129         }
00130 
00131         // Handle only JOnAS HandleData
00132         if (data == null || !(data instanceof JPolicyContextHandlerData)) {
00133             logger.log(BasicLevel.WARN, "No data object or Data object not instance of JPolicyContextHandlerData");
00134             return null;
00135         }
00136 
00137         Object contextObject = null;
00138         JPolicyContextHandlerData jPolicyContextHandlerData = (JPolicyContextHandlerData) data;
00139 
00140         if (key.equals(HTTP_SERVLET_REQUEST)) {
00141             if (logger.isLoggable(BasicLevel.DEBUG)) {
00142                 logger.log(BasicLevel.DEBUG, "Key == '" + HTTP_SERVLET_REQUEST + "'");
00143             }
00144             contextObject = jPolicyContextHandlerData.getHttpServletRequest();
00145         } else if (key.equals(EJB_ARGUMENTS)) {
00146             if (logger.isLoggable(BasicLevel.DEBUG)) {
00147                 logger.log(BasicLevel.DEBUG, "Key == '" + EJB_ARGUMENTS + "'");
00148             }
00149             contextObject = jPolicyContextHandlerData.getEjbArguments();
00150         } else if (key.equals(CONTAINER_SUBJECT)) {
00151             if (logger.isLoggable(BasicLevel.DEBUG)) {
00152                 logger.log(BasicLevel.DEBUG, "Key == '" + CONTAINER_SUBJECT + "'");
00153             }
00154             contextObject = jPolicyContextHandlerData.getContainerSubject();
00155 
00156         }
00157 
00158         if (logger.isLoggable(BasicLevel.DEBUG)) {
00159             logger.log(BasicLevel.DEBUG, "Returning object '" + contextObject + "' for key '" + key + "'");
00160         }
00161         return contextObject;
00162 
00163     }
00164 
00165 }

Generated on Tue Feb 15 15:05:21 2005 for JOnAS by  doxygen 1.3.9.1