Could you post a simple working example to the wiki?
Am 15.09.2009 um 23:42 schrieb Antoine Toulme:
So this works:
byteArray = Rjb::import('java.io.ByteArrayOutputStream')
printStream = Rjb::import('java.io.PrintStream')
out = byteArray.new()
Rjb::import('java.lang.System').out = printStream.new(out)
err = byteArray.new()
Rjb::import('java.lang.System').err = printStream.new(err)
... [do something]
err.toString.should match(/WARNING/)
Thanks Alex!
Antoine
On Tue, Sep 15, 2009 at 21:02, Alex Boisvert
<[email protected]>wrote:
Maybe worth considering just substituting System.out, System.err
with a
PrintStream hooked to a ByteArrayOutputStream, collecting the
result and
applying regexps to colorize and output to $stdout, $stderr
respectively.
That way, there's no messing with the classpath and no additional
interface
complexity.
alex
On Tue, Sep 15, 2009 at 10:38 AM, Antoine Toulme <[email protected]
>wrote:
So, I would have a .class file for the Java code needed, that I
would add
to buildr.The .class would be added to the RJB classpath, and the
manipulation itself would be done on Java.load.
I can probably to do this in a pluggable way (read: as a separate
project).
Thanks,
Antoine
On Tue, Sep 15, 2009 at 17:53, Alex Boisvert <[email protected]
>wrote:
It should work fine and I don't see a better approach.
alex
On Tue, Sep 15, 2009 at 6:41 AM, Antoine Toulme <[email protected]
wrote:
Hi everyone,
I'm trying to find a nice way to redirect the RJB output. I have
some
output
made directly from Java that I would like to reformat and
eventually
colorize.
From what I read, the best solution would be to replace the
PrintStreams
used in System.out and System.err by something that would pipe to
$stdout
and $stderr respectively.
From the RJB doc, I see RJB can bind a Ruby object to a Java
interface.
That
sounds like the right deal...
but PrintStream is a class.
The workaround is to have some Java code exposing an interface,
with a
PrintStream implementation that delegates everything to said
interface,
and
have RJB instanciate the interface and pass output along to
stdout and
stderr.
Was this attempted before ? Any advice on this ?
Thanks,
Antoine
_________________________________
Peter Schröder
IT
blau: +49 (0) 178 139 1035
fax: +49 (0) 40 288 071 - 71
mail: [email protected]
blau Mobilfunk GmbH
Schulterblatt 124
D-20357 Hamburg
Sitz: Hamburg
HRB 80531 Amtsgericht Hamburg
Geschäftsführer: Dirk Freise, Martin Ostermayer, Thorsten Rehling