Dashboard > Spring Web Flow > Change Log
  Spring Web Flow Log In View a printable version of the current page.  
  Change Log
Added by Erwin Vervaet, last edited by Erwin Vervaet on Aug 15, 2005  (view change)
Labels: 
(None)

Release Candidate 1 - Completed Changes

For a list of completed changes, check the change log in CVS.

Release Candidate 1 - Work in Progress Changes

  • JSF integration
  • Tapestry integration
  • Full JMX monitoring

Under consideration (not yet assigned - needs discussion)

  • View simplification macros / tags
  • Global transitions (e.g 'cancel')
  • Compensating transactions
  • Flows that run in sync
  • Exception handling on a 'per flow' basis

Preview 5 - 2005.07.28

For more details on how to port an application from the Preview 4 release to the Preview 5 release, read the Porting Guide.

  • Renamed the static helpers in the ServletEvent class to match with their instance counterparts: e.g. getHttpServletRequest() was renamed to getRequest().
  • Renamed the addSubFlowState(...) methods in AbstractFlowBuilder to addSubflowState(...) to be consistent with the class name.
  • Reorganized packages to remove all cyclic dependencies. Most of the changes were in packages not typically used by end users of the system. As a result the impact on existing applications should be limited. Changes to look out for are: FlowConversionService is now in package org.springframework.webflow.convert, ExpiredFlowCleanupFilter is now in package org.springframework.webflow.execution.servlet and FlowExecutionListenerAdapter moved to the package org.springframework.webflow.execution.
  • Fixed JDK 1.3 compatability issues.
  • Fixed several bugs reported in JIRA.
  • Several improvements in FlowAction (the SWF-Struts integration).
  • Fixed Struts 1.1 compatability issues.
  • Minor changes in the SWF DTD: the "property" element is now always the first sub element of its containing parent element.
  • Added several unit tests, e.g. for FormAction.
  • Drastically improved FormAction. This also involved some minor refactorings in the FormObjectAccessor.
  • Improved AttributeMapperAction.
  • Improved JavaDoc.
  • Miscellaneous code cleanup, especially in spring-binding.

Preview 4 - 2005.07.17

For more details on how to port an application from the Preview 3 release to the Preview 4 release, read the Porting Guide.

  • Top level package rename from org.springframework.web.flow to org.springframework.webflow.
  • Changes to make this SWF compatible with Spring 1.2.2 and later.
  • Moved to a new build system based on Ant and Ivy.
  • Temporarily dropped Portlet support untill it is included in Spring 1.3.
  • Added state entry and exit actions.
  • Added some additional callbacks to the FlowExecutionListener: loaded(), saved() and removed().
  • Greatly enhanced expression language support.
  • Enhanced attribute mapper type conversion support.
  • Added SessionTransactionSynchronizer.
  • Added several convenience actions: CompositeAction, DelegatingAction and GuardedAction.
  • Introduced basic JMX monitoring capabilities, to be improved in future releases.
  • Better and simpler Struts integration. Check the "BirthDate" sample for an example.
  • Refactored FormObjectAccessor so that the getters return null instead of throwing an exception when the form object or Errors instance cannot be found.
  • Refactored FlowExecutionListenerList to no longer depend on the closure support in the sandbox. As a result, the iteratorTemplate() method was removed.
  • Fixed NullPointerException in Flow.getTransitionableState(String).
  • The FlowExecutionManager now allows you to register FlowExecutionListener s for executions of particular flows. This makes it easy to have a single manager managing all the flow executions in your app and still have listeners that apply to just a specific flow. To make this possible, the FlowExecutionListenerCriteria were introduced.
  • The TransitionableState now has a reenter() method that will be called when the state is re-entered. This allows you to have different behaviour when the state is first entered, or re-entered.
  • Fixed problem with 'form states': view states that use a setup action and a bindAndValidate when transitioning out of the state. The validation errors generated by the bindAndValidate were being overwritten by the setupForm action when the view state re-entered.
  • Removed hardwired dependency on LinkedHashSet, for use with JDK 1.3.
  • The ongoing flow execution is now exposed to the view as a FlowExecutionContext instance with name flowExecutionContext in the model. Existing apps should change the use of flowExecution in their views to flowExecutionContext from now on.
  • Miscellaneous code cleanup and JavaDoc enhancements.

Preview 3 - 2005.05.22

For more details on how to port an application from the Preview 2 release to the Preview 3 release, read the Porting Guide.

  • Renamed EventParameterMapperAction to AttributeMapperAction.
  • Dynamic (pluggable) view selection and model population capability for view states.
  • View state setup actions.
  • View forward and redirect expressions.
  • Subflow attribute mapping expressions.
  • Support for primitive/complex property types (besides string) using new type conversion infrastructure.
  • Enhanced flow execution listener lifecycle methods resumed, paused.
  • Pluggable expression evaluation capability.
  • Pluggability for all core definition objects: Flow, State, Transition, action, ...
  • Pluggability of transaction synchronizer interface for custom application-transaction demarcation.
  • A lot of general refining and polishing - package structure should be stable now.
  • Flow attribute mapping is now possible from a XML definition using the new "input", and "output" mapping elements within the "attribute-mapper" element (see the spring-webflow.dtd).
  • FlowController now provides a setFlow(Flow) method for convenience.
  • Renamed XmlFlowBuilder.resource to "location" for consistency.
  • Introduced convenient XmlFlowFactoryBean.
  • Introduced flow properties.
  • Introduced state properties.
  • Introduced transition properties.
  • The last transition to execute is now available for access via the RequestContext, allowing states and/or actions to reason on transition properties.
  • Renamed AbstractAction.doExecuteAction to AbstractAction.doExecute for consistency and conciseness.
  • Fixed bug where an incoming transaction token was searched for in the last event on the request context. The search now always uses the originating event of the request context.
  • Added support for transition actions. These actions can also be used as transition execution criteria.
  • Made Struts FlowExecutionStorage strategy pluggable.
  • Refactored ActionStateAction into AnnotatedAction. This has several advantages: it completely decouples Action from ActionState and avoids error prone lookup of action properties by the action itself.
  • Fixed bug in ExternalEvent.searchForParameter().
  • Simplified sample app package structure, collapsing unnecessary packages.
  • Added some extra mapping configuration methods to ParameterizableFlowAttributeMapper.
  • Added some convenience constructors to EventParameterMapperAction.
  • Fixed bug in Struts integration where Errors instance was not exposed via BindingActionForm adapter correctly.
  • Birthdate sample now is fully Struts-based, using Struts html form taglibs in the JSPs.
  • Added StrutsEvent, for easy access to a Struts ActionForm and ActionMapping from Web Flow action code.
  • Added Flow Launcher sample application illustrating different ways of launching flows with input parameters.
  • Fixed bug where flowExecution.start(event) was mapping all starting event parameters into flow scope.
  • Added getFormObject() and getFormErrors() methods that search both request and flow scope to FormObjectAccessor class.
  • Reworked FormObjectAccessor to alias form object and error instances under well-defined names.
  • Added getOrCreateAttribute method to Scope class.
  • Added assertAttributePresent method to Scope class.
  • Added Number Guess sample application, with two number guess games demonstrating flow-scoped history.
  • The FormAction now uses the WebDataBinder (introduced in Spring 1.2 RC2) to properly support HTML checkboxes.
  • Fixed bug in FlowController and PortletFlowController where the flowLocator property of the default flow execution manager was not getting initialized.
  • Improved build scripts for sample applications.
  • Fixed bug in PortletFlowController. As a result it now requires a Portlet session, which it will create if none exists.
  • Miscellaneous code cleanup and JavaDoc enhancements.

Preview 2 - 2005.04.11

For more details on how to port an application from the Preview 1 release to the Preview 2 release, read the Porting Guide.

  • Added sample flow execution tests to PhoneBook sample app.
  • ViewDescriptor is now an AttributeSource.
  • Added Sell Item sample application, demonstrating a wizard using continuations to preserve use of back/refresh browser buttons. This sample application also demonstrates the use of OGNL based transitional criteria.
  • Introduced TransitionCriteriaCreator, used by a FlowBuilder to create a transition criteria object based on an encoded string representation. Two TransitionCriteriaCreator implementations are provided out-of-the-box:
    • SimpleTransitionCriteriaCreator, the default, that does exact eventId matching or "*" wildcard matching (like in SWF preview 1).
    • OgnlTransitionCriteriaCreator, that parses an OGNL expression expressing a condition to be evaluated in the request context (e.g. ${lastEvent.id=='success' and flowScope.sale.shipping}).
  • Improved Phonebook sample deployment configuration, for easily reusing configuration between test and production environments.
  • Introduced MockFlowExecutionListener to support writing unit tests.
  • Added Portlet support. This also led to some minor refactoring, e.g. the abstract class ExternalEvent was introduced.
  • Improved package dependencies in sandbox classes shipped in webflow-support.jar - mainly package moves from 'util' to 'core'.
  • Reimplemented MultiAction using new utility class: DispatchMethodInvoker.
  • Added containsProperty() method to ActionStateAction.
  • Birthdate sample now demonstrates Spring Web Flow Struts integration.
  • Added some convenience methods to AbstractAction: getProperty(), containsProperty(), getActionStateAction() and getActionState().
  • The FlowController no longer requires a pre-existing HTTP session by forcing the "requiresSession" property to true. HTTP session access is now done via the HttpSessionFlowExecutionStorage, which provides a "createSession" property (which defaults to true, instructing the creation of a new session if no existing session is found). If you're not using an HTTP session backed flow execution storage, there is of course no need for an HTTP session at all.
  • Introduced convenience XML attribute for action-state: method="foo"
  • Renamed the ActionStateAction executeMethodName property to just method for simplicity.
  • Renamed FormAction.bindOnNewForm to bindOnSetupForm for consistency. Also renamed FormAction.suppressValidation to FormAction.validationEnabled to use positive logic.
  • Added FormAction.validate(RequestContext, Object, Errors) hook for easy customization of validation logic.
  • Added an ActionStateAction validatorMethod property, to specify a specific validation method to be invoked on the configured Validator used by the FormAction. This allows piecemeal validation to support wizard pages, for example. The validation method must be of the form public void <method>(Object formObject, Errors errors).
  • Reworked flow execution management (via FlowExecutionManager) and introduced pluggable flow execution storage strategies (via FlowExecutionStorage). This introduces many exciting features and possibilities:
    • Integration with Portlets and other frameworks is very trivial now, no need to implement a custom manager.
    • You now have the option to store flow execution state in any backing data store, e.g. the HttpSession (the default), a database, serialized files, ...
    • You may now store execution state client side if you want - no HTTP session required.
    • You can select to use a continuations based storage strategy, basically turning Spring Web Flow into a continuation driven system. On top of that, you can choose between client side or server side continuation storage. The continuation storage strategies also supports GZIP compression.
  • Renamed TransitionableState.getRequiredTransition() to TransitionableState.transitionFor().
  • Removed TransitionableState.executeTransition() in favor of TransitionableState.transitionFor(context).execute(context).
  • Removed hardwired dependency on LinkedHashSet, for use with JDK 1.3.
  • Added dispose() method to FlowBuilder to release any resources held by the builder.
  • Removed unused methods from AbstractFlowBuilder: attributeMapperId() and eventId().
  • Default "cacheSeconds" for FlowController is now 0 (no caching).
  • Miscellaneous code cleanup and JavaDoc enhancements.

Preview 1 - 2005.03.30

  • First public preview release.

Site running on a free Atlassian Confluence Open Source Project License granted to Spring Framework. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.5 Build:#811 Jul 25, 2007) - Bug/feature request - Contact Administrators