001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.commons.chain.web.servlet;
018
019
020 import org.apache.commons.chain.web.MockEnumeration;
021 import org.apache.commons.chain.web.MockPrincipal;
022
023 import javax.servlet.RequestDispatcher;
024 import javax.servlet.ServletInputStream;
025 import javax.servlet.http.Cookie;
026 import javax.servlet.http.HttpServletRequest;
027 import javax.servlet.http.HttpSession;
028 import java.io.BufferedReader;
029 import java.security.Principal;
030 import java.util.*;
031
032
033 // Mock Object for HttpServletRequest (Version 2.3)
034 public class MockHttpServletRequest implements HttpServletRequest {
035
036
037 public MockHttpServletRequest() {
038 super();
039 }
040
041
042 public MockHttpServletRequest(HttpSession session) {
043 super();
044 setHttpSession(session);
045 }
046
047
048 public MockHttpServletRequest(String contextPath, String servletPath,
049 String pathInfo, String queryString) {
050 super();
051 setPathElements(contextPath, servletPath, pathInfo, queryString);
052 }
053
054
055
056 public MockHttpServletRequest(String contextPath, String servletPath,
057 String pathInfo, String queryString,
058 HttpSession session) {
059 super();
060 setPathElements(contextPath, servletPath, pathInfo, queryString);
061 setHttpSession(session);
062 }
063
064
065
066 protected HashMap attributes = new HashMap();
067 protected String contextPath = null;
068 protected HashMap headers = new HashMap();
069 protected Cookie[] cookies = new Cookie[0];
070 protected Locale locale = null;
071 protected HashMap parameters = new HashMap();
072 protected String pathInfo = null;
073 protected Principal principal = null;
074 protected String queryString = null;
075 protected String servletPath = null;
076 protected HttpSession session = null;
077
078
079 // --------------------------------------------------------- Public Methods
080
081
082 public void addHeader(String name, String value) {
083 String values[] = (String[]) headers.get(name);
084 if (values == null) {
085 String results[] = new String[] { value };
086 headers.put(name, results);
087 return;
088 }
089 String results[] = new String[values.length + 1];
090 System.arraycopy(values, 0, results, 0, values.length);
091 results[values.length] = value;
092 headers.put(name, results);
093 }
094
095
096 public void addParameter(String name, String value) {
097 String values[] = (String[]) parameters.get(name);
098 if (values == null) {
099 String results[] = new String[] { value };
100 parameters.put(name, results);
101 return;
102 }
103 String results[] = new String[values.length + 1];
104 System.arraycopy(values, 0, results, 0, values.length);
105 results[values.length] = value;
106 parameters.put(name, results);
107 }
108
109 public void addCookie(String name, String value) {
110 addCookie(new Cookie(name, value));
111 }
112
113 public void addCookie(Cookie cookie) {
114 Cookie[] newValues = new Cookie[cookies.length + 1];
115 System.arraycopy(cookies, 0, newValues, 0, cookies.length);
116 cookies = newValues;
117 cookies[cookies.length - 1] = cookie;
118 }
119
120
121 public void setHttpSession(HttpSession session) {
122 this.session = session;
123 }
124
125
126 public void setLocale(Locale locale) {
127 this.locale = locale;
128 }
129
130
131 public void setPathElements(String contextPath, String servletPath,
132 String pathInfo, String queryString) {
133
134 this.contextPath = contextPath;
135 this.servletPath = servletPath;
136 this.pathInfo = pathInfo;
137 this.queryString = queryString;
138
139 }
140
141
142 public void setUserPrincipal(Principal principal) {
143 this.principal = principal;
144 }
145
146
147
148 // --------------------------------------------- HttpServletRequest Methods
149
150
151 public String getAuthType() {
152 throw new UnsupportedOperationException();
153 }
154
155
156 public String getContextPath() {
157 return (contextPath);
158 }
159
160
161 public Cookie[] getCookies() {
162 return cookies;
163 }
164
165
166 public long getDateHeader(String name) {
167 throw new UnsupportedOperationException();
168 }
169
170
171 public String getHeader(String name) {
172 String values[] = (String[]) headers.get(name);
173 if (values != null) {
174 return (values[0]);
175 } else {
176 return (null);
177 }
178 }
179
180
181 public Enumeration getHeaderNames() {
182 return (new MockEnumeration(headers.keySet().iterator()));
183 }
184
185
186 public Enumeration getHeaders(String name) {
187 String headers[] = (String[]) this.headers.get(name);
188 if (headers == null) {
189 headers = new String[0];
190 }
191 List list = new ArrayList();
192 for (int i = 0; i < headers.length; i++) {
193 list.add(headers[i]);
194 }
195 return (new MockEnumeration(list.iterator()));
196 }
197
198
199 public int getIntHeader(String name) {
200 throw new UnsupportedOperationException();
201 }
202
203
204 public String getMethod() {
205 throw new UnsupportedOperationException();
206 }
207
208
209 public String getPathInfo() {
210 return (pathInfo);
211 }
212
213
214 public String getPathTranslated() {
215 throw new UnsupportedOperationException();
216 }
217
218
219 public String getQueryString() {
220 return (queryString);
221 }
222
223
224 public String getRemoteUser() {
225 if (principal != null) {
226 return (principal.getName());
227 } else {
228 return (null);
229 }
230 }
231
232
233 public String getRequestedSessionId() {
234 throw new UnsupportedOperationException();
235 }
236
237
238 public String getRequestURI() {
239 StringBuffer sb = new StringBuffer();
240 if (contextPath != null) {
241 sb.append(contextPath);
242 }
243 if (servletPath != null) {
244 sb.append(servletPath);
245 }
246 if (pathInfo != null) {
247 sb.append(pathInfo);
248 }
249 if (sb.length() > 0) {
250 return (sb.toString());
251 }
252 throw new UnsupportedOperationException();
253 }
254
255
256 public StringBuffer getRequestURL() {
257 throw new UnsupportedOperationException();
258 }
259
260
261 public String getServletPath() {
262 return (servletPath);
263 }
264
265
266 public HttpSession getSession() {
267 return (getSession(true));
268 }
269
270
271 public HttpSession getSession(boolean create) {
272 if (create && (session == null)) {
273 throw new UnsupportedOperationException();
274 }
275 return (session);
276 }
277
278
279 public Principal getUserPrincipal() {
280 return (principal);
281 }
282
283
284 public boolean isRequestedSessionIdFromCookie() {
285 throw new UnsupportedOperationException();
286 }
287
288
289 public boolean isRequestedSessionIdFromUrl() {
290 throw new UnsupportedOperationException();
291 }
292
293
294 public boolean isRequestedSessionIdFromURL() {
295 throw new UnsupportedOperationException();
296 }
297
298
299 public boolean isRequestedSessionIdValid() {
300 throw new UnsupportedOperationException();
301 }
302
303
304 public boolean isUserInRole(String role) {
305 if ((principal != null) && (principal instanceof MockPrincipal)) {
306 return (((MockPrincipal) principal).isUserInRole(role));
307 } else {
308 return (false);
309 }
310 }
311
312
313 // ------------------------------------------------- ServletRequest Methods
314
315
316 public Object getAttribute(String name) {
317 return (attributes.get(name));
318 }
319
320
321 public Enumeration getAttributeNames() {
322 return (new MockEnumeration(attributes.keySet().iterator()));
323 }
324
325
326 public String getCharacterEncoding() {
327 throw new UnsupportedOperationException();
328 }
329
330
331 public int getContentLength() {
332 throw new UnsupportedOperationException();
333 }
334
335
336 public String getContentType() {
337 throw new UnsupportedOperationException();
338 }
339
340
341 public ServletInputStream getInputStream() {
342 throw new UnsupportedOperationException();
343 }
344
345
346 public Locale getLocale() {
347 return (locale);
348 }
349
350
351 public Enumeration getLocales() {
352 throw new UnsupportedOperationException();
353 }
354
355
356 public String getLocalAddr() {
357 throw new UnsupportedOperationException();
358 }
359
360
361 public String getLocalName() {
362 throw new UnsupportedOperationException();
363 }
364
365
366 public int getLocalPort() {
367 throw new UnsupportedOperationException();
368 }
369
370
371 public String getParameter(String name) {
372 String values[] = (String[]) parameters.get(name);
373 if (values != null) {
374 return (values[0]);
375 } else {
376 return (null);
377 }
378 }
379
380
381 public Map getParameterMap() {
382 return (parameters);
383 }
384
385
386 public Enumeration getParameterNames() {
387 return (new MockEnumeration(parameters.keySet().iterator()));
388 }
389
390
391 public String[] getParameterValues(String name) {
392 return ((String[]) parameters.get(name));
393 }
394
395
396 public String getProtocol() {
397 throw new UnsupportedOperationException();
398 }
399
400
401 public BufferedReader getReader() {
402 throw new UnsupportedOperationException();
403 }
404
405
406 public String getRealPath(String path) {
407 throw new UnsupportedOperationException();
408 }
409
410
411 public String getRemoteAddr() {
412 throw new UnsupportedOperationException();
413 }
414
415
416 public String getRemoteHost() {
417 throw new UnsupportedOperationException();
418 }
419
420
421 public int getRemotePort() {
422 throw new UnsupportedOperationException();
423 }
424
425
426 public RequestDispatcher getRequestDispatcher(String path) {
427 throw new UnsupportedOperationException();
428 }
429
430
431 public String getScheme() {
432 return ("http");
433 }
434
435
436 public String getServerName() {
437 return ("localhost");
438 }
439
440
441 public int getServerPort() {
442 return (8080);
443 }
444
445
446 public boolean isSecure() {
447 return (false);
448 }
449
450
451 public void removeAttribute(String name) {
452 attributes.remove(name);
453 }
454
455
456 public void setAttribute(String name, Object value) {
457 if (value == null) {
458 attributes.remove(name);
459 } else {
460 attributes.put(name, value);
461 }
462 }
463
464
465 public void setCharacterEncoding(String name) {
466 throw new UnsupportedOperationException();
467 }
468
469
470 }