❯ Guillaume Laforge

A groovy web server

Based on a suggestion made by Jamie McCrindle, I decided it was time to add some missing Groovy methods related to sockets. So far, I have added a bunch of IO/streams methods enhancing the JDK core classes, but there were no methods dealing with sockets. But now, this time is over. I have added two methods: Socket.withStreams(Closure) which takes a closure as argument, and has acces to an input stream and an output stream, and ServerSocket. Read more...

First steps in TDD-land

Unit tests aren’t really new for me, but so far, on the different projets on which I worked recently, I haven’t really had the opportunity to develop “test firt”. Moreover, I could not test much because those projects were not pretty test-friendly (static instances all around, nothing close to IoC/DI anywhere around). And also, on web-based and GUI projects, it is not that easy to write tests (when I have time, I should definitely have a look at those HTTP and Swing testing frameworks). Read more...

Heads-up on File and Stream groovy methods

Over the week-end, I implemented new groovy methods, as defined in GROOVY-208 Plus a few complementary methods. getText(): BufferedReader.getText() File.getText() File.getText(encoding) Process.getText() You can now easily read the full content of a file or of a buffered reader and get it as a String. // retrieve the content of the file def content = new File("myFile.txt").text // you can specify the encoding of the file // note that since getText() has a parameter, // you cannot call it with something like text("UTF-8") content = new File("myFile. Read more...

Timing a closure in Groovy

When you want to make some optimizations to your code, you often use the good old System.currentTimeMillis() method to time certain parts of your application. I wanted to do a similar thing when hacking some Groovy scripts recently, and the idea came to me that I could simply create a timing closure! So here it is, for your eyes only: timer = { closure -> start = System.currentTimeMillis() closure() println System. Read more...

Happy Birthday Codehaus

A year ago, Codehaus saw the light of day. And since, it gathered a lot of bright and talented persons working on innovative and very good quality projects. And moreover, those projects have a friendly licence scheme (I’m not a GPL/LGPL lover). For a few months, I’ve been part of the Hausmates, thanks to my efforts in developing some code for Groovy, and I’m really proud of beeing part of it. Read more...

Groovy-JDK doc: Parsing Java with QDox

Perhaps you noticed recently that there’s a new interesting page on Groovy’s website ? Well, all pages are interesting of course! But there’s a new page describing the Groovy methods enhancing the core JDK classes. In groovy, you have additional methods that you can call on standard Java classes. For instance, you can use the eachLine() method on java.io.File. With this method, you’ll be able to easily read a text file line after line, and do whatever with this line inside a closure without having to care about things like closing streams. Read more...

CVS and SSH2, not so easy

Yesterday, I was granted commit rights on the Groovy source tree, at Codehaus. Of special interest for me : I developed a utility class which helps Groovy create new Readers for text files with the correct encoding already set (I’m really keen on charset/encodings issues), Adding some new Groovy methods to the core JDK classes, Working on an automatic documentation generation engine “a la” Javadoc, so that it may be possible to browse all the methods that have been added to the core JDK classes. Read more...

IntelliJ prayer

That’s incredible, but Robert S. Sfeir is at it again in the EAP forum. He produced one more prayer that we should all be repeating again and again. (I hope he won’t mind me from quoting his holy words) Our IDEA who art in heaven Hollowed be thy name Thy IDE come, the EAP done On earth as it is in heaven, Give us this day our daily build, And forgive our bug reports, Read more...

IntelliJ version of Miranda Rights

After my suggestion of Miranda as a code name for the upcoming EAP of IntelliJ IDEA, there was a funny quote from Robert S. Sfeir in the forums regarding this suggestion. It’s a new version of the Miranda Rights : You have the right to refactor. Anything you refactor can be used against you in your code and calls. You have the right to have IDEA present now and during any future refactorings. Read more...

Code name for IntelliJ IDEA 5.0

IntelliJ IDEA 4.0 is not yet out of its Early Access Program phase that a discussion already started in the forums for the code name of the next EAP cycle. There are already a few propositions for the next code name. Among them: StarGate (hmm, not that good) Avani (which means earth in some indian languages) Stella (which will not be used because it was already used for IDEA 2.0 for those who remember) Avalon (already used by Microsoft’s new UI framework, and the Apache Avalon framework) Rhea (suggested internally at JetBrains by Eugene Belyaev) Aardvark (maybe too harsh to pronounce) Atlantis (mythological sunken island) Athena (greek goddess) Lachesis, Clotho or Athropos (the three moirae) Ananke (necessity), Erebus Vedra (as in Vedra Valles) Miranda (that’s my suggestion, already used by Miranda-IM, and it reminds something to outlaws in the US) Olesya (CVS integration developer), Katja or Laika (first female dog in space) Derivations of Simple (Simplex, Simplicity, SimpleA…) Dione (another Greek goddess) Aphrodite, Athena, Adonis (to stick with “A” and the Greek mythology) Artemida (tiger hunter… JDK 1. Read more...