InfoQ

News

Grails 0.6 Adds Best of Breed Mix From Spring Web Flow and Rich Conversations a la JBoss

Posted by Shane Witbeck on Sep 14, 2007 06:53 PM

Community
Java
Topics
Web Frameworks
Tags
Grails
Graeme Rocher announced that Grails is moving further away from "its Rails-like beginnings" with this latest release.  Although this release was labeled as 0.6, it's clearly being modest with the amount of work that went into it. Here's the full feature list:

  • Joint Groovy/Java Compilation
  • Spring Web Flow Integration
  • Support for Spring scopes to allow scoped services
  • Improved support for REST with automatic XML/JSON marshalling and RESTful URL mappings
  • New Config DSL for configuration not possible by convention
  • Refreshed scaffolding interface and branding
  • Support for Sitemesh inline decorators
  • Controllers can now call tag libraries as methods
  • New GSP tags
  • Massive improvements to speed of start-up time, unit tests and generation tool

Spring Web Flow Integration

Just as Rod Johnson had proposed a new way of defining Spring-managed beans via code rather than the traditional XML markup, Graeme takes a similar approach by defining Spring Web Flow definitions with Groovy:

showCart {
on("checkout").to "enterPersonalDetails"
on("continueShopping").to "showCatalogue"
}
enterPersonalDetails {
on("submit") {
def p = new Person(params)
flow.person = p
def e = yes()
if(p.hasErrors() || !p.validate())return error()
}.to "enterShipping"
on("return").to "showCart"
on(Exception).to "handleError"
}
enterShipping {
on("back").to "enterPersonalDetails"
on("submit") {
def a = new Address(params)
flow.address = a
if(a.hasErrors() || !a.validate()) return error()
}.to "enterPayment"
}

The above snippet illustrates the concept of defining a unit of work or "conversation", as described in the JBoss Seam framework. Just as in Seam, the "flow" contains conversational state information.

Automatic XML/JSON marshalling and RESTful URL mapping

While previously using a plug-in for conversions, this release uses:

 import grails.converters.*
...

def list = {
render Book.list() as XML
// or render Book.list() as JSON
}

3 comments

Reply

Seam by Martin Gilday Posted Sep 15, 2007 8:15 PM
Re: Seam [News Item Updated] by Scott Delap Posted Sep 16, 2007 12:11 PM
nice work by serge boulay Posted Sep 16, 2007 1:36 PM
  1. Back to top

    Seam

    Sep 15, 2007 8:15 PM by Martin Gilday

    What integration has been added with JBoss Seam? There is no mention of it in the release notes. Here you have a subtitle "Rich Conversion via JBoss Seam" but then only have a code snippet showing content rendering, of XML and JSON. Graeme's blog seems to suggest that Grails' new integration with SWF provides something equivalent to Seam's conversations, not "via". Sorry to be pedantic, but the title just seems misleading (unless I have misunderstood).

  2. Back to top

    Re: Seam [News Item Updated]

    Sep 16, 2007 12:11 PM by Scott Delap

    Martin, You are correct. The news item has been updated to correctly identify that the conversation features are similar to Seam but not implemented using seem. Thank you for the quick observation.

  3. Back to top

    nice work

    Sep 16, 2007 1:36 PM by serge boulay

    exciting stuff guys, keep up the great work!!

Exclusive Content

Typemock: Past, Present and Future

Eli Lopian of Typemock answers a few questions on Typemock origins and where Typemock is headed.

Agile in Practice: What Is Actually Going On Out There?

Scott Ambler talks about actual data resulting from surveys made during 2006-2008, showing how Agile is perceived and implemented within organizations.

Building Smart Windows Applications

From QCon 2008, Daniel Moth presents on using Visual Studio 2008 and .NET 3.5 to create compelling rich Windows applications.

Joshua Kerievsky about Industrial XP

Joshua Kerievsky, founder of Industrial Logic, talks about Industrial Extreme Programming which extends XP by including practices dealing with management, customers and developers.

Jeff Barr Discusses Amazon Web Services

Amazon Web Services (AWS) Evangelist Jeff Barr discusses SimpleDB, S3, EC2, SQS, cloud computing, how different Amazon services interact, origins of AWS, AWS globalization and the March AWS outage.

More Than Just Spin (Up) : Virtualization for the Enterprise and SaaS

Cloud services have helped bring virtualization to the forefront. Its full power however, also includes other benefits such as high availability, disaster recovery, and rapid provisioning.

Ruby Beyond Rails

John Lam talks about his path to dynamic languages, some of the problems of making IronRuby run fast, and how the DLR helps with implementing languages.

VMware Infrastructure 3 Book Excerpt and Author Interview

VMware Infrastructure 3: Advanced Technical Design Guide and Advanced Operations Guide provides a wealth of practical insights into setting up virtualization in todays corporate environments.