You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2002/04/01 08:35:41 UTC
cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/cvslib RedirectingStreamHandler.java
donaldp 02/03/31 22:35:41
Modified: src/main/org/apache/tools/ant/taskdefs/cvslib
RedirectingStreamHandler.java
Log:
Made sure error is read (and ignored?) to avoid blocking.
Reported By: Vincent Massol
Revision Changes Path
1.2 +16 -6 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java
Index: RedirectingStreamHandler.java
===================================================================
RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RedirectingStreamHandler.java 28 Mar 2002 22:58:21 -0000 1.1
+++ RedirectingStreamHandler.java 1 Apr 2002 06:35:41 -0000 1.2
@@ -7,24 +7,25 @@
*/
package org.apache.tools.ant.taskdefs.cvslib;
-import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
-import java.io.OutputStream;
+import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.io.BufferedReader;
+import java.io.OutputStream;
+import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
/**
* A dummy stream handler that just passes stuff to the parser.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
- * @version $Revision: 1.1 $ $Date: 2002/03/28 22:58:21 $
+ * @version $Revision: 1.2 $ $Date: 2002/04/01 06:35:41 $
*/
class RedirectingStreamHandler
implements ExecuteStreamHandler
{
private final ChangeLogParser m_parser;
private BufferedReader m_reader;
+ private InputStreamReader m_error;
public RedirectingStreamHandler( final ChangeLogParser parser )
{
@@ -49,7 +50,7 @@
*/
public void setProcessErrorStream( InputStream is ) throws IOException
{
- //ignore
+ m_error = new InputStreamReader( is );
}
/**
@@ -59,7 +60,7 @@
*/
public void setProcessOutputStream( InputStream is ) throws IOException
{
- m_reader = new BufferedReader(new InputStreamReader(is));
+ m_reader = new BufferedReader( new InputStreamReader( is ) );
}
/**
@@ -72,6 +73,15 @@
{
m_parser.stdout( line );
line = m_reader.readLine();
+ }
+
+ // Read the error stream so that it does not block !
+ // We cannot use a BufferedReader as the ready() method is bugged!
+ // (see Bug 4329985, which is supposed to be fixed in JDK1.4 :
+ //http://developer.java.sun.com/developer/bugParade/bugs/4329985.html)
+ while( m_error.ready() )
+ {
+ m_error.read();
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>