You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2001/07/13 14:55:08 UTC

cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional Javah.java

bodewig     01/07/13 05:55:05

  Modified:    src/main/org/apache/tools/ant/taskdefs LogStreamHandler.java
                        PumpStreamHandler.java
               src/main/org/apache/tools/ant/taskdefs/compilers
                        Javac12.java Javac13.java
               src/main/org/apache/tools/ant/taskdefs/optional Javah.java
  Log:
  Make sure streams get flushed and closed - otherwise we may be losing
  messages sent to the logging system, especially on platforms where
  line ends are neither \r nor \n - for example OS/390.
  
  Reported by:	Myron Uecker <ue...@us.ibm.com>
  
  Revision  Changes    Path
  1.3       +12 -0     jakarta-ant/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java
  
  Index: LogStreamHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/LogStreamHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LogStreamHandler.java	2001/01/03 14:18:30	1.2
  +++ LogStreamHandler.java	2001/07/13 12:54:28	1.3
  @@ -54,11 +54,13 @@
   
   package org.apache.tools.ant.taskdefs;
   
  +import org.apache.tools.ant.BuildException;
   import org.apache.tools.ant.Project;
   import org.apache.tools.ant.Task;
   
   import java.io.OutputStream;
   import java.io.InputStream;
  +import java.io.IOException;
   
   /**
    * Logs standard output and error of a subprocess to the log system of ant.
  @@ -79,4 +81,14 @@
                 new LogOutputStream(task, errlevel));
       }
   
  +    public void stop() {
  +        super.stop();
  +        try {
  +            getErr().close();
  +            getOut().close();
  +        } catch (IOException e) {
  +            // plain impossible
  +            throw new BuildException(e);
  +        }
  +    }
   }
  
  
  
  1.3       +14 -0     jakarta-ant/src/main/org/apache/tools/ant/taskdefs/PumpStreamHandler.java
  
  Index: PumpStreamHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/PumpStreamHandler.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PumpStreamHandler.java	2001/01/03 14:18:31	1.2
  +++ PumpStreamHandler.java	2001/07/13 12:54:30	1.3
  @@ -113,6 +113,20 @@
           try {
               errorThread.join();
           } catch(InterruptedException e) {}
  +        try {
  +            err.flush();
  +        } catch (IOException e) {}
  +        try {
  +            out.flush();
  +        } catch (IOException e) {}
  +    }
  +
  +    protected OutputStream getErr() {
  +        return err;
  +    }
  +
  +    protected OutputStream getOut() {
  +        return out;
       }
   
       protected void createProcessOutputPump(InputStream is, OutputStream os) {
  
  
  
  1.2       +8 -1      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/compilers/Javac12.java
  
  Index: Javac12.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/compilers/Javac12.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Javac12.java	2001/01/12 14:08:51	1.1
  +++ Javac12.java	2001/07/13 12:54:43	1.2
  @@ -79,10 +79,10 @@
           attributes.log("Using classic compiler", Project.MSG_VERBOSE);
           Commandline cmd = setupJavacCommand();
   
  +        OutputStream logstr = new LogOutputStream(attributes, Project.MSG_WARN);
           try {
               // Create an instance of the compiler, redirecting output to
               // the project log
  -            OutputStream logstr = new LogOutputStream(attributes, Project.MSG_WARN);
               Class c = Class.forName("sun.tools.javac.Main");
               Constructor cons = c.getConstructor(new Class[] { OutputStream.class, String.class });
               Object compiler = cons.newInstance(new Object[] { logstr, "javac" });
  @@ -102,6 +102,13 @@
                   throw (BuildException) ex;
               } else {
                   throw new BuildException("Error starting classic compiler: ", ex, location);
  +            }
  +        } finally {
  +            try {
  +                logstr.close();
  +            } catch (IOException e) {
  +                // plain impossible
  +                throw new BuildException(e);
               }
           }
       }
  
  
  
  1.2       +3 -2      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java
  
  Index: Javac13.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Javac13.java	2001/01/12 14:08:51	1.1
  +++ Javac13.java	2001/07/13 12:54:45	1.2
  @@ -86,10 +86,10 @@
           PrintStream err = System.err;
           PrintStream out = System.out;
   
  +        PrintStream logstr = 
  +            new PrintStream(new LogOutputStream(attributes, Project.MSG_WARN));
           // Use reflection to be able to build on all JDKs >= 1.1:
           try {
  -            PrintStream logstr = 
  -                new PrintStream(new LogOutputStream(attributes, Project.MSG_WARN));
               System.setOut(logstr);
               System.setErr(logstr);
               Class c = Class.forName ("com.sun.tools.javac.Main");
  @@ -108,6 +108,7 @@
           } finally {
               System.setErr(err);
               System.setOut(out);
  +            logstr.close();
           }
       }
   }
  
  
  
  1.5       +3 -2      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java
  
  Index: Javah.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/Javah.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Javah.java	2001/07/07 13:51:12	1.4
  +++ Javah.java	2001/07/13 12:55:00	1.5
  @@ -311,14 +311,14 @@
           PrintStream err = System.err;
           PrintStream out = System.out;
   
  +        PrintStream logstr = 
  +            new PrintStream(new LogOutputStream(this, Project.MSG_WARN));
           try {
               // Javac uses logstr to change the output stream and calls
               // the constructor's invoke method to create a compiler instance
               // dynamically. However, javah has a different interface and this
               // makes it harder, so here's a simple alternative.
               //------------------------------------------------------------------
  -            PrintStream logstr = 
  -                new PrintStream(new LogOutputStream(this, Project.MSG_WARN));
               System.setOut(logstr);
               System.setErr(logstr);
               com.sun.tools.javah.Main main = new com.sun.tools.javah.Main( cmd.getArguments() );
  @@ -338,6 +338,7 @@
           } finally {
               System.setErr(err);
               System.setOut(out);
  +            logstr.close();
           }
       }