Thursday, November 5, 2009

What's Old in Wonder

It's been a long time since the last What's New in Wonder -- almost 8 months. We've been busy, quietly making your life cooler :) There's actually been quite a bit of activity in Wonder, including contributions from lots of people outside the regulars. We've had a lot of Jiras filed (many with patches! thank you).

Thanks to everyone who contributed bugs, patches, tests, and features over the 8 months -- Anjo, Chuck, Quinton, Timo, Lachlan, Henrique, Ravi, Denis, Ray, Ramsey, Kieran, Travis(es), Michael, and anyone else I might be forgetting.

The synopsis below doesn't do justice to any of the items listed -- I encourage you to read the docs on each of them for more information, but it should at least give you a starting point for finding more information. As always, my own stuff is disproportionately weighted in the synopses :)

New Components

  • ERXSwitchComponent - patched in, hides the component name
  • ERXResponseComponent - lets you wrap a WOActionResults in a WOComponent implementation
  • ERXBooleanSelector - Yes/No/Blank picker
  • ERXClippy - wrapper around the Clippy flash clipboard access layer
  • ERXPodcastRssPage


  • Bunch of enhancements to AjaxModalDialog
  • iBox updated to 2.2
  • AjaxModalContainer tweaked to support dynamic resizing
  • Updated to Prototype 1.6.1 and Scriptaculous 1.8.3
  • New experimental support for returning components from Ajax action methods (when used with replaceID binding)
  • New experimental push/keep-alive support


  • New D2W page/component metrics
  • Cleanup on the 47 different boolean picker components
  • ERDEditableList brought over from Diva


  • bunch of new tools for tracking down editing context lock problems
  • support for tracking locks on ERXDatabaseContext
  • bunch of tweaks and fixes and new bugs but then more new fixes for autolocking (in particular, support for sharing an autolocked ec across threads)
  • support for bind variables with FrontBase
  • migration fixes for SQLServer and Derby
  • automatic batch faulting - basically Wonder watching your back about prefetching, preventing scenarios where you would have gotten a million individual fetches before
  • ERXPrefixQualifierTraversal - walks a qualifier and prepends a keypath to every key of the qualifier


  • supports non-EO's using EOClassDescriptions (via a new BeanInfoClassDescription)
  • supports non-model relationships on EO's (via a new class description factory that can handle EOEntityCD's and BeanInfoCD's for the same class)
  • format delegates for remapping commons keys (like id and type)
  • ERXKeyFilter now has a security delegate for implementation fancier rules
  • ERXRestFetchSpecification - makes it really easy to fetch based on query params with security filters
  • ERXFilteredQualifierTraversal - provides support for filtering a qualifier with an ERXKeyFilter (so people can't fetch on salary > x if they're not allowed to see salary)
  • support for deferring the generation of rest responses, so you can pass requests between controllers (this provides support for having compound controllers, like what would be needed for a Gianduia fetching controller)
  • easier support for generating html responses with rest controllers
  • ERXRouteLink - generate links to route controllers


  • new framework for exploring the snapshots that are currently loaded into memory in your application

Diva Look Framework

  • ERDivaLook/ERPrototaculous/ERDivaLookExample frameworks are a new D2W look focused on XHTML div content styled with css rather than the older table-based looks. Additionally it has its own Ajax framework (not to be confused with Wonder's existing Ajax.framework) based on WO 5.4's ajax request handler.


  • Movies example moved into Wonder


  • Patched to match trunk of chronic


  • Support for resizing attachments on upload
  • SipsImageProcessor - uses sips commandline tool to thumbnail (not as fast as ImageIO JNI imp, but less to build)


  • huge performance improvements
  • support for model reloading
  • updated to new JavaRebel version


  • ERPDFGeneration provides both a utility class and a wrapper component for generating
    PDF documents from XHTML markup. Two PDF generation engines are currently supported,
    FlyingSaucer (xhtmlrenderer) [1] and Useful Java Application Components (UJAC) [2],
    however additional parser based engines like FOP could be added fairly easily.


  • i guess it runs now? it got a bunch of build-related fixes at least


  • all cleaned up and shiny
  • split into memory store and entity store, which can be a basis for other custom adaptors
  • support for flattened attributes


  • Sandbox support


  • build scripts now support running test cases
  • bunch of test cases added


  • ERXSignalHandler - "multicast" signal handler
  • ERXProperties/Configuration cleaned up dramatically
  • ERXComponentUtilities.inheritTemplateFrom - make one component inherit the template of another component
  • ERIUIExample made fancier

Build Server

  • Moved entire to Hudson -
  • Rebuilds immediately on commit
  • All applications and examples are built fully embedded (= easy to download and run now)


  1. Again, thank you for the great work!

  2. In first place: thank to all for great work!
    I'm very interested about the implementation/changes in EOF. Where I can found more information about?