package org.apache.struts.beanaction; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.beanaction.httpmap.ApplicationMap; import org.apache.struts.beanaction.httpmap.CookieMap; import org.apache.struts.beanaction.httpmap.ParameterMap; import org.apache.struts.beanaction.httpmap.RequestMap; import org.apache.struts.beanaction.httpmap.SessionMap; /** * The ActionContext class gives simplified, thread-safe access to * <p/> * the request and response, as well as form parameters, request * <p/> * attributes, session attributes, application attributes. Much * <p/> * of this can be accopmplished without using the Struts or even * <p/> * the Servlet API, therefore isolating your application from * <p/> * presentation framework details. * <p/> * <p/> * <p/> * This class also provides facilities for simpler message and error * <p/> * message handling. Although not as powerful as that provided by * <p/> * Struts, it is great for simple applications that don't require * <p/> * internationalization or the flexibility of resource bundles. * <p/> * <p/> * <p/> * <i>Note: A more complete error and message handling API will be implemented.</i> * <p/> * <p/> * <p/> * Date: Mar 9, 2004 9:57:39 PM * * @author Clinton Begin */ public class ActionContext { private static final ThreadLocal localContext = new ThreadLocal(); private HttpServletRequest request; private HttpServletResponse response; private Map cookieMap; private Map parameterMap; private Map requestMap; private Map sessionMap; private Map applicationMap; public ActionContext() { cookieMap = new HashMap(); parameterMap = new HashMap(); requestMap = new HashMap(); sessionMap = new HashMap(); applicationMap = new HashMap(); } static void initCurrentContext(HttpServletRequest request, HttpServletResponse response) { ActionContext ctx = getActionContext(); ctx.request = request; ctx.response = response; ctx.cookieMap = null; ctx.parameterMap = null; ctx.requestMap = null; ctx.sessionMap = null; ctx.applicationMap = null; } public Map getCookieMap() { if (cookieMap == null) { cookieMap = new CookieMap(request); } return cookieMap; } public Map getParameterMap() { if (parameterMap == null) { parameterMap = new ParameterMap(request); } return parameterMap; } public Map getRequestMap() { if (requestMap == null) { requestMap = new RequestMap(request); } return requestMap; } public Map getSessionMap() { if (sessionMap == null) { sessionMap = new SessionMap(request); } return sessionMap; } public Map getApplicationMap() { if (applicationMap == null) { applicationMap = new ApplicationMap(request); } return applicationMap; } public HttpServletRequest getRequest() { return request; } public HttpServletResponse getResponse() { return response; } public static ActionContext getActionContext() { ActionContext ctx = (ActionContext) localContext.get(); if (ctx == null) { ctx = new ActionContext(); localContext.set(ctx); } return ctx; } }