bodewig     2005/02/15 07:58:06

  Modified:    src/main/org/apache/tools/ant/taskdefs LogOutputStream.java
               src/main/org/apache/tools/ant/taskdefs/cvslib
                        RedirectingOutputStream.java
               src/main/org/apache/tools/ant/util
                        LineOrientedOutputStream.java
  Log:
  Use LineOrientedOutputStream with some tweaks to keep BWC signatures in 
LogOutputStream
  
  Revision  Changes    Path
  1.23      +9 -94     
ant/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java
  
  Index: LogOutputStream.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- LogOutputStream.java      2 Feb 2005 12:52:47 -0000       1.22
  +++ LogOutputStream.java      15 Feb 2005 15:58:06 -0000      1.23
  @@ -17,37 +17,21 @@
   
   package org.apache.tools.ant.taskdefs;
   
  -import java.io.ByteArrayOutputStream;
   import java.io.IOException;
  -import java.io.OutputStream;
  +
   import org.apache.tools.ant.Project;
   import org.apache.tools.ant.ProjectComponent;
   import org.apache.tools.ant.Task;
  -
  +import org.apache.tools.ant.util.LineOrientedOutputStream;
   
   /**
    * Logs each line written to this stream to the log system of ant.
    *
    * Tries to be smart about line separators.<br>
  - * TODO: This class can be split to implement other line based processing
  - * of data written to the stream.
    *
    * @since Ant 1.2
    */
  -public class LogOutputStream extends OutputStream {
  -
  -    /** Initial buffer size. */
  -    private static final int INTIAL_SIZE = 132;
  -
  -    /** Carriage return */
  -    private static final int CR = 0x0d;
  -
  -    /** Linefeed */
  -    private static final int LF = 0x0a;
  -
  -    private ByteArrayOutputStream buffer
  -        = new ByteArrayOutputStream(INTIAL_SIZE);
  -    private boolean skip = false;
  +public class LogOutputStream extends LineOrientedOutputStream {
   
       private ProjectComponent pc;
       private int level = Project.MSG_INFO;
  @@ -74,41 +58,16 @@
           this.level = level;
       }
   
  -
  -    /**
  -     * Write the data to the buffer and flush the buffer, if a line
  -     * separator is detected.
  -     *
  -     * @param cc data to log (byte).
  -     */
  -    public void write(int cc) throws IOException {
  -        final byte c = (byte) cc;
  -        if ((c == '\n') || (c == '\r')) {
  -            if (!skip) {
  -              processBuffer();
  -            }
  -        } else {
  -          buffer.write(cc);
  -        }
  -        skip = (c == '\r');
  -    }
  -
  -    /**
  -     * Flush this log stream
  -     */
  -    public void flush() {
  -        if (buffer.size() > 0) {
  -            processBuffer();
  -        }
  -    }
  -
  -
       /**
        * Converts the buffer to a string and sends it to 
<code>processLine</code>
        */
       protected void processBuffer() {
  -        processLine(buffer.toString());
  -        buffer.reset();
  +        try {
  +            super.processBuffer();
  +        } catch (IOException e) {
  +            // impossible since *our* processLine doesn't throw an 
IOException
  +            throw new RuntimeException("Impossible IOException caught: " + 
e);
  +        }
       }
   
       /**
  @@ -129,52 +88,8 @@
           pc.log(line, level);
       }
   
  -
  -    /**
  -     * Writes all remaining
  -     */
  -    public void close() throws IOException {
  -        if (buffer.size() > 0) {
  -          processBuffer();
  -        }
  -        super.close();
  -    }
  -
       public int getMessageLevel() {
           return level;
       }
   
  -    /**
  -     * Write a block of characters to the output stream
  -     *
  -     * @param b the array containing the data
  -     * @param off the offset into the array where data starts
  -     * @param len the length of block
  -     *
  -     * @throws IOException if the data cannot be written into the stream.
  -     */
  -    public void write(byte[] b, int off, int len) throws IOException {
  -        // find the line breaks and pass other chars through in blocks
  -        int offset = off;
  -        int blockStartOffset = offset;
  -        int remaining = len;
  -        while (remaining > 0) {
  -            while (remaining > 0 && b[offset] != LF && b[offset] != CR) {
  -                offset++;
  -                remaining--;
  -            }
  -            // either end of buffer or a line separator char
  -            int blockLength = offset - blockStartOffset;
  -            if (blockLength > 0) {
  -                buffer.write(b, blockStartOffset, blockLength);
  -            }
  -            while (remaining > 0 && (b[offset] == LF || b[offset] == CR)) {
  -                write(b[offset]);
  -                offset++;
  -                remaining--;
  -            }
  -            blockStartOffset = offset;
  -        }
  -    }
  -
   }
  
  
  
  1.11      +3 -9      
ant/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingOutputStream.java
  
  Index: RedirectingOutputStream.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingOutputStream.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- RedirectingOutputStream.java      9 Mar 2004 16:48:14 -0000       1.10
  +++ RedirectingOutputStream.java      15 Feb 2005 15:58:06 -0000      1.11
  @@ -1,5 +1,5 @@
   /*
  - * Copyright  2002,2004 The Apache Software Foundation
  + * Copyright  2002,2004-2005 The Apache Software Foundation
    *
    *  Licensed under the Apache License, Version 2.0 (the "License");
    *  you may not use this file except in compliance with the License.
  @@ -16,29 +16,23 @@
    */
   package org.apache.tools.ant.taskdefs.cvslib;
   
  -import org.apache.tools.ant.taskdefs.LogOutputStream;
  +import org.apache.tools.ant.util.LineOrientedOutputStream;
   
   /**
    * A dummy stream that just passes stuff to the parser.
  - *
  - * @version $Revision$ $Date$
    */
  -class RedirectingOutputStream
  -     extends LogOutputStream {
  +class RedirectingOutputStream extends LineOrientedOutputStream {
       private final ChangeLogParser parser;
   
  -
       /**
        * Creates a new instance of this class.
        *
        * @param parser the parser to which output is sent.
        */
       public RedirectingOutputStream(final ChangeLogParser parser) {
  -        super(null, 0);
           this.parser = parser;
       }
   
  -
       /**
        * Logs a line to the log system of ant.
        *
  
  
  
  1.2       +1 -1      
ant/src/main/org/apache/tools/ant/util/LineOrientedOutputStream.java
  
  Index: LineOrientedOutputStream.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/main/org/apache/tools/ant/util/LineOrientedOutputStream.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LineOrientedOutputStream.java     15 Feb 2005 15:15:22 -0000      1.1
  +++ LineOrientedOutputStream.java     15 Feb 2005 15:58:06 -0000      1.2
  @@ -73,7 +73,7 @@
        * Converts the buffer to a string and sends it to
        * <code>processLine</code>
        */
  -    private void processBuffer() throws IOException {
  +    protected void processBuffer() throws IOException {
           try {
               processLine(buffer.toString());
           } finally {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to