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
}
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!!

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.