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>