1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts.faces.util;
23
24
25 import java.util.Locale;
26
27 import javax.faces.context.ExternalContext;
28 import javax.faces.context.FacesContext;
29 import javax.faces.event.ActionEvent;
30
31 import javax.sql.DataSource;
32
33 import org.apache.struts.Globals;
34 import org.apache.struts.action.ActionMapping;
35 import org.apache.struts.action.ActionMessages;
36 import org.apache.struts.action.ActionServlet;
37 import org.apache.struts.config.ModuleConfig;
38 import org.apache.struts.faces.Constants;
39 import org.apache.struts.util.MessageResources;
40
41
42 /**
43 * <p>Context bean providing accessors for the Struts related request,
44 * session, and application scope objects reated to this request. Note
45 * that this bean's methods will trigger exceptions unless there is a
46 * <code>FacesContext</code> instance for this request.</p>
47 */
48
49 public class StrutsContext {
50
51
52
53
54
55 /**
56 * <p>The <code>FacesContext</code> for the current request.</p>
57 */
58 private FacesContext fcontext =
59 FacesContext.getCurrentInstance();
60
61
62 /**
63 * <p>The <code>ExternalContext</code> for the current request.</p>
64 */
65 private ExternalContext econtext =
66 fcontext.getExternalContext();
67
68
69
70
71
72 /**
73 * <p>Return the <code>ActionEvent</code> for the current request
74 * (if any).</p>
75 */
76 public ActionEvent getActionEvent() {
77
78 return ((ActionEvent) econtext.getRequestMap().
79 get(Constants.ACTION_EVENT_KEY));
80
81 }
82
83
84 /**
85 * <p>Return the <code>ActionMapping</code> for the current
86 * request (if any).</p>
87 */
88 public ActionMapping getActionMapping() {
89
90 return ((ActionMapping) econtext.getRequestMap().
91 get(Globals.MAPPING_KEY));
92
93 }
94
95
96 /**
97 * <p>Return the <code>ActionMessages</code> instance containing
98 * application error messages for this request (if any).</p>
99 */
100 public ActionMessages getActionMessages() {
101
102 return ((ActionMessages) econtext.getRequestMap().
103 get(Globals.MESSAGE_KEY));
104
105 }
106
107
108 /**
109 * <p>Return the <code>ActionServlet</code> instance for this
110 * web application.</p>
111 */
112 public ActionServlet getActionServlet() {
113
114 return ((ActionServlet) econtext.getApplicationMap().
115 get(Globals.ACTION_SERVLET_KEY));
116
117 }
118
119
120 /**
121 * <p>Return <code>true</code> if a Boolean true value has been stored
122 * in the request attribute indicating that this request has been
123 * cancelled.</p>
124 */
125 public boolean isCancelled() {
126
127 Object value = econtext.getRequestMap().get(Globals.CANCEL_KEY);
128 if (value instanceof Boolean) {
129 return (((Boolean) value).booleanValue());
130 } else {
131 return (false);
132 }
133
134 }
135
136
137
138 /**
139 * <p>Return the exception that caused one of the Struts custom tags
140 * to report a JspException (if any).</p>
141 */
142 public Throwable getException() {
143
144 return ((Throwable) econtext.getRequestMap().
145 get(Globals.EXCEPTION_KEY));
146
147 }
148
149
150 /**
151 * <p>Return the <code>ExternalContext</code> for the current request.</p>
152 */
153 public ExternalContext getExternalContext() {
154
155 return (econtext);
156
157 }
158
159
160 /**
161 * <p>Return the <code>FacesContext</code> for the current request.</p>
162 */
163 public FacesContext getFacesContext() {
164
165 return (fcontext);
166
167 }
168
169
170 /**
171 * <p>Return the <code>Locale</code> stored in the current user's
172 * session (if any) for Struts based localization.</p>
173 */
174 public Locale getLocale() {
175
176 if (econtext.getSession(false) != null) {
177 return ((Locale) econtext.getSessionMap().
178 get(Globals.LOCALE_KEY));
179 } else {
180 return (null);
181 }
182
183 }
184
185
186 /**
187 * <p>Return the <code>MessageResources</code> instance for the
188 * application module that is processing this request (if any).</p>
189 */
190 public MessageResources getMessageResources() {
191
192 return ((MessageResources) econtext.getRequestMap().
193 get(Globals.MESSAGES_KEY));
194
195 }
196
197
198 /**
199 * <p>Return the <code>ModuleConfig</code> for the application module
200 * to which this request has been assigned (if any).</p>
201 */
202 public ModuleConfig getModuleConfig() {
203
204 return ((ModuleConfig) econtext.getRequestMap().
205 get(Globals.MODULE_KEY));
206
207 }
208
209
210 }