Introduction

This is a proposal for a next generation web application framework architecture, based on assuming the existence of JavaServer Faces and utilizing its extensibility points (as well as other capabilities of the servlet and portlet APIs) to add value and improve ease of use for application developers. It was originally proposed as "the" architecture for Struts 2.x, but has been accepted as a formal Struts subproject so that it can develop community and functionality here.

Key Pointers

The following links provide access to information about the proposal itself, links to the nightly build area for downloading the work in progress (there have been no formal releases yet), snapshots of the Javadocs for Shale and the "Use Cases" example application, and access to information about building Shale yourself.

Short Term Roadmap

The following bullets define a short term roadmap of functionality that should be included before an initial release of this technology:

  • Provide View Controller support for subviews (things included via Request Dispatcher include calls) - DONE!
  • Integration of transparent Spring bean generation in the managed beans facility - DONE!
  • Integration of Commons Validator for client- and server-side validation support - DONE!
  • Integration of Commons File Upload for file upload support
  • Integration of Struts Tiles (or, more likely, the standalone variant of Tiles being proposed for incubation) for templating support - DONE!
  • Refinements to the View Controller and Dialog Controller APIs for even easier use, and robustness in the face of exceptions thrown by application logic
  • Fleshing out the unit test framework (struts-shale-test) with mocks for the remaining framework APIs
  • Instrumenting the Use Cases example app with unit tests using the test framework. - DONE!
  • Explore integration with "workflow" technologies like Spring Web Flow and Beehive's PageFlows.

Long Term Roadmap

Longer term plans (but could be incorporated into an initial release if sufficient developer interest exists to make it happen):

  • Server side infrastructure to respond to background XML requests from JSF components (or other code) that has client side JavaScript behavior
  • Add some JSF components to provide easy developer access to these sorts of facilities, plus examples of how they can be used

Recipes and Articles About Shale

  • No labels