KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > riotfamily > common > web > util > CapturingResponseWrapper


1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1
3  * The contents of this file are subject to the Mozilla Public License Version
4  * 1.1 (the "License"); you may not use this file except in compliance with
5  * the License. You may obtain a copy of the License at
6  * http://www.mozilla.org/MPL/
7  *
8  * Software distributed under the License is distributed on an "AS IS" basis,
9  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10  * for the specific language governing rights and limitations under the
11  * License.
12  *
13  * The Original Code is Riot.
14  *
15  * The Initial Developer of the Original Code is
16  * Neteye GmbH.
17  * Portions created by the Initial Developer are Copyright (C) 2006
18  * the Initial Developer. All Rights Reserved.
19  *
20  * Contributor(s):
21  * Felix Gnass [fgnass at neteye dot de]
22  *
23  * ***** END LICENSE BLOCK ***** */

24 package org.riotfamily.common.web.util;
25
26 import java.io.IOException JavaDoc;
27 import java.io.OutputStream JavaDoc;
28 import java.io.PrintWriter JavaDoc;
29 import java.io.Writer JavaDoc;
30
31 import javax.servlet.ServletOutputStream JavaDoc;
32 import javax.servlet.http.HttpServletResponse JavaDoc;
33 import javax.servlet.http.HttpServletResponseWrapper JavaDoc;
34
35 /**
36  * ResponseWrapper that captures the output and redirects it to another
37  * OutputStream or Writer.
38  *
39  * @author Felix Gnass [fgnass at neteye dot de]
40  */

41 public class CapturingResponseWrapper extends HttpServletResponseWrapper JavaDoc {
42
43     private OutputStream JavaDoc targetStream;
44     
45     private Writer JavaDoc targetWriter;
46     
47     private ServletOutputStream JavaDoc outputStream;
48     
49     private PrintWriter JavaDoc writer;
50     
51     public CapturingResponseWrapper(HttpServletResponse JavaDoc response,
52             OutputStream JavaDoc targetStream) {
53         
54         super(response);
55         this.targetStream = targetStream;
56     }
57     
58     public CapturingResponseWrapper(HttpServletResponse JavaDoc response,
59             Writer JavaDoc targetWriter) {
60         
61         super(response);
62         this.targetWriter = targetWriter;
63     }
64     
65     public ServletOutputStream JavaDoc getOutputStream() throws IOException JavaDoc {
66         if (outputStream == null) {
67             if (targetStream == null) {
68                 throw new java.lang.IllegalStateException JavaDoc(
69                         "The wrapper was set up to capture character data");
70             }
71             outputStream = new DelegatingServletOutputStream(targetStream);
72         }
73         return outputStream;
74     }
75     
76     public PrintWriter JavaDoc getWriter() throws IOException JavaDoc {
77         if (writer == null) {
78             if (targetWriter != null) {
79                 writer = new PrintWriter JavaDoc(targetWriter);
80             }
81             else {
82                 writer = new PrintWriter JavaDoc(targetStream);
83             }
84         }
85         return writer;
86     }
87
88 }
89
Popular Tags