1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portal.kernel.servlet;
16  
17  import java.io.OutputStream;
18  import java.io.PrintWriter;
19  import java.io.Writer;
20  
21  import javax.servlet.ServletOutputStream;
22  import javax.servlet.http.HttpServletResponse;
23  import javax.servlet.http.HttpServletResponseWrapper;
24  import javax.servlet.jsp.PageContext;
25  
26  /**
27   * <a href="PipingServletResponse.java.html"><b><i>View Source</i></b></a>
28   *
29   * @author Shuyang Zhou
30   */
31  public class PipingServletResponse extends HttpServletResponseWrapper {
32  
33      public PipingServletResponse(
34          HttpServletResponse response, OutputStream outputStream) {
35  
36          super(response);
37  
38          _servletOutputStream = new PipingServletOutputStream(outputStream);
39      }
40  
41      public PipingServletResponse(
42          HttpServletResponse response, PrintWriter printWriter) {
43  
44          super(response);
45  
46          _printWriter = printWriter;
47      }
48  
49      public PipingServletResponse(
50          HttpServletResponse response, ServletOutputStream servletOutputStream) {
51  
52          super(response);
53  
54          _servletOutputStream = servletOutputStream;
55      }
56  
57      public PipingServletResponse(HttpServletResponse response, Writer writer) {
58          super(response);
59  
60          _printWriter = new PrintWriter(writer, true);
61      }
62  
63      public PipingServletResponse(PageContext pageContext) {
64          this(
65              (HttpServletResponse)pageContext.getResponse(),
66              pageContext.getOut());
67      }
68  
69      public ServletOutputStream getOutputStream() {
70          if (_servletOutputStream == null) {
71              throw new IllegalStateException("Servlet output stream is null");
72          }
73  
74          return  _servletOutputStream;
75      }
76  
77      public PrintWriter getWriter() {
78          if (_printWriter == null) {
79              throw new IllegalStateException("Print writer is null");
80          }
81  
82          return _printWriter;
83      }
84  
85      private PrintWriter _printWriter;
86      private ServletOutputStream _servletOutputStream;
87  
88  }