conor 2003/01/31 21:09:17 Modified: src/main/org/apache/tools/ant/taskdefs/optional/perforce P4HandlerAdapter.java Log: Avoid perforce task lockup when only output on stderr PR: 16544 Submitted by: Antoine Levy-Lambert Revision Changes Path 1.8 +33 -13 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4HandlerAdapter.java Index: P4HandlerAdapter.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/perforce/P4HandlerAdapter.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -w -u -r1.7 -r1.8 --- P4HandlerAdapter.java 30 Jul 2002 09:12:11 -0000 1.7 +++ P4HandlerAdapter.java 1 Feb 2003 05:09:17 -0000 1.8 @@ -1,7 +1,7 @@ /* * The Apache Software License, Version 1.1 * - * Copyright (c) 2001-2002 The Apache Software Foundation. All rights + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -86,18 +86,10 @@ } //Now read any input and process - - BufferedReader input = new BufferedReader( - new InputStreamReader( - new SequenceInputStream(is, es))); - - String line; - while ((line = input.readLine()) != null) { - process(line); - } - - input.close(); - + Thread output = new Thread(new Reader(is)); + Thread error = new Thread(new Reader(es)); + output.start(); + error.start(); } catch (Exception e) { throw new BuildException(e); @@ -122,4 +114,32 @@ public void stop() { } + public class Reader implements Runnable { + protected InputStream mystream; + public Reader(InputStream is) + { + mystream=is; + } + public void setStream(InputStream is) { + mystream=is; + } + public void run() { + BufferedReader input = new BufferedReader( + new InputStreamReader(mystream)); + + String line; + try { + while ((line = input.readLine()) != null) { + synchronized (this){ + process(line); + } + } } + catch (Exception e) { + throw new BuildException(e); + } + } + + } +} +
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]