1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.cms.util;
35
36 import info.magnolia.cms.beans.runtime.Document;
37 import info.magnolia.cms.beans.runtime.MultipartForm;
38 import info.magnolia.context.MgnlContext;
39 import org.apache.commons.lang.StringUtils;
40
41 import javax.servlet.http.HttpServletRequest;
42 import java.io.UnsupportedEncodingException;
43 import java.net.URLDecoder;
44 import java.util.HashMap;
45 import java.util.Map;
46
47
48
49
50
51
52
53 public class RequestFormUtil {
54
55 private MultipartForm form;
56
57 private HttpServletRequest request;
58
59 public RequestFormUtil(HttpServletRequest request) {
60 this(request, MgnlContext.getPostedForm());
61 }
62
63 public RequestFormUtil(HttpServletRequest request, MultipartForm form) {
64 super();
65 this.form = form;
66 this.request = request;
67 }
68
69
70
71
72
73
74 public String getParameter(String name) {
75 return getParameter(this.request, this.form, name);
76 }
77
78 public static String getParameter(HttpServletRequest request, String name) {
79 return getParameter(request, MgnlContext.getPostedForm(), name);
80 }
81
82
83
84
85 public static String getParameter(HttpServletRequest request, MultipartForm from, String name) {
86 String param = null;
87 if (from != null) {
88 param = from.getParameter(name);
89 }
90 if (param == null) {
91 if (request.getMethod().equals("GET")) {
92 param = getURLParameterDecoded(request, name, "UTF8");
93 }
94 else {
95 param = request.getParameter(name);
96 }
97 }
98 return param;
99
100 }
101
102 public String getParameter(String name, String defaultValue) {
103 return getParameter(this.request, this.form, name, defaultValue);
104 }
105
106 public static String getParameter(HttpServletRequest request, String name, String defaultValue) {
107 return getParameter(request, MgnlContext.getPostedForm(), name, defaultValue);
108 }
109
110
111
112
113 public static String getParameter(HttpServletRequest request, MultipartForm from, String name, String defaultValue) {
114 String param = getParameter(request, from, name);
115 if (param == null) {
116 param = defaultValue;
117 }
118 return param;
119 }
120
121
122
123
124
125
126 public static String getURLParameterDecoded(HttpServletRequest request, String name, String charset) {
127 return (String) getURLParametersDecoded(request, charset).get(name);
128 }
129
130
131
132
133
134
135
136 public static Map getURLParametersDecoded(HttpServletRequest request, String charset) {
137
138 String queryString = request.getQueryString();
139 if (queryString != null) {
140 return getURLParametersDecoded(queryString, charset);
141 }
142 return new HashMap();
143 }
144
145
146
147
148
149
150 public static Map getURLParametersDecoded(String queryString, String charset) {
151 Map map = new HashMap();
152 String[] params = queryString.split("&");
153 for (int i = 0; i < params.length; i++) {
154 String name = StringUtils.substringBefore(params[i], "=");
155 String value = StringUtils.substringAfter(params[i], "=");
156 try {
157 value = URLDecoder.decode(value, charset);
158 }
159 catch (UnsupportedEncodingException e) {
160
161 }
162
163 map.put(name, value);
164 }
165 return map;
166 }
167
168 public MultipartForm getForm() {
169 return form;
170 }
171
172
173
174
175
176 public Document getDocument(String name) {
177 return form.getDocument(name);
178 }
179
180
181
182
183
184 public Map getDocuments() {
185 if (form == null) {
186 return new HashMap();
187 }
188
189 return form.getDocuments();
190 }
191
192
193
194
195
196 public Map getParameters() {
197 return getParameters(this.request);
198 }
199
200 public static Map getParameters(HttpServletRequest request) {
201 MultipartForm form = MgnlContext.getPostedForm();
202 if (form == null) {
203
204 if (request.getMethod() == "GET") {
205 return getURLParametersDecoded(request, "UTF8");
206 }
207 return request.getParameterMap();
208 }
209 return form.getParameters();
210 }
211
212
213
214
215
216 public String[] getParameterValues(String name) {
217 if (this.form != null) {
218 return this.form.getParameterValues(name);
219 }
220 return request.getParameterValues(name);
221 }
222
223
224
225
226
227 public void removeParameter(String name) {
228 form.removeParameter(name);
229 }
230
231 }