KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > za > org > coefficient > util > testing > TestingHttpServletRequest


1 /*
2  * Coefficient - facilitates project based collaboration
3  * Copyright (C) 2003, Dylan Etkin, CSIR icomtek
4  * PO Box 395
5  * Pretoria 0001, RSA
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

19 package za.org.coefficient.util.testing;
20
21 import java.io.BufferedReader JavaDoc;
22 import java.io.IOException JavaDoc;
23 import java.io.UnsupportedEncodingException JavaDoc;
24 import java.security.Principal JavaDoc;
25 import java.util.Enumeration JavaDoc;
26 import java.util.HashMap JavaDoc;
27 import java.util.Locale JavaDoc;
28 import java.util.Map JavaDoc;
29 import java.util.Set JavaDoc;
30 import java.util.Vector JavaDoc;
31
32 import javax.servlet.RequestDispatcher JavaDoc;
33 import javax.servlet.ServletInputStream JavaDoc;
34 import javax.servlet.http.Cookie JavaDoc;
35 import javax.servlet.http.HttpServletRequest JavaDoc;
36 import javax.servlet.http.HttpSession JavaDoc;
37
38 /**
39  * <p>Project: coefficient</p>
40  * <p>Description: This is an implementation of the HttpServletRequest
41  * interace that is backed by Maps for the parameter and attribute
42  * data - it exists completely independently of any container (it uses a
43  * TestingHttpSession for session data) - this makes
44  * it useful for running containerless unit tests on modules.</p>
45  * <p>Copyright: Copyright (c) 2003</p>
46  * <p>Company: CSIR</p>
47  * @author tfogwill
48  * @version 1.0
49  */

50 public class TestingHttpServletRequest implements HttpServletRequest JavaDoc {
51     
52     private HttpSession JavaDoc session;
53     private Map JavaDoc attributes;
54     private Map JavaDoc parameters;
55     private boolean streamOpened;
56     
57     public TestingHttpServletRequest(Map JavaDoc sessionData, Map JavaDoc parameters, Map JavaDoc attributes){
58         this.parameters = parameters;
59         this.attributes = attributes;
60         this.session = new TestingHttpSession(sessionData);
61     }
62
63     /* (non-Javadoc)
64      * @see javax.servlet.http.HttpServletRequest#getAuthType()
65      */

66     public String JavaDoc getAuthType() {
67         //one of BASIC, SSL, or null
68
return null;
69     }
70
71     /* (non-Javadoc)
72      * @see javax.servlet.http.HttpServletRequest#getCookies()
73      */

74     public Cookie JavaDoc[] getCookies() {
75         return null;
76     }
77
78     /* (non-Javadoc)
79      * @see javax.servlet.http.HttpServletRequest#getDateHeader(java.lang.String)
80      */

81     public long getDateHeader(String JavaDoc arg0) {
82         return -1;
83     }
84
85     /* (non-Javadoc)
86      * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String)
87      */

88     public String JavaDoc getHeader(String JavaDoc arg0) {
89         return null;
90     }
91
92     /* (non-Javadoc)
93      * @see javax.servlet.http.HttpServletRequest#getHeaders(java.lang.String)
94      */

95     public Enumeration JavaDoc getHeaders(String JavaDoc arg0) {
96         return null;
97     }
98
99     /* (non-Javadoc)
100      * @see javax.servlet.http.HttpServletRequest#getHeaderNames()
101      */

102     public Enumeration JavaDoc getHeaderNames() {
103         return null;
104     }
105
106     /* (non-Javadoc)
107      * @see javax.servlet.http.HttpServletRequest#getIntHeader(java.lang.String)
108      */

109     public int getIntHeader(String JavaDoc arg0) {
110         return -1;
111     }
112
113     /* (non-Javadoc)
114      * @see javax.servlet.http.HttpServletRequest#getMethod()
115      */

116     public String JavaDoc getMethod() {
117         //one of GET, PUT, POST
118
return "POST";
119     }
120
121     /* (non-Javadoc)
122      * @see javax.servlet.http.HttpServletRequest#getPathInfo()
123      */

124     public String JavaDoc getPathInfo() {
125         return null;
126     }
127
128     /* (non-Javadoc)
129      * @see javax.servlet.http.HttpServletRequest#getPathTranslated()
130      */

131     public String JavaDoc getPathTranslated() {
132         return null;
133     }
134
135     /* (non-Javadoc)
136      * @see javax.servlet.http.HttpServletRequest#getContextPath()
137      */

138     public String JavaDoc getContextPath() {
139         return "";
140     }
141
142     /* (non-Javadoc)
143      * @see javax.servlet.http.HttpServletRequest#getQueryString()
144      */

145     public String JavaDoc getQueryString() {
146         return null;
147     }
148
149     /* (non-Javadoc)
150      * @see javax.servlet.http.HttpServletRequest#getRemoteUser()
151      */

152     public String JavaDoc getRemoteUser() {
153         return null;
154     }
155
156     /* (non-Javadoc)
157      * @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String)
158      */

159     public boolean isUserInRole(String JavaDoc arg0) {
160         return true;
161     }
162
163     /* (non-Javadoc)
164      * @see javax.servlet.http.HttpServletRequest#getUserPrincipal()
165      */

166     public Principal JavaDoc getUserPrincipal() {
167         return null;
168     }
169
170     /* (non-Javadoc)
171      * @see javax.servlet.http.HttpServletRequest#getRequestedSessionId()
172      */

173     public String JavaDoc getRequestedSessionId() {
174         return "sessionID";
175     }
176
177     /* (non-Javadoc)
178      * @see javax.servlet.http.HttpServletRequest#getRequestURI()
179      */

180     public String JavaDoc getRequestURI() {
181         return "/unit-testing";
182     }
183
184     /* (non-Javadoc)
185      * @see javax.servlet.http.HttpServletRequest#getRequestURL()
186      */

187     public StringBuffer JavaDoc getRequestURL() {
188         return new StringBuffer JavaDoc("/unit-testing");
189     }
190
191     /* (non-Javadoc)
192      * @see javax.servlet.http.HttpServletRequest#getServletPath()
193      */

194     public String JavaDoc getServletPath() {
195         return getRequestURL().toString();
196     }
197
198     /* (non-Javadoc)
199      * @see javax.servlet.http.HttpServletRequest#getSession(boolean)
200      */

201     public HttpSession JavaDoc getSession(boolean arg0) {
202         if (arg0){
203             if (session == null){
204                 session = new TestingHttpSession(new HashMap JavaDoc());
205             }
206         }
207         return session;
208     }
209
210     /* (non-Javadoc)
211      * @see javax.servlet.http.HttpServletRequest#getSession()
212      */

213     public HttpSession JavaDoc getSession() {
214         return session;
215     }
216
217     /* (non-Javadoc)
218      * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid()
219      */

220     public boolean isRequestedSessionIdValid() {
221         return true;
222     }
223
224     /* (non-Javadoc)
225      * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromCookie()
226      */

227     public boolean isRequestedSessionIdFromCookie() {
228         return true;
229     }
230
231     /* (non-Javadoc)
232      * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromURL()
233      */

234     public boolean isRequestedSessionIdFromURL() {
235         return false;
236     }
237
238     /* (non-Javadoc)
239      * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromUrl()
240      */

241     public boolean isRequestedSessionIdFromUrl() {
242         return isRequestedSessionIdFromURL();
243     }
244
245     /* (non-Javadoc)
246      * @see javax.servlet.ServletRequest#getAttribute(java.lang.String)
247      */

248     public Object JavaDoc getAttribute(String JavaDoc arg0) {
249         return attributes.get(arg0);
250     }
251
252     /* (non-Javadoc)
253      * @see javax.servlet.ServletRequest#getAttributeNames()
254      */

255     public Enumeration JavaDoc getAttributeNames() {
256         Set JavaDoc keys = attributes.keySet();
257         return new Vector JavaDoc(keys).elements();
258     }
259
260     /* (non-Javadoc)
261      * @see javax.servlet.ServletRequest#getCharacterEncoding()
262      */

263     public String JavaDoc getCharacterEncoding() {
264         return null;
265     }
266
267     /* (non-Javadoc)
268      * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)
269      */

270     public void setCharacterEncoding(String JavaDoc arg0)
271         throws UnsupportedEncodingException JavaDoc {
272         throw new UnsupportedOperationException JavaDoc();
273     }
274
275     /* (non-Javadoc)
276      * @see javax.servlet.ServletRequest#getContentLength()
277      */

278     public int getContentLength() {
279         return -1;
280     }
281
282     /* (non-Javadoc)
283      * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)
284      */

285     public String JavaDoc getLocalName() {
286         throw new UnsupportedOperationException JavaDoc();
287     }
288
289     /* (non-Javadoc)
290      * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)
291      */

292     public String JavaDoc getLocalAddr() {
293         throw new UnsupportedOperationException JavaDoc();
294     }
295
296     /* (non-Javadoc)
297      * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)
298      */

299     public int getRemotePort() {
300         throw new UnsupportedOperationException JavaDoc();
301     }
302
303     /* (non-Javadoc)
304      * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)
305      */

306     public int getLocalPort() {
307         throw new UnsupportedOperationException JavaDoc();
308     }
309
310     /* (non-Javadoc)
311      * @see javax.servlet.ServletRequest#getContentType()
312      */

313     public String JavaDoc getContentType() {
314         return null;
315     }
316
317     /* (non-Javadoc)
318      * @see javax.servlet.ServletRequest#getInputStream()
319      */

320     public ServletInputStream JavaDoc getInputStream() throws IOException JavaDoc {
321         if (streamOpened) throw new IllegalStateException JavaDoc("Reader already opened!");
322         streamOpened = true;
323         return null;
324     }
325
326     /* (non-Javadoc)
327      * @see javax.servlet.ServletRequest#getParameter(java.lang.String)
328      */

329     public String JavaDoc getParameter(String JavaDoc arg0) {
330         String JavaDoc[] vals = getParameterValues(arg0);
331         if (vals == null || vals.length == 0) {
332             return null;
333         } else return vals[0];
334     }
335
336     /* (non-Javadoc)
337      * @see javax.servlet.ServletRequest#getParameterNames()
338      */

339     public Enumeration JavaDoc getParameterNames() {
340         return new Vector JavaDoc(parameters.keySet()).elements();
341     }
342
343     /* (non-Javadoc)
344      * @see javax.servlet.ServletRequest#getParameterValues(java.lang.String)
345      */

346     public String JavaDoc[] getParameterValues(String JavaDoc arg0) {
347         Object JavaDoc obj = parameters.get(arg0);
348         if (obj == null){
349             return null;
350         } else if (obj instanceof String JavaDoc[]){
351             return (String JavaDoc[])obj;
352         } else if (obj instanceof String JavaDoc){
353             return new String JavaDoc[]{(String JavaDoc)obj};
354         } else return null;
355     }
356
357     /* (non-Javadoc)
358      * @see javax.servlet.ServletRequest#getParameterMap()
359      */

360     public Map JavaDoc getParameterMap() {
361         return parameters;
362     }
363
364     /* (non-Javadoc)
365      * @see javax.servlet.ServletRequest#getProtocol()
366      */

367     public String JavaDoc getProtocol() {
368         return "HTTP/1.1";
369     }
370
371     /* (non-Javadoc)
372      * @see javax.servlet.ServletRequest#getScheme()
373      */

374     public String JavaDoc getScheme() {
375         return "http";
376     }
377
378     /* (non-Javadoc)
379      * @see javax.servlet.ServletRequest#getServerName()
380      */

381     public String JavaDoc getServerName() {
382         return "unit-testing";
383     }
384
385     /* (non-Javadoc)
386      * @see javax.servlet.ServletRequest#getServerPort()
387      */

388     public int getServerPort() {
389         return 8080;
390     }
391
392     /* (non-Javadoc)
393      * @see javax.servlet.ServletRequest#getReader()
394      */

395     public BufferedReader JavaDoc getReader() throws IOException JavaDoc {
396         if (streamOpened) throw new IllegalStateException JavaDoc("Stream already opened!");
397         streamOpened = true;
398         return null;
399     }
400
401     /* (non-Javadoc)
402      * @see javax.servlet.ServletRequest#getRemoteAddr()
403      */

404     public String JavaDoc getRemoteAddr() {
405         return "127.0.0.1";
406     }
407
408     /* (non-Javadoc)
409      * @see javax.servlet.ServletRequest#getRemoteHost()
410      */

411     public String JavaDoc getRemoteHost() {
412         return "localhost";
413     }
414
415     /* (non-Javadoc)
416      * @see javax.servlet.ServletRequest#setAttribute(java.lang.String, java.lang.Object)
417      */

418     public void setAttribute(String JavaDoc arg0, Object JavaDoc arg1) {
419         attributes.put(arg0, arg1);
420     }
421
422     /* (non-Javadoc)
423      * @see javax.servlet.ServletRequest#removeAttribute(java.lang.String)
424      */

425     public void removeAttribute(String JavaDoc arg0) {
426         attributes.remove(arg0);
427
428     }
429
430     /* (non-Javadoc)
431      * @see javax.servlet.ServletRequest#getLocale()
432      */

433     public Locale JavaDoc getLocale() {
434         return Locale.getDefault();
435     }
436
437     /* (non-Javadoc)
438      * @see javax.servlet.ServletRequest#getLocales()
439      */

440     public Enumeration JavaDoc getLocales() {
441         return new Enumeration JavaDoc(){
442             Locale JavaDoc[] locales = new Locale JavaDoc[]{Locale.getDefault()};
443             int index = 0;
444             public boolean hasMoreElements(){
445                 return index < locales.length;
446             }
447             public Object JavaDoc nextElement(){
448                 return locales[index++];
449             }
450         };
451     }
452
453     /* (non-Javadoc)
454      * @see javax.servlet.ServletRequest#isSecure()
455      */

456     public boolean isSecure() {
457         return false;
458     }
459
460     /* (non-Javadoc)
461      * @see javax.servlet.ServletRequest#getRequestDispatcher(java.lang.String)
462      */

463     public RequestDispatcher JavaDoc getRequestDispatcher(String JavaDoc arg0) {
464         throw new UnsupportedOperationException JavaDoc();
465     }
466
467     /* (non-Javadoc)
468      * @see javax.servlet.ServletRequest#getRealPath(java.lang.String)
469      */

470     public String JavaDoc getRealPath(String JavaDoc arg0) {
471         throw new UnsupportedOperationException JavaDoc();
472     }
473
474 }
475
Popular Tags