/** * Check out. * * @param lengthToWrite the length * @throws IOException Signals that an I/O exception has occurred. */ private void checkOut(int lengthToWrite) throws IOException { if (_closed) throw new IOException("CLOSED"); if (_out == null) { long length = _wrapper.getContentLength(); if (_response.isCommitted() || (length >= 0 && length < _wrapper.getMinCompressSize())) doNotCompress(false); else if (lengthToWrite > _wrapper.getMinCompressSize()) doCompress(); else _out = _bOut = new ByteArrayOutputStream2(_wrapper.getBufferSize()); } else if (_bOut != null) { long length = _wrapper.getContentLength(); if (_response.isCommitted() || (length >= 0 && length < _wrapper.getMinCompressSize())) doNotCompress(false); else if (lengthToWrite >= (_bOut.getBuf().length - _bOut.getCount())) doCompress(); } }
/** @see java.io.OutputStream#flush() */ @Override public void flush() throws IOException { if (_out == null || _bOut != null) { long length = _wrapper.getContentLength(); if (length > 0 && length < _wrapper.getMinCompressSize()) doNotCompress(false); else doCompress(); } _out.flush(); }
/** Instantiates a new compressed stream. */ public AbstractCompressedStream( String encoding, HttpServletRequest request, CompressedResponseWrapper wrapper, String vary) throws IOException { _encoding = encoding; _wrapper = wrapper; _response = (HttpServletResponse) wrapper.getResponse(); _vary = vary; if (_wrapper.getMinCompressSize() == 0) doCompress(); }
/** * Finish. * * @throws IOException Signals that an I/O exception has occurred. */ public void finish() throws IOException { if (!_closed) { if (_out == null || _bOut != null) { long length = _wrapper.getContentLength(); if (length > 0 && length < _wrapper.getMinCompressSize()) doNotCompress(false); else doCompress(); } if (_compressedOutputStream != null && !_closed) { _closed = true; _compressedOutputStream.close(); } } }
/** @see java.io.OutputStream#close() */ @Override public void close() throws IOException { if (_closed) return; if (_wrapper.getRequest().getAttribute("javax.servlet.include.request_uri") != null) flush(); else { if (_bOut != null) { long length = _wrapper.getContentLength(); if (length < 0) { length = _bOut.getCount(); _wrapper.setContentLength(length); } if (length < _wrapper.getMinCompressSize()) doNotCompress(false); else doCompress(); } else if (_out == null) { // No output doNotCompress(false); } if (_compressedOutputStream != null) _compressedOutputStream.close(); else _out.close(); _closed = true; } }