1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.struts.chain.contexts;
22
23 import org.apache.commons.chain.web.servlet.ServletWebContext;
24 import org.apache.struts.Globals;
25 import org.apache.struts.action.ActionMessages;
26 import org.apache.struts.action.ActionServlet;
27 import org.apache.struts.chain.Constants;
28 import org.apache.struts.config.ActionConfig;
29 import org.apache.struts.util.MessageResources;
30
31 import javax.servlet.ServletContext;
32 import javax.servlet.http.HttpServletRequest;
33 import javax.servlet.http.HttpServletResponse;
34
35 /**
36 * <p> Implement ActionContext interface while making Servlet API-specific
37 * values available. </p>
38 */
39 public class ServletActionContext extends WebActionContext {
40 /**
41 * <p> Instantiate this composite by wrapping a ServletWebContext. </p>
42 *
43 * @param context The ServletWebContext to wrap
44 */
45 public ServletActionContext(ServletWebContext context) {
46 super(context);
47 }
48
49 /**
50 * <p> Instantiate this Context for a given ServletContext,
51 * HttpServletRequest, and HttpServletResponse. </p>
52 *
53 * @param context The instant ServletContext
54 * @param request The instant HttpServletRequest
55 * @param response The instant HttpServletResponse
56 */
57 public ServletActionContext(ServletContext context,
58 HttpServletRequest request, HttpServletResponse response) {
59 this(new ServletWebContext(context, request, response));
60 }
61
62 /**
63 * <p> Provide the ServletWebContext for this composite. </p>
64 *
65 * @return Our ServletWebContext
66 */
67 protected ServletWebContext servletWebContext() {
68 return (ServletWebContext) this.getBaseContext();
69 }
70
71 public void release() {
72 this.servletWebContext().release();
73 super.release();
74 }
75
76
77
78
79
80 /**
81 * <p> Return the ServletContext for this context. </p>
82 *
83 * @return Our ServletContext
84 */
85 public ServletContext getContext() {
86 return servletWebContext().getContext();
87 }
88
89 /**
90 * <p> Return the HttpServletRequest for this context. </p>
91 *
92 * @return Our HttpServletRequest
93 */
94 public HttpServletRequest getRequest() {
95 return servletWebContext().getRequest();
96 }
97
98 /**
99 * <p> Return the HttpServletResponse for this context. </p>
100 *
101 * @return Our HttpServletResponse
102 */
103 public HttpServletResponse getResponse() {
104 return servletWebContext().getResponse();
105 }
106
107 /**
108 * <p> Return the ActionServlet for this context. </p>
109 *
110 * @return Our ActionServlet
111 */
112 public ActionServlet getActionServlet() {
113 return (ActionServlet) this.get(Constants.ACTION_SERVLET_KEY);
114 }
115
116 /**
117 * <p> Set the ActionServlet instance for this context. </p>
118 *
119 * @param servlet Our ActionServlet instance
120 */
121 public void setActionServlet(ActionServlet servlet) {
122 this.put(Constants.ACTION_SERVLET_KEY, servlet);
123 }
124
125
126
127
128 public void setActionConfig(ActionConfig actionConfig) {
129 super.setActionConfig(actionConfig);
130 this.getRequestScope().put(Globals.MAPPING_KEY, actionConfig);
131
132
133 }
134
135 public MessageResources getMessageResources() {
136 return ((MessageResources) getRequest().getAttribute(Globals.MESSAGES_KEY));
137 }
138
139
140
141 public MessageResources getMessageResources(String key) {
142
143 ServletContext context = getActionServlet().getServletContext();
144
145
146 return (MessageResources) context.getAttribute(key
147 + getModuleConfig().getPrefix());
148 }
149
150 public void setMessageResources(MessageResources resources) {
151 super.setMessageResources(resources);
152 this.getRequest().setAttribute(Globals.MESSAGES_KEY, resources);
153 }
154
155 /**
156 * <p> Store the mesasage resources for the current module under the given
157 * request attribute key. </p>
158 *
159 * @param key Request attribute key
160 * @param resources Message resouces to store
161 */
162 public void setMessageResources(String key, MessageResources resources) {
163 this.getRequest().setAttribute(key + getModuleConfig().getPrefix(),
164 resources);
165 }
166
167
168
169
170 public void saveErrors(ActionMessages errors) {
171
172 if ((errors == null) || errors.isEmpty()) {
173 getRequest().removeAttribute(Globals.ERROR_KEY);
174
175 return;
176 }
177
178
179 getRequest().setAttribute(Globals.ERROR_KEY, errors);
180 }
181
182 public void saveMessages(ActionMessages messages) {
183 if ((messages == null) || messages.isEmpty()) {
184 getRequest().removeAttribute(Globals.MESSAGE_KEY);
185
186 return;
187 }
188
189 getRequest().setAttribute(Globals.MESSAGE_KEY, messages);
190 }
191
192 public void addMessages(ActionMessages messages) {
193 if (messages == null) {
194 return;
195 }
196
197 ActionMessages requestMessages = getMessages();
198
199 if (requestMessages == null) {
200 requestMessages = new ActionMessages();
201 }
202
203 requestMessages.add(messages);
204 saveMessages(requestMessages);
205 }
206
207 public void addErrors(ActionMessages errors) {
208 if (errors == null) {
209 return;
210 }
211
212 ActionMessages requestErrors = getErrors();
213
214 if (requestErrors == null) {
215 requestErrors = new ActionMessages();
216 }
217
218 requestErrors.add(errors);
219 saveErrors(requestErrors);
220 }
221
222 public ActionMessages getErrors() {
223 return (ActionMessages) this.getRequest().getAttribute(Globals.ERROR_KEY);
224 }
225
226 public ActionMessages getMessages() {
227 return (ActionMessages) this.getRequest().getAttribute(Globals.MESSAGE_KEY);
228 }
229
230
231
232
233
234
235
236 public void saveToken() {
237 token.saveToken(getRequest());
238 }
239
240 public String generateToken() {
241 return token.generateToken(getRequest());
242 }
243
244 public boolean isTokenValid(boolean reset) {
245 return token.isTokenValid(getRequest(), reset);
246 }
247
248 public void resetToken() {
249 token.resetToken(getRequest());
250 }
251 }