tirsdag 13. september 2011

Tapestry5 and GORM

So I've had some fun lately trying to get Tapestry and Gorm to play nicely together. To make the learning experience a bit more realistic I started doing a small sample app. Its loosely inspired by a domain I'm scratching the surface of in my current consulting gig. I've had a ball learning more about groovy and Gorm, and it has been a nice refresher on my already fading Tapestry skills.

Domain modeling with Gorm has been an absolute pleasure (especially from someone coming from hibernate/jpa). It's just so neat and concise... and there is also all these nice little freebies you keep discovering.  Working with Tapestry (and the cool jquery flavored add-on tapestry5-jquery) was about as productive as I remembered. With the ability to write my pages/components in Groovy, the experience was even better. When the limitations of the java api became a burden, I always had the option of putting a thin layer of groovy in front to DSL'ify it to meet my expectations better. I suspect I will keep playing with this app to see where it leads. I'm also tempted to do a cousin implementation using grails sometime soon as well.

Did I have any problems along the way ? Sure did, but mostly in terms of things like:

  • Unifying logging from all those external dependencies (yeah its a lot I'm afraid, and Gorm is the main culprit!). To make life hard I figured I wanted to use logback. Once I finally got my dependencies right, with bridges and all, it now works fine
  • Setting up Spock tests with transactional support (proved to be a lot simpler than I initially thought) 
  • Intellij compilation error (which isn't really and error, but disrupts the flow). Keep getting a system.err when compiling groovy code. Unfortunately intellij insists its an error even though the compile actually succeeds. Something todo with groovy stubs and/or ast transformations I think. 

If time permits I'm planning to do a few future posts that dig into some details from the sample app. 


If you are interested in the sample app, feel free to pull it from github at https://github.com/rundis/TapestryGorm