tags:

views:

417

answers:

1

I have a groovy class that has the ability to write its output to a StringWriter. (via a setStringWriter method)

In java I would use the following code:

filter.setStringWriter(new StringWriter(){
   @Override
   public void write(String string){
       // do something with the string
   }
});

For Groovy I'm told to use a closure, I've tried the following with no luck:

def s =  {String line -> print line} as StringWriter
filter.setStringWriter(s)

or

filter.setStringWriter{String line -> print line}

How do I go about doing this, or is it even possible?

+4  A: 

The following link gives a clue, although it only mentions interfaces.

The following works with Groovy 1.6.1:

def s =  [ write: { String line -> print line} ] as StringWriter
filter.setStringWriter(s)
toolkit