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 601107 2007-12-04 22:12:14Z 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    
054      public String getBufferedString() {
055        if (bufferedWriter != null) {
056          printWriter.flush();
057          return bufferedWriter.toString();
058        } else {
059          return "";
060        }
061      }
062    
063      public ServletOutputStream getOutputStream() throws IOException {
064        LOG.debug("***** getOutputStream() from " + new Exception().getStackTrace()[1]);
065        return getResponse().getOutputStream();
066      }
067    
068      public PrintWriter getWriter() throws IOException {
069        LOG.debug("***** getWriter() from " + new Exception().getStackTrace()[1]);
070        if (printWriter != null) {
071          return printWriter;
072        }
073        return getResponse().getWriter();
074      }
075    
076    
077      public void setContentType(String s) {
078        LOG.debug("***** setContentType(" + s + ") from " + new Exception().getStackTrace()[1]);
079        getResponse().setContentType(s);
080      }
081    
082    
083    }