summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Bodewig <bodewig@apache.org>2005-02-15 15:58:06 +0000
committerStefan Bodewig <bodewig@apache.org>2005-02-15 15:58:06 +0000
commit53cde27dd34a3c692aea2ca0649324937a6202ca (patch)
tree5c71c54c7db99717464c8b15a579d4eca9f6a90d
parentdfa1546f5a8702483bdfbf314faee2c37207d0b7 (diff)
downloadant-53cde27dd34a3c692aea2ca0649324937a6202ca.tar.gz
Use LineOrientedOutputStream with some tweaks to keep BWC signatures in LogOutputStream
git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277671 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java103
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingOutputStream.java12
-rw-r--r--src/main/org/apache/tools/ant/util/LineOrientedOutputStream.java2
3 files changed, 13 insertions, 104 deletions
diff --git a/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java b/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java
index 263ba531a..a97364eeb 100644
--- a/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java
+++ b/src/main/org/apache/tools/ant/taskdefs/LogOutputStream.java
@@ -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 @@ public class LogOutputStream extends OutputStream {
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 @@ public class LogOutputStream extends OutputStream {
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;
- }
- }
-
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingOutputStream.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingOutputStream.java
index f5bd60728..fe1c605f2 100644
--- a/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingOutputStream.java
+++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingOutputStream.java
@@ -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.
*
diff --git a/src/main/org/apache/tools/ant/util/LineOrientedOutputStream.java b/src/main/org/apache/tools/ant/util/LineOrientedOutputStream.java
index 86dfe1dc2..3da0556f1 100644
--- a/src/main/org/apache/tools/ant/util/LineOrientedOutputStream.java
+++ b/src/main/org/apache/tools/ant/util/LineOrientedOutputStream.java
@@ -73,7 +73,7 @@ public abstract class LineOrientedOutputStream extends OutputStream {
* 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 {