View Javadoc

1   /* ------------------------------------
2    * © Kaamelot - 2006
3    * ------------------------------------
4    * Projet  : KaamelotAddOn
5    * Fichier : DwrPluginContentResolver.java
6    * Description :
7    * ContentResolver similar as DwrContentResolver, but using BogusDwrPluginServlet instead of BogusDwrServlet 
8    */
9   package com.atlassian.cache.servlet.resolver;
10  
11  import java.io.BufferedReader;
12  import java.io.ByteArrayOutputStream;
13  import java.io.IOException;
14  import java.io.OutputStream;
15  import java.io.PrintWriter;
16  import java.io.UnsupportedEncodingException;
17  import java.security.Principal;
18  import java.util.Enumeration;
19  import java.util.Locale;
20  import java.util.Map;
21  
22  import javax.servlet.RequestDispatcher;
23  import javax.servlet.ServletConfig;
24  import javax.servlet.ServletException;
25  import javax.servlet.ServletInputStream;
26  import javax.servlet.ServletOutputStream;
27  import javax.servlet.http.Cookie;
28  import javax.servlet.http.HttpServletRequest;
29  import javax.servlet.http.HttpServletResponse;
30  import javax.servlet.http.HttpSession;
31  
32  import com.atlassian.cache.servlet.CombinedCachingServlet;
33  
34  public class DwrPluginContentResolver implements ContentResolver {
35  
36     protected BogusDwrPluginServlet dwrServlet;
37  
38     public String getContent(String path, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
39     {
40         ByteArrayOutputStream os = new ByteArrayOutputStream();
41         getDwrServlet().doGet(new EvilHttpRequest(request, path), new OutputCollectingResponse(response, os));
42         return os.toString(CombinedCachingServlet.DEFAULT_ENCODING);
43     }
44  
45     public void init(ServletConfig servletConfig) throws ServletException
46     {
47         setDwrServlet(new BogusDwrPluginServlet());
48         getDwrServlet().init(servletConfig);
49     }
50  
51     public static class EvilHttpRequest implements HttpServletRequest
52     {
53         private HttpServletRequest wrappedRequest;
54         private String pathInfo;
55  
56         public EvilHttpRequest(HttpServletRequest wrappedRequest, String pathInfo)
57         {
58             this.wrappedRequest = wrappedRequest;
59             this.pathInfo = pathInfo;
60         }
61  
62  
63         public String getAuthType()
64         {
65             return wrappedRequest.getAuthType();
66         }
67  
68         public Cookie[] getCookies()
69         {
70             return wrappedRequest.getCookies();
71         }
72  
73         public long getDateHeader(String s)
74         {
75             return wrappedRequest.getDateHeader(s);
76         }
77  
78         public String getHeader(String s)
79         {
80             return wrappedRequest.getHeader(s);
81         }
82  
83         public Enumeration getHeaders(String s)
84         {
85             return wrappedRequest.getHeaders(s);
86         }
87  
88         public Enumeration getHeaderNames()
89         {
90             return wrappedRequest.getHeaderNames();
91         }
92  
93         public int getIntHeader(String s)
94         {
95             return wrappedRequest.getIntHeader(s);
96         }
97  
98         public String getMethod()
99         {
100            return wrappedRequest.getMethod();
101        }
102 
103        public String getPathInfo()
104        {
105            return pathInfo;
106        }
107 
108        public String getPathTranslated()
109        {
110            return wrappedRequest.getPathTranslated();
111        }
112 
113        public String getContextPath()
114        {
115            return wrappedRequest.getContextPath();
116        }
117 
118        public String getQueryString()
119        {
120            return wrappedRequest.getQueryString();
121        }
122 
123        public String getRemoteUser()
124        {
125            return wrappedRequest.getRemoteUser();
126        }
127 
128        public boolean isUserInRole(String s)
129        {
130            return wrappedRequest.isUserInRole(s);
131        }
132 
133        public Principal getUserPrincipal()
134        {
135            return wrappedRequest.getUserPrincipal();
136        }
137 
138        public String getRequestedSessionId()
139        {
140            return wrappedRequest.getRequestedSessionId();
141        }
142 
143        public String getRequestURI()
144        {
145            return wrappedRequest.getRequestURI();
146        }
147 
148        public StringBuffer getRequestURL()
149        {
150            return wrappedRequest.getRequestURL();
151        }
152 
153        public String getServletPath()
154        {
155            return "/dwr";
156        }
157 
158        public HttpSession getSession(boolean b)
159        {
160            return wrappedRequest.getSession(b);
161        }
162 
163        public HttpSession getSession()
164        {
165            return wrappedRequest.getSession();
166        }
167 
168        public boolean isRequestedSessionIdValid()
169        {
170            return wrappedRequest.isRequestedSessionIdValid();
171        }
172 
173        public boolean isRequestedSessionIdFromCookie()
174        {
175            return wrappedRequest.isRequestedSessionIdFromCookie();
176        }
177 
178        public boolean isRequestedSessionIdFromURL()
179        {
180            return wrappedRequest.isRequestedSessionIdFromURL();
181        }
182 
183        /**
184         * @deprecated
185         */
186        public boolean isRequestedSessionIdFromUrl()
187        {
188            return wrappedRequest.isRequestedSessionIdFromUrl();
189        }
190 
191        public Object getAttribute(String s)
192        {
193            return wrappedRequest.getAttribute(s);
194        }
195 
196        public Enumeration getAttributeNames()
197        {
198            return wrappedRequest.getAttributeNames();
199        }
200 
201        public String getCharacterEncoding()
202        {
203            return wrappedRequest.getCharacterEncoding();
204        }
205 
206        public void setCharacterEncoding(String s)
207                throws UnsupportedEncodingException
208        {
209            wrappedRequest.setCharacterEncoding(s);
210        }
211 
212        public int getContentLength()
213        {
214            return wrappedRequest.getContentLength();
215        }
216 
217        public String getContentType()
218        {
219            return wrappedRequest.getContentType();
220        }
221 
222        public ServletInputStream getInputStream()
223                throws IOException
224        {
225            return wrappedRequest.getInputStream();
226        }
227 
228        public String getParameter(String s)
229        {
230            return wrappedRequest.getParameter(s);
231        }
232 
233        public Enumeration getParameterNames()
234        {
235            return wrappedRequest.getParameterNames();
236        }
237 
238        public String[] getParameterValues(String s)
239        {
240            return wrappedRequest.getParameterValues(s);
241        }
242 
243        public Map getParameterMap()
244        {
245            return wrappedRequest.getParameterMap();
246        }
247 
248        public String getProtocol()
249        {
250            return wrappedRequest.getProtocol();
251        }
252 
253        public String getScheme()
254        {
255            return wrappedRequest.getScheme();
256        }
257 
258        public String getServerName()
259        {
260            return wrappedRequest.getServerName();
261        }
262 
263        public int getServerPort()
264        {
265            return wrappedRequest.getServerPort();
266        }
267 
268        public BufferedReader getReader()
269                throws IOException
270        {
271            return wrappedRequest.getReader();
272        }
273 
274        public String getRemoteAddr()
275        {
276            return wrappedRequest.getRemoteAddr();
277        }
278 
279        public String getRemoteHost()
280        {
281            return wrappedRequest.getRemoteHost();
282        }
283 
284        public void setAttribute(String s, Object o)
285        {
286            wrappedRequest.setAttribute(s, o);
287        }
288 
289        public void removeAttribute(String s)
290        {
291            wrappedRequest.removeAttribute(s);
292        }
293 
294        public Locale getLocale()
295        {
296            return wrappedRequest.getLocale();
297        }
298 
299        public Enumeration getLocales()
300        {
301            return wrappedRequest.getLocales();
302        }
303 
304        public boolean isSecure()
305        {
306            return wrappedRequest.isSecure();
307        }
308 
309        public RequestDispatcher getRequestDispatcher(String s)
310        {
311            return wrappedRequest.getRequestDispatcher(s);
312        }
313 
314        /**
315         * @deprecated
316         */
317        public String getRealPath(String s)
318        {
319            return wrappedRequest.getRealPath(s);
320        }
321    }
322 
323    private static class OutputCollectingResponse implements HttpServletResponse
324    {
325        private HttpServletResponse response;
326        private ServletOutputStream os;
327 
328        public OutputCollectingResponse(HttpServletResponse response, OutputStream os)
329        {
330            this.response = response;
331            this.os = new ServletOutputStreamAdapter(os);
332        }
333 
334        public void addCookie(Cookie cookie)
335        {
336            response.addCookie(cookie);
337        }
338 
339        public boolean containsHeader(String s)
340        {
341            return response.containsHeader(s);
342        }
343 
344        public String encodeURL(String s)
345        {
346            return response.encodeURL(s);
347        }
348 
349        public String encodeRedirectURL(String s)
350        {
351            return response.encodeRedirectURL(s);
352        }
353 
354        /**
355         * @deprecated
356         */
357        public String encodeUrl(String s)
358        {
359            return response.encodeUrl(s);
360        }
361 
362        /**
363         * @deprecated
364         */
365        public String encodeRedirectUrl(String s)
366        {
367            return response.encodeRedirectUrl(s);
368        }
369 
370        public void sendError(int i, String s)
371                throws IOException
372        {
373            response.sendError(i, s);
374        }
375 
376        public void sendError(int i)
377                throws IOException
378        {
379            response.sendError(i);
380        }
381 
382        public void sendRedirect(String s)
383                throws IOException
384        {
385            response.sendRedirect(s);
386        }
387 
388        public void setDateHeader(String s, long l)
389        {
390            //response.setDateHeader(s, l);
391        }
392 
393        public void addDateHeader(String s, long l)
394        {
395            //response.addDateHeader(s, l);
396        }
397 
398        public void setHeader(String s, String s1)
399        {
400            //response.setHeader(s, s1);
401        }
402 
403        public void addHeader(String s, String s1)
404        {
405            //response.addHeader(s, s1);
406        }
407 
408        public void setIntHeader(String s, int i)
409        {
410            //response.setIntHeader(s, i);
411        }
412 
413        public void addIntHeader(String s, int i)
414        {
415            //response.addIntHeader(s, i);
416        }
417 
418        public void setStatus(int i)
419        {
420            response.setStatus(i);
421        }
422 
423        /**
424         * @deprecated
425         */
426        public void setStatus(int i, String s)
427        {
428            response.setStatus(i, s);
429        }
430 
431        public String getCharacterEncoding()
432        {
433            return response.getCharacterEncoding();
434        }
435 
436        public ServletOutputStream getOutputStream()
437                throws IOException
438        {
439            return os;
440        }
441 
442        public PrintWriter getWriter()
443                throws IOException
444        {
445            return new PrintWriter(getOutputStream());
446        }
447 
448        public void setContentLength(int i)
449        {
450            response.setContentLength(i);
451        }
452 
453        public void setContentType(String s)
454        {
455            response.setContentType(s);
456        }
457 
458        public void setBufferSize(int i)
459        {
460            response.setBufferSize(i);
461        }
462 
463        public int getBufferSize()
464        {
465            return response.getBufferSize();
466        }
467 
468        public void flushBuffer()
469                throws IOException
470        {
471            response.flushBuffer();
472        }
473 
474        public void resetBuffer()
475        {
476            response.resetBuffer();
477        }
478 
479        public boolean isCommitted()
480        {
481            return response.isCommitted();
482        }
483 
484        public void reset()
485        {
486            response.reset();
487        }
488 
489        public void setLocale(Locale locale)
490        {
491            response.setLocale(locale);
492        }
493 
494        public Locale getLocale()
495        {
496            return response.getLocale();
497        }
498    }
499 
500    private static class ServletOutputStreamAdapter extends ServletOutputStream
501    {
502        private OutputStream os;
503 
504        public ServletOutputStreamAdapter(OutputStream os)
505        {
506            this.os = os;
507        }
508 
509        public void write(int b) throws IOException
510        {
511            os.write(b);
512        }
513 
514        public void flush() throws IOException
515        {
516            os.flush();
517        }
518 
519        public void close() throws IOException
520        {
521            // do nothing
522        }
523    }
524 
525 	protected BogusDwrPluginServlet getDwrServlet() {
526 		return dwrServlet;
527 	}
528 
529 	protected void setDwrServlet(BogusDwrPluginServlet dwrServlet) {
530 		this.dwrServlet = dwrServlet;
531 	}
532 
533 
534 }