/* ------------------------------------------------------------ */ public PrintWriter getWriter() throws java.io.IOException { if (_outputState == DISABLED) return __nullServletWriter; if (_outputState != NO_OUT && _outputState != WRITER_OUT) throw new IllegalStateException(); // If we are switching modes, flush output to try avoid overlaps. if (_out != null) _out.flush(); /* if there is no writer yet */ if (_writer == null) { /* get encoding from Content-Type header */ String encoding = _httpResponse.getCharacterEncoding(); if (encoding == null) { if (_servletHttpRequest != null) { /* implementation of educated defaults */ String mimeType = _httpResponse.getMimeType(); encoding = _servletHttpRequest .getServletHandler() .getHttpContext() .getEncodingByMimeType(mimeType); } if (encoding == null) encoding = StringUtil.__ISO_8859_1; _httpResponse.setCharacterEncoding(encoding, true); } /* construct Writer using correct encoding */ _writer = new ServletWriter(_httpResponse.getOutputStream(), encoding); } _outputState = WRITER_OUT; return _writer; }
/* ------------------------------------------------------------ */ public void flushBuffer() throws IOException { if (((HttpOutputStream) _httpResponse.getOutputStream()).isClosed()) return; if (_writer != null) _writer.flush(); if (_out != null) _out.flush(); if (_writer == null && _out == null) _httpResponse.getOutputStream().flush(); if (!_httpResponse.isCommitted()) _httpResponse.commit(); }
/* ------------------------------------------------------------ */ void setOutputState(int s) throws IOException { if (s < 0) { _outputState = DISABLED; if (_writer != null) _writer.disable(); _writer = null; if (_out != null) _out.disable(); _out = null; } else _outputState = s; }