Class LineOrientedOutputStream

java.lang.Object
java.io.OutputStream
org.apache.tools.ant.util.LineOrientedOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable
Direct Known Subclasses:
LineOrientedOutputStreamRedirector, LogOutputStream

public abstract class LineOrientedOutputStream
extends java.io.OutputStream
Invokes processLine whenever a full line has been written to this stream.

Tries to be smart about line separators.

  • Constructor Summary

    Constructors 
    Constructor Description
    LineOrientedOutputStream()  
  • Method Summary

    Modifier and Type Method Description
    void close()
    Writes all remaining
    void flush()
    Flush this log stream
    protected void processBuffer()
    Converts the buffer to a byte[] and sends it to processLine
    protected void processLine​(byte[] line)
    Processes a line.
    protected abstract void processLine​(java.lang.String line)
    Processes a line.
    void write​(byte[] b, int off, int len)
    Write a block of characters to the output stream
    void write​(int cc)
    Write the data to the buffer and flush the buffer, if a line separator is detected.

    Methods inherited from class java.io.OutputStream

    nullOutputStream, write

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • write

      public final void write​(int cc) throws java.io.IOException
      Write the data to the buffer and flush the buffer, if a line separator is detected.
      Specified by:
      write in class java.io.OutputStream
      Parameters:
      cc - data to log (byte).
      Throws:
      java.io.IOException - if there is an error.
    • flush

      public void flush() throws java.io.IOException
      Flush this log stream
      Specified by:
      flush in interface java.io.Flushable
      Overrides:
      flush in class java.io.OutputStream
      Throws:
      java.io.IOException - if there is an error.
    • processBuffer

      protected void processBuffer() throws java.io.IOException
      Converts the buffer to a byte[] and sends it to processLine
      Throws:
      java.io.IOException - if there is an error.
    • processLine

      protected abstract void processLine​(java.lang.String line) throws java.io.IOException
      Processes a line.
      Parameters:
      line - the line to log.
      Throws:
      java.io.IOException - if there is an error.
    • processLine

      protected void processLine​(byte[] line) throws java.io.IOException
      Processes a line.

      This implementations invokes the string-arg version converting the byte array using the default encoding. Subclasses are encouraged to override this method (and provide a dummy implementation of the String-arg version) so they don't interfere with the encoding of the underlying stream.

      Parameters:
      line - the line to log.
      Throws:
      java.io.IOException - if there is an error.
      Since:
      Ant 1.8.3
    • close

      public void close() throws java.io.IOException
      Writes all remaining
      Specified by:
      close in interface java.lang.AutoCloseable
      Specified by:
      close in interface java.io.Closeable
      Overrides:
      close in class java.io.OutputStream
      Throws:
      java.io.IOException - if there is an error.
    • write

      public final void write​(byte[] b, int off, int len) throws java.io.IOException
      Write a block of characters to the output stream
      Overrides:
      write in class java.io.OutputStream
      Parameters:
      b - the array containing the data
      off - the offset into the array where data starts
      len - the length of block
      Throws:
      java.io.IOException - if the data cannot be written into the stream.