View Javadoc

1   /**
2    * Copyright (C) 2005-2009 Alfresco Software Limited.
3    *
4    * This file is part of the Spring Surf Extension project.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *  http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.springframework.extensions.surf.util;
20  
21  import java.io.BufferedReader;
22  import java.io.IOException;
23  import java.io.StringReader;
24  import java.io.UnsupportedEncodingException;
25  import java.security.Principal;
26  import java.util.Arrays;
27  import java.util.Collections;
28  import java.util.Enumeration;
29  import java.util.HashMap;
30  import java.util.Locale;
31  import java.util.Map;
32  import java.util.Vector;
33  
34  import javax.servlet.RequestDispatcher;
35  import javax.servlet.ServletException;
36  import javax.servlet.ServletInputStream;
37  import javax.servlet.ServletRequest;
38  import javax.servlet.ServletResponse;
39  import javax.servlet.http.Cookie;
40  import javax.servlet.http.HttpServletRequest;
41  import javax.servlet.http.HttpServletRequestWrapper;
42  import javax.servlet.http.HttpSession;
43  
44  /**
45   * Implementation of HttpServletRequest that mimicks a servlet originated object and provides identity implementations
46   * of the methods.
47   * 
48   * @author muzquiano
49   */
50  public class FakeHttpServletRequest extends HttpServletRequestWrapper
51  {
52      /**
53       * @param request
54       */
55      public FakeHttpServletRequest(HttpServletRequest request)
56      {
57          super(request);
58      }
59  
60      /*
61       * (non-Javadoc)
62       * @see javax.servlet.http.HttpServletRequest#getAuthType()
63       */
64      @Override
65      public String getAuthType()
66      {
67          return null;
68      }
69  
70      /*
71       * (non-Javadoc)
72       * @see javax.servlet.http.HttpServletRequest#getCookies()
73       */
74      @Override
75      public Cookie[] getCookies()
76      {
77          return null;
78      }
79  
80      /*
81       * (non-Javadoc)
82       * @see javax.servlet.http.HttpServletRequest#getDateHeader(java.lang.String)
83       */
84      @Override
85      public long getDateHeader(String name)
86      {
87          return -1;
88      }
89  
90      /*
91       * (non-Javadoc)
92       * @see javax.servlet.http.HttpServletRequest#getHeader(java.lang.String)
93       */
94      @Override
95      public String getHeader(String name)
96      {
97          return null;
98      }
99  
100     /*
101      * (non-Javadoc)
102      * @see javax.servlet.http.HttpServletRequest#getHeaders(java.lang.String)
103      */
104     @Override
105     public Enumeration getHeaders(String name)
106     {
107         return new Vector().elements();
108     }
109 
110     /*
111      * (non-Javadoc)
112      * @see javax.servlet.http.HttpServletRequest#getHeaderNames()
113      */
114     @Override
115     public Enumeration getHeaderNames()
116     {
117         return new Vector().elements();
118     }
119 
120     /*
121      * (non-Javadoc)
122      * @see javax.servlet.http.HttpServletRequest#getIntHeader(java.lang.String)
123      */
124     @Override
125     public int getIntHeader(String name)
126     {
127         return -1;
128     }
129 
130     /*
131      * (non-Javadoc)
132      * @see javax.servlet.http.HttpServletRequest#getMethod()
133      */
134     @Override
135     public String getMethod()
136     {
137         return "GET";
138     }
139 
140     /*
141      * (non-Javadoc)
142      * @see javax.servlet.http.HttpServletRequest#getPathInfo()
143      */
144     @Override
145     public String getPathInfo()
146     {
147         return null;
148     }
149 
150     /*
151      * (non-Javadoc)
152      * @see javax.servlet.http.HttpServletRequest#getPathTranslated()
153      */
154     @Override
155     public String getPathTranslated()
156     {
157         return null;
158     }
159 
160     /*
161      * (non-Javadoc)
162      * @see javax.servlet.http.HttpServletRequest#getContextPath()
163      */
164     @Override
165     public String getContextPath()
166     {
167         return "";
168     }
169 
170     /*
171      * (non-Javadoc)
172      * @see javax.servlet.http.HttpServletRequest#getQueryString()
173      */
174     @Override
175     public String getQueryString()
176     {
177         return null;
178     }
179 
180     /*
181      * (non-Javadoc)
182      * @see javax.servlet.http.HttpServletRequest#getRemoteUser()
183      */
184     @Override
185     public String getRemoteUser()
186     {
187         return null;
188     }
189 
190     /*
191      * (non-Javadoc)
192      * @see javax.servlet.http.HttpServletRequest#isUserInRole(java.lang.String)
193      */
194     @Override
195     public boolean isUserInRole(String role)
196     {
197         return false;
198     }
199 
200     /*
201      * (non-Javadoc)
202      * @see javax.servlet.http.HttpServletRequest#getUserPrincipal()
203      */
204     @Override
205     public Principal getUserPrincipal()
206     {
207         return null;
208     }
209 
210     /*
211      * (non-Javadoc)
212      * @see javax.servlet.http.HttpServletRequest#getRequestedSessionId()
213      */
214     @Override
215     public String getRequestedSessionId()
216     {
217         return null;
218     }
219 
220     /*
221      * (non-Javadoc)
222      * @see javax.servlet.http.HttpServletRequest#getRequestURI()
223      */
224     @Override
225     public String getRequestURI()
226     {
227         return "/";
228     }
229 
230     /*
231      * (non-Javadoc)
232      * @see javax.servlet.http.HttpServletRequest#getRequestURL()
233      */
234     @Override
235     public StringBuffer getRequestURL()
236     {
237         return new StringBuffer("http://localhost/");
238     }
239 
240     /*
241      * (non-Javadoc)
242      * @see javax.servlet.http.HttpServletRequest#getServletPath()
243      */
244     @Override
245     public String getServletPath()
246     {
247         return "";
248     }
249 
250     /*
251      * (non-Javadoc)
252      * @see javax.servlet.http.HttpServletRequest#getSession(boolean)
253      */
254     @Override
255     public HttpSession getSession(boolean create)
256     {
257         if (!create)
258         {
259             return null;
260         }
261         return new FakeHttpSession();
262     }
263 
264     /*
265      * (non-Javadoc)
266      * @see javax.servlet.http.HttpServletRequest#getSession()
267      */
268     @Override
269     public HttpSession getSession()
270     {
271         return null;
272     }
273 
274     /*
275      * (non-Javadoc)
276      * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdValid()
277      */
278     @Override
279     public boolean isRequestedSessionIdValid()
280     {
281         return false;
282     }
283 
284     /*
285      * (non-Javadoc)
286      * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromCookie()
287      */
288     @Override
289     public boolean isRequestedSessionIdFromCookie()
290     {
291         return false;
292     }
293 
294     /*
295      * (non-Javadoc)
296      * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromURL()
297      */
298     @Override
299     public boolean isRequestedSessionIdFromURL()
300     {
301         return false;
302     }
303 
304     /*
305      * (non-Javadoc)
306      * @see javax.servlet.http.HttpServletRequest#isRequestedSessionIdFromUrl()
307      */
308     @Override
309     public boolean isRequestedSessionIdFromUrl()
310     {
311         return false;
312     }
313 
314     /*
315      * (non-Javadoc)
316      * @see javax.servlet.ServletRequest#getAttribute(java.lang.String)
317      */
318     @Override
319     public Object getAttribute(String name)
320     {
321         return this.attributes.get(name);
322     }
323 
324     /*
325      * (non-Javadoc)
326      * @see javax.servlet.ServletRequest#getAttributeNames()
327      */
328     @Override
329     public Enumeration getAttributeNames()
330     {
331         return Collections.enumeration(this.attributes.keySet());
332     }
333 
334     /*
335      * (non-Javadoc)
336      * @see javax.servlet.ServletRequest#getCharacterEncoding()
337      */
338     @Override
339     public String getCharacterEncoding()
340     {
341         return this.characterEncoding;
342     }
343 
344     /*
345      * (non-Javadoc)
346      * @see javax.servlet.ServletRequest#setCharacterEncoding(java.lang.String)
347      */
348     @Override
349     public void setCharacterEncoding(String characterEncoding) throws UnsupportedEncodingException
350     {
351         this.characterEncoding = characterEncoding;
352     }
353 
354     /*
355      * (non-Javadoc)
356      * @see javax.servlet.ServletRequest#getContentLength()
357      */
358     @Override
359     public int getContentLength()
360     {
361         return 0;
362     }
363 
364     /*
365      * (non-Javadoc)
366      * @see javax.servlet.ServletRequest#getContentType()
367      */
368     @Override
369     public String getContentType()
370     {
371         return "text/plain";
372     }
373 
374     /*
375      * (non-Javadoc)
376      * @see javax.servlet.ServletRequest#getInputStream()
377      */
378     @Override
379     public ServletInputStream getInputStream() throws IOException
380     {
381         return new ServletInputStream()
382         {
383             @Override
384             public int read() throws IOException
385             {
386                 return -1;
387             }
388         };
389     }
390 
391     /*
392      * (non-Javadoc)
393      * @see javax.servlet.ServletRequest#getLocalAddr()
394      */
395     @Override
396     public String getLocalAddr()
397     {
398         return "127.0.0.1";
399     }
400 
401     /*
402      * (non-Javadoc)
403      * @see javax.servlet.ServletRequest#getLocalName()
404      */
405     @Override
406     public String getLocalName()
407     {
408         return "localhost";
409     }
410 
411     /*
412      * (non-Javadoc)
413      * @see javax.servlet.ServletRequest#getLocalPort()
414      */
415     @Override
416     public int getLocalPort()
417     {
418         return 80;
419     }
420 
421     /*
422      * (non-Javadoc)
423      * @see javax.servlet.ServletRequest#getParameter(java.lang.String)
424      */
425     @Override
426     public String getParameter(String name)
427     {
428         return null;
429     }
430 
431     /*
432      * (non-Javadoc)
433      * @see javax.servlet.ServletRequest#getParameterNames()
434      */
435     @Override
436     public Enumeration getParameterNames()
437     {
438         return new Vector().elements();
439     }
440 
441     /*
442      * (non-Javadoc)
443      * @see javax.servlet.ServletRequest#getParameterValues(java.lang.String)
444      */
445     @Override
446     public String[] getParameterValues(String name)
447     {
448         return null;
449     }
450 
451     /*
452      * (non-Javadoc)
453      * @see javax.servlet.ServletRequest#getParameterMap()
454      */
455     @Override
456     public Map getParameterMap()
457     {
458         return Collections.EMPTY_MAP;
459     }
460 
461     /*
462      * (non-Javadoc)
463      * @see javax.servlet.ServletRequest#getProtocol()
464      */
465     @Override
466     public String getProtocol()
467     {
468         return "HTTP/1.1";
469     }
470 
471     /*
472      * (non-Javadoc)
473      * @see javax.servlet.ServletRequest#getScheme()
474      */
475     @Override
476     public String getScheme()
477     {
478         return "http";
479     }
480 
481     /*
482      * (non-Javadoc)
483      * @see javax.servlet.ServletRequest#getServerName()
484      */
485     @Override
486     public String getServerName()
487     {
488         return "localhost";
489     }
490 
491     /*
492      * (non-Javadoc)
493      * @see javax.servlet.ServletRequest#getServerPort()
494      */
495     @Override
496     public int getServerPort()
497     {
498         return 80;
499     }
500 
501     /*
502      * (non-Javadoc)
503      * @see javax.servlet.ServletRequest#getReader()
504      */
505     @Override
506     public BufferedReader getReader() throws IOException
507     {
508         return new BufferedReader(new StringReader(""));
509     }
510 
511     /*
512      * (non-Javadoc)
513      * @see javax.servlet.ServletRequest#getRemoteAddr()
514      */
515     @Override
516     public String getRemoteAddr()
517     {
518         return "localhost";
519     }
520 
521     /*
522      * (non-Javadoc)
523      * @see javax.servlet.ServletRequest#getRemoteHost()
524      */
525     @Override
526     public String getRemoteHost()
527     {
528         return "localhost";
529     }
530 
531     /*
532      * (non-Javadoc)
533      * @see javax.servlet.ServletRequest#getRemotePort()
534      */
535     @Override
536     public int getRemotePort()
537     {
538         return 80;
539     }
540 
541     /*
542      * (non-Javadoc)
543      * @see javax.servlet.ServletRequest#setAttribute(java.lang.String, java.lang.Object)
544      */
545     @Override
546     public void setAttribute(String name, Object o)
547     {
548         this.attributes.put(name, o);
549     }
550 
551     /*
552      * (non-Javadoc)
553      * @see javax.servlet.ServletRequest#removeAttribute(java.lang.String)
554      */
555     @Override
556     public void removeAttribute(String name)
557     {
558         this.attributes.remove(name);
559     }
560 
561     /*
562      * (non-Javadoc)
563      * @see javax.servlet.ServletRequest#getLocale()
564      */
565     @Override
566     public Locale getLocale()
567     {
568         return Locale.getDefault();
569     }
570 
571     /*
572      * (non-Javadoc)
573      * @see javax.servlet.ServletRequest#getLocales()
574      */
575     @Override
576     public Enumeration getLocales()
577     {
578         return Collections.enumeration(Arrays.asList(new Locale[]
579         {
580             Locale.getDefault()
581         }));
582     }
583 
584     /*
585      * (non-Javadoc)
586      * @see javax.servlet.ServletRequest#isSecure()
587      */
588     @Override
589     public boolean isSecure()
590     {
591         return false;
592     }
593 
594     /*
595      * (non-Javadoc)
596      * @see javax.servlet.ServletRequest#getRequestDispatcher(java.lang.String)
597      */
598     @Override
599     public RequestDispatcher getRequestDispatcher(String path)
600     {
601         return new RequestDispatcher()
602         {
603             public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException
604             {
605             }
606 
607             public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException
608             {
609             }
610         };
611     }
612 
613     /*
614      * (non-Javadoc)
615      * @see javax.servlet.ServletRequest#getRealPath(java.lang.String)
616      */
617     @Override
618     public String getRealPath(String path)
619     {
620         return null;
621     }
622 
623     /** The character encoding. */
624     private String characterEncoding = null;
625 
626     /** The attributes. */
627     private Map attributes = new HashMap(24, 1.0f);
628 }