DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=42544>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=42544

           Summary: cannot have multiple input tasks with command line
                    redirection
           Product: Ant
           Version: 1.7.0
          Platform: Other
        OS/Version: other
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Core tasks
        AssignedTo: dev@ant.apache.org
        ReportedBy: [EMAIL PROTECTED]


In 1.6.2 it used to be possible to invoke an ant script from an external java
program (or shell command) where input values were passed through command line
redirection with each value being terminated by a new line.

In 1.7.0 it appears this functionality has been broken since the
DefaultInputHandler has been modified to use a BufferedReader inside the
handleInput method. The problem with this is that in the first input task, the
bufferedreader will read up to the buffer size (8k), however the
DefaultInputHandler will only consume the first line of this. When the second
input task comes along it will not find anything (i guess maybe if you had very
large input you might find something).

We have a similar problem elsewhere in our code and we handled it by creating a
single static BufferedReader around System.in that was shared. This means that
line 1 can be read by one bit of code, line by the next and so on because they
are using a single BufferedReader.

In 1.6.2 the old code was using DataInputStream.readLine which is deprecated and
probably why the new code uses BufferedReader.

In order to solve my particular problem, I have written an extension of
BufferedReader which uses a single shared BufferReader around System.in. However
this is not a general purpose problem to the solution i think as the
InputHandler should handle the contract of working with the passed in stream.

One possible solution might be to implement a custom LineReader that does not
rely in BufferedReader.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to