/** * Close the stream. Any remaining content accumulated in the output buffer * will be written to the underlying {@link Writer}. After that * {@link Writer#close()} will be called. * * @throws IOException * if an I/O error occurs */ @Override public void close() throws IOException { processInput(true); flushOutput(); writer.close(); }
/** * Write a single byte to the stream. * * @param b * the byte to write * @throws IOException * if an I/O error occurs */ @Override public void write(final int b) throws IOException { write(new byte[] { (byte) b }, 0, 1); }
/** * Flush the stream. Any remaining content accumulated in the output buffer * will be written to the underlying {@link Writer}. After that * {@link Writer#flush()} will be called. * * @throws IOException * if an I/O error occurs */ @Override public void flush() throws IOException { flushOutput(); writer.flush(); }
@Override public void doProcess(Reader reader, Writer writer, ProcessingContext processingContext) throws Exception { InputStream is = new ReaderInputStream(reader, processingContext.getContext().getConfiguration().getEncoding()); OutputStream os = new WriterOutputStream(writer, processingContext.getContext().getConfiguration().getEncoding()); try { new JSMin(is, os).jsmin(); } catch (Exception e) { throw e; } finally { is.close(); os.close(); } } }
/** * Flush the stream. Any remaining content accumulated in the output buffer * will be written to the underlying {@link Writer}. After that * {@link Writer#flush()} will be called. * * @throws IOException * if an I/O error occurs */ @Override public void flush() throws IOException { flushOutput(); writer.flush(); }
@Override public void doProcess(Reader reader, Writer writer, ProcessingContext processingContext) throws Exception { InputStream is = new ReaderInputStream(reader, processingContext.getContext().getConfiguration().getEncoding()); OutputStream os = new WriterOutputStream(writer, processingContext.getContext().getConfiguration().getEncoding()); try { new JSMin(is, os).jsmin(); } catch (Exception e) { throw e; } finally { is.close(); os.close(); } } }
/** * Close the stream. Any remaining content accumulated in the output buffer * will be written to the underlying {@link Writer}. After that * {@link Writer#close()} will be called. * * @throws IOException * if an I/O error occurs */ @Override public void close() throws IOException { processInput(true); flushOutput(); writer.close(); }
/** * Write bytes from the specified byte array to the stream. * * @param b * the byte array containing the bytes to write * @throws IOException * if an I/O error occurs */ @Override public void write(final byte[] b) throws IOException { write(b, 0, b.length); }
/** * Decode the contents of the input ByteBuffer into a CharBuffer. * * @param endOfInput * indicates end of input * @throws IOException * if an I/O error occurs */ private void processInput(final boolean endOfInput) throws IOException { // Prepare decoderIn for reading decoderIn.flip(); CoderResult coderResult; while (true) { coderResult = decoder.decode(decoderIn, decoderOut, endOfInput); if (coderResult.isOverflow()) { flushOutput(); } else if (coderResult.isUnderflow()) { break; } else { // The decoder is configured to replace malformed input and // unmappable characters, // so we should not get here. throw new IOException("Unexpected coder result"); } } // Discard the bytes that have been read decoderIn.compact(); }
/** * Write bytes from the specified byte array to the stream. * * @param b * the byte array containing the bytes to write * @param off * the start offset in the byte array * @param len * the number of bytes to write * @throws IOException * if an I/O error occurs */ @Override public void write(final byte[] b, int off, int len) throws IOException { while (len > 0) { final int c = Math.min(len, decoderIn.remaining()); decoderIn.put(b, off, c); processInput(false); len -= c; off += c; } if (writeImmediately) { flushOutput(); } }
/** * Write bytes from the specified byte array to the stream. * * @param b * the byte array containing the bytes to write * @throws IOException * if an I/O error occurs */ @Override public void write(final byte[] b) throws IOException { write(b, 0, b.length); }
/** * Decode the contents of the input ByteBuffer into a CharBuffer. * * @param endOfInput * indicates end of input * @throws IOException * if an I/O error occurs */ private void processInput(final boolean endOfInput) throws IOException { // Prepare decoderIn for reading decoderIn.flip(); CoderResult coderResult; while (true) { coderResult = decoder.decode(decoderIn, decoderOut, endOfInput); if (coderResult.isOverflow()) { flushOutput(); } else if (coderResult.isUnderflow()) { break; } else { // The decoder is configured to replace malformed input and // unmappable characters, // so we should not get here. throw new IOException("Unexpected coder result"); } } // Discard the bytes that have been read decoderIn.compact(); }
/** * Write bytes from the specified byte array to the stream. * * @param b * the byte array containing the bytes to write * @param off * the start offset in the byte array * @param len * the number of bytes to write * @throws IOException * if an I/O error occurs */ @Override public void write(final byte[] b, int off, int len) throws IOException { while (len > 0) { final int c = Math.min(len, decoderIn.remaining()); decoderIn.put(b, off, c); processInput(false); len -= c; off += c; } if (writeImmediately) { flushOutput(); } }
/** * Write a single byte to the stream. * * @param b * the byte to write * @throws IOException * if an I/O error occurs */ @Override public void write(final int b) throws IOException { write(new byte[] { (byte) b }, 0, 1); }