buildr-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From peter schröder ...@blau.de>
Subject Re: Redirecting RJB output
Date Wed, 16 Sep 2009 07:19:46 GMT
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  
> <alex.boisvert@gmail.com>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 <antoine@lunar-ocean.com 
>> >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 <alex.boisvert@gmail.com 
>>> >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 <antoine@lunar-ocean.com
>>>>> 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: ps@blau.de

blau Mobilfunk GmbH
Schulterblatt 124
D-20357 Hamburg

Sitz: Hamburg
HRB 80531 Amtsgericht Hamburg
Geschäftsführer: Dirk Freise, Martin Ostermayer, Thorsten Rehling


Mime
View raw message