001    package org.apache.myfaces.tobago.webapp;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one or more
005     * contributor license agreements.  See the NOTICE file distributed with
006     * this work for additional information regarding copyright ownership.
007     * The ASF licenses this file to You under the Apache License, Version 2.0
008     * (the "License"); you may not use this file except in compliance with
009     * the License.  You may obtain a copy of the License at
010     *
011     *      http://www.apache.org/licenses/LICENSE-2.0
012     *
013     * Unless required by applicable law or agreed to in writing, software
014     * distributed under the License is distributed on an "AS IS" BASIS,
015     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016     * See the License for the specific language governing permissions and
017     * limitations under the License.
018     */
019    
020    import org.apache.commons.logging.Log;
021    import org.apache.commons.logging.LogFactory;
022    
023    import javax.servlet.ServletOutputStream;
024    import javax.servlet.http.HttpServletResponse;
025    import javax.servlet.http.HttpServletResponseWrapper;
026    import java.io.IOException;
027    import java.io.PrintWriter;
028    import java.io.StringWriter;
029    
030    /*
031     * Created: Nov 29, 2004 4:48:29 PM
032     * User: bommel
033     * $Id: TobagoResponse.java 578592 2007-09-23 18:51:32Z bommel $
034     */
035    public class TobagoResponse extends HttpServletResponseWrapper {
036    
037      private static final Log LOG = LogFactory.getLog(TobagoResponse.class);
038    
039      private PrintWriter printWriter = null;
040      private StringWriter  bufferedWriter = null;
041    
042    
043      public TobagoResponse(HttpServletResponse base) {
044        super(base);
045      }
046    
047      public void setBuffering() {
048        if (bufferedWriter == null) {
049          bufferedWriter = new StringWriter();
050          printWriter = new PrintWriter(bufferedWriter);
051        }
052      }
053      public String getBufferedString() {
054        if (bufferedWriter !=null) {
055          printWriter.flush();
056          return bufferedWriter.toString();
057        } else {
058          return "";
059        }
060      }
061      public ServletOutputStream getOutputStream() throws IOException {
062        LOG.debug("***** getOutputStream() from " + new Exception().getStackTrace()[1]);
063        return getResponse().getOutputStream();
064      }
065    
066      public PrintWriter getWriter() throws IOException {
067        LOG.debug("***** getWriter() from " + new Exception().getStackTrace()[1]);
068        if (printWriter != null) {
069          return printWriter;
070        }
071        return getResponse().getWriter();
072      }
073    
074    
075      public void setContentType(String s) {
076        LOG.debug("***** setContentType(" + s + ") from " + new Exception().getStackTrace()[1]);
077        getResponse().setContentType(s);
078      }
079    
080    
081    }