1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.ibatis.struts;
18
19 import com.ibatis.struts.httpmap.*;
20
21 import javax.servlet.http.HttpServletRequest;
22 import javax.servlet.http.HttpServletResponse;
23 import java.util.Map;
24 import java.util.List;
25 import java.util.ArrayList;
26
27 /***
28 * The ActionContext class gives simplified, thread-safe access to
29 * the request and response, as well as form parameters, request
30 * attributes, session attributes, application attributes. Much
31 * of this can be accopmplished without using the Struts or even
32 * the Servlet API, therefore isolating your application from
33 * presentation framework details.
34 * <p/>
35 * This class also provides facilities for simpler message and error
36 * message handling. Although not as powerful as that provided by
37 * Struts, it is great for simple applications that don't require
38 * internationalization or the flexibility of resource bundles.
39 * <p/>
40 * <i>Note: A more complete error and message handling API will be implemented.</i>
41 * <p/>
42 * Date: Mar 9, 2004 9:57:39 PM
43 *
44 * @author Clinton Begin
45 */
46 public class ActionContext {
47
48 private static final ThreadLocal localContext = new ThreadLocal();
49
50 private HttpServletRequest request;
51 private HttpServletResponse response;
52
53 private Map cookieMap;
54 private Map parameterMap;
55 private Map requestMap;
56 private Map sessionMap;
57 private Map applicationMap;
58
59 private ActionContext() {
60 }
61
62 protected static void initialize(HttpServletRequest request, HttpServletResponse response) {
63 ActionContext ctx = getActionContext();
64 ctx.request = request;
65 ctx.response = response;
66 ctx.cookieMap = null;
67 ctx.parameterMap = null;
68 ctx.requestMap = null;
69 ctx.sessionMap = null;
70 ctx.applicationMap = null;
71 }
72
73 public void setSimpleMessage(String message) {
74 getRequestMap().put("message", message);
75 }
76
77 public void addSimpleError(String message) {
78 List errors = (List) getRequestMap().get("errors");
79 if (errors == null) {
80 errors = new ArrayList();
81 getRequestMap().put("errors", errors);
82 }
83 errors.add(message);
84 }
85
86 public boolean isSimpleErrorsExist () {
87 List errors = (List) getRequestMap().get("errors");
88 return errors != null && errors.size() > 0;
89 }
90
91 public Map getCookieMap() {
92 if (cookieMap == null) {
93 cookieMap = new CookieMap(request);
94 }
95 return cookieMap;
96 }
97
98 public Map getParameterMap() {
99 if (parameterMap == null) {
100 parameterMap = new ParameterMap(request);
101 }
102 return parameterMap;
103 }
104
105 public Map getRequestMap() {
106 if (requestMap == null) {
107 requestMap = new RequestMap(request);
108 }
109 return requestMap;
110 }
111
112 public Map getSessionMap() {
113 if (sessionMap == null) {
114 sessionMap = new SessionMap(request);
115 }
116 return sessionMap;
117 }
118
119 public Map getApplicationMap() {
120 if (applicationMap == null) {
121 applicationMap = new ApplicationMap(request);
122 }
123 return applicationMap;
124 }
125
126 public HttpServletRequest getRequest() {
127 return request;
128 }
129
130 public HttpServletResponse getResponse() {
131 return response;
132 }
133
134 public static ActionContext getActionContext() {
135 ActionContext ctx = (ActionContext) localContext.get();
136 if (ctx == null) {
137 ctx = new ActionContext();
138 localContext.set(ctx);
139 }
140 return ctx;
141 }
142 }