1388 lines
101 KiB
Plaintext
1388 lines
101 KiB
Plaintext
SPRING WEB FLOW CHANGELOG
|
||
=========================
|
||
http://www.springframework.org/webflow
|
||
|
||
Changes in version 2.0.1 (15.05.2008)
|
||
-------------------------------------
|
||
Improvements
|
||
* Added a Bundle-Name: entry to each project's manifest for improved OSGi compliance.
|
||
* Changed to use the ClassLoader of a flow's ApplicationContext when deserializing a FlowExecution, allowing for more a modular usage of SWF when running in a OSGi environment.
|
||
* Co-located FlowExecution creation and state restoration logic inside a FlowExecutionFactory, a design improvement eliminating the need for a separate FlowExecutionStateRestorer.
|
||
* Reduced the size a persistent flow execution by removing the need to store the id of the root flow definition with each FlowExecutionSnapshot.
|
||
* Simplified the Converter interface and implementation contract by allowing Converters to throw any Exception to report type conversion failures.
|
||
The ConversionExecutor now cares for wrapping any exception in a ConversionExecutionException providing full context about the conversion attempt.
|
||
This change will effect any custom Converter implementations extending from AbstractConverter.
|
||
Please see the existing converters in the org.springframework.binding.converters package for examples of refined Converter implementations.
|
||
* Improved booking samples by removing the unnecessary dispatcher-servlet-config.xml file and favoring configuration driven by a single master Spring configuration file.
|
||
* Made RequestContext and ExternalContext thread locals named for supporting introspection
|
||
* Added a MockExternalContext.setCurrentUser(Principal) method allowing for control over Principal implementation.
|
||
* Resolved cyclical dependencies between the action and engine packages, the config and engine packages, and the engine.model.registry and engine.model.builder subpackages.
|
||
|
||
Bug Fixes
|
||
* Fixed a bug preventing the handling of NumberFormatExceptions when binding to number properties using the default NumberFormatter.
|
||
* Fixed a bug preventing the loading of externalized flow definition resources in a EAR environment, for example, in Web Logic.
|
||
* Fixed a bug requiring Spring Portlet MVC in the classpath even in a Servlet-based web application when running on a Portal server.
|
||
* Fixed a bug preventing generic use of javax.faces.model.DataModel as the target type of a List conversion.
|
||
* Fixed a bug effecting TransitionCriteria expressions that evaluate the currentEvent; for example ${currentEvent.id == 'submit'}.
|
||
This bug fix required a change to how currentEvent attributes are accessed with EL: instead of accessing an event attribute directly like ${currentEvent.attr},
|
||
access an attribute through the 'attributes' property like ${currentEvent.attributes.attr}. The reference documentation was updated to reflect this change.
|
||
* Fixed a bug resulting in loss of JSF ExternalContext state during execution of the JSF Lifecycle.
|
||
This bug was effecting integration of the Trindad component library, which requires a special Response object to be set for its Ajax support to work.
|
||
* Fixed a bug preventing resolution of flow-local messages for flows launched as subflows.
|
||
* Fixed a bug where field errors recorded using Errors.rejectValue were not being associated with the source field.
|
||
* Fixed a bug preventing binding of unselected checkbox fields in a Spring MVC View environment.
|
||
* Restored JDK 1.4 compatibility in two places: when catching and re-throwing an Exception thrown by a Spring MVC View, when writing out mock responses during testing.
|
||
|
||
Documentation
|
||
* Added documentation on Spring Faces integration with Rich Faces and Apache Trinidad JSF component libraries.
|
||
* Added documentation on FlowHandler and externalRedirect: redirect prefixes.
|
||
* Added documentation on accessing Web Flow artifacts from Maven Central.
|
||
* Clarified the conversation-scoped and view-state managed persistence context patterns will be considered for implementation in future Web Flow releases.
|
||
* Removed unnecessary note about special Spring MVC and JSF model binding semantics; the semantics should be equal between view technologies, even if the underlying technologies differ.
|
||
* Improved documentation on model validator conventions.
|
||
|
||
Changes in version 2.0.0 (29.04.2008)
|
||
-------------------------------------
|
||
New Features
|
||
* Formally introduced the Spring Javascript (spring-js) public API and quick reference.
|
||
The Spring.js library provides a consistent API for decorating HTML DOM nodes with rich widgets such as a filtering select,
|
||
calendar, validating text box, currency text box, etc. The API builds on Dojo 1.1 as the underlying widget toolkit.
|
||
|
||
* Added support for Ajax views with Spring MVC and Tiles. This enables the rendering of JSP fragments / partials in a plain Spring MVC environment.
|
||
See the 'booking-mvc' reference application for an example.
|
||
|
||
* Enhanced the 'booking-mvc' sample to use the Spring.js API for applying Ajax and client-side validation behaviors.
|
||
This puts the Spring MVC + Web Flow + JSP sample on par with the Spring MVC + Web Flow + JSF sample in terms of "rich web" behavior.
|
||
Ajax partial rendering, popup dialogs, hover effects, as well as text, number, and date validation are all demonstrated.
|
||
|
||
* Added support for automatic partial rendering of error messages when validation errors occur.
|
||
|
||
* Added support for convention-based model validation in a JSF environment, consistent with the rules defined in the reference documentation.
|
||
|
||
* Added support for accessing flow message bundle resources, such as internationalized labels, using the 'resourceBundle' EL variable.
|
||
For example: the expression #{resourceBundle.myLabel} would resolve 'myLabel' in your messages.properties file.
|
||
|
||
* Added support for accessing beans managed by the standard JSF managed-bean facility from a flow definition.
|
||
This is particularly useful for using Web Flow in existing JSF applications.
|
||
To enable, set the 'enable-managed-beans' attribute to true in your Faces flow-builder-services configuration.
|
||
|
||
* Added support for explicit redirect prefixes, respected when requesting external redirects from within a flow or by a FlowHandler.
|
||
The supported prefixes are:
|
||
servletRelative:/<path> - relative to the current servlet mapping
|
||
contextRelative:/<path> - relative to the web application
|
||
serverRelative:/<path> - relative to the server
|
||
http://<url> or https://<url> - an absolute URL
|
||
No prefix - servlet-mapping relative e.g. '/hotels/index' would be servlet-mapping relative.
|
||
|
||
* Added instructions on how to obtain Web Flow release artifacts from the SpringSource Enterprise Bundle Repository using Maven or Ivy.
|
||
See the readme.txt included in this distribution for instructions on how to do this.
|
||
|
||
Improvements
|
||
* Renamed Web Flow specific terms 'conversation' and 'continuation' to 'flow execution' and 'flow execution snapshot', respectively (SWF-651).
|
||
With these terms, rather than saying "users participate in conversations and continuations are created to support backtracking",
|
||
you would simply say "users participate in flow executions and snapshots of execution state are taken to support backtracking".
|
||
This lexicon improvement resulted in a package rename of repository.continuation to repository.snapshot, as well as several repository class renames.
|
||
The default encoded flow execution key format is now e<executionId>s<snapshotId> as a result.
|
||
The webflow-config flow-execution-repository attributes are now 'max-executions' and 'max-snapshots' as a result.
|
||
The term "Conversation" still has a place, e.g. conversationScope, but this is a concept specific to the base web MVC platform and external to Web Flow.
|
||
|
||
* Made the FlowExecutionSnapshotFactory of DefaultFlowExecutionRepository pluggable (SWF-530).
|
||
|
||
* Removed the 'type' attribute of the webflow-config flow-execution-repository element (SWF-651).
|
||
This element should be used to customize configuration of the default repository implementation.
|
||
To plug in custom implementations, use regular Spring beans.
|
||
|
||
* Introduced a FlowExecutionSnapshotGroup hook for customizing the algorithm used to manage the storage of flow execution snapshots (SWF-503).
|
||
|
||
* Moved the view-state 'history' attribute to the view <transition> element to allow setting history policies per transition (SWF-628).
|
||
|
||
* Improved the implementation of the Spring MVC integration for both Servlet MVC and Portlet MVC environments.
|
||
These improvements consisted of:
|
||
- Eliminating code duplication between FlowController and FlowHandlerAdapter. The FlowController now delegates to a FlowHandlerAdapter internally.
|
||
|
||
- Removing the FlowController and FlowHandlerAdapter constructors that accepted a FlowExecutor argument in favor of a default constructor with a flowExecutor property.
|
||
This was done for simplicity reasons for their typical use as Spring beans.
|
||
Please note this change requires a minor update to pre 2.0.0 Web Flow + MVC configurations.
|
||
|
||
- Adding support for auto-detecting if Web Flow is running in a Servlet or Portlet MVC environment, and applying the appropriate environmental defaults.
|
||
|
||
- Introducing a FlowViewResolver hook for customizing how Spring MVC views are resolved in a Web Flow environment when defining a custom MvcViewFactoryCreator.
|
||
By default, view ids are resolved to flow-relative file resources.
|
||
Pre-existing Spring MVC ViewResolvers can be used by setting the 'viewResolvers' property on the configured MvcViewFactoryCreator instance.
|
||
|
||
- Improving the Portlet FlowHandler interface definition. A Portlet FlowHandler can now return a error view to render when handling a flow exception.
|
||
Also, the FlowHandler can respond to a flow outcome in an ActionRequest. A typical response action is to change the Portlet mode; e.g. from EDIT to VIEW.
|
||
|
||
- Introducing a FlowExecutionOutcome parameter object for conveniently handling a flow outcome such as 'bookingConfirmed' (SWF-634).
|
||
This improvements effects the signature of the FlowHandler interface.
|
||
|
||
* Factored out AjaxHandler into the spring-js project as a strategy interface that can be used across controller / view environments.
|
||
Also moved the SpringJavascript and RichFaces AjaxHandler implementations to this project.
|
||
This change makes the spring-js.jar a required Web Flow dependency needed in conjunction with the Web Flow Spring MVC integration.
|
||
|
||
* SelectionTrackingActionListener nows work with any JSF component that iterates over a DataModel (SWF-646).
|
||
|
||
Bug Fixes
|
||
* Fixed several issues with the Web Flow 1 to 2 flow upgrader tool (SWF-643, SWF-644).
|
||
* Flash scope is now stored with the Conversation object, preventing snapshotting of flash values and providing equivalent semantics of flash in other frameworks (SWF-639).
|
||
* Fixed several JDK 1.4 compatibility issues (SWF-612, SWF-638).
|
||
* Fixed a bug preventing action execution attributes such as a FormAction 'validatorMethod' from being respected (SWF-626).
|
||
* Fixed a bug preventing data binding to nested bean properties (SWF-625).
|
||
* Fixed a bug preventing bind suppression with bind="false" when using OGNL.
|
||
* Fixed a parsing bug for the <exception-handler> XML flow definition element (SWF-613).
|
||
* ResourceServlet now restricts access to protected resources within the WEB-INF directory (SWF-604).
|
||
* Fixed several bugs in both the Hibernate and JPA persistence listeners preventing use of flow-managed persistence contexts with subflows (SWF-600).
|
||
* 'bind' attribute is now supported on global-transitions now, for global events where data binding should occur (SWF-597).
|
||
* Fixed a bug where a MessageContext is not preserving message order (SWF-596).
|
||
* Fixed a possible NPE when using Spring Faces command buttons (SWF-594).
|
||
* Resolved cyclical dependency between mvc.view and the mvc.servlet/mvc.portlet packages (SWF-580).
|
||
This resulted in the move of MvcViewFactoryCreator from the mvc.view package to a new mvc.builder package.
|
||
* Fixed a bug preventing non-validating Dojo widgets from working with Spring Javascript (SWF-606).
|
||
* Fixed a bug preventing proper Locale resolution for flow message bundles (SWF-622).
|
||
* Fixed a bug preventing HTML button form parsing of eventIds for view-state external redirect postbacks (SWF-632).
|
||
* Fixed a possible NPE when rendering a MVC View from a EndState (SWF-656).
|
||
|
||
Changes in version 2.0 RC1 (11.04.2008)
|
||
-------------------------------------
|
||
Major New Features
|
||
* Introduced a new Web Flow 2 reference guide, available in PDF and HTML format.
|
||
The new guide is written in "quick reference" style with complete code examples.
|
||
|
||
* Added support for migrating from Web Flow 1 to 2.
|
||
Included in this distribution is a WebFlowUpgrader tool capable of converting flows from the version 1 syntax to the version 2 syntax.
|
||
See the reference guide for instructions on how to use this tool.
|
||
|
||
* Added support for flow definition inheritance.
|
||
With this feature, A flow may extend one or more flows. A flow state can also extend another state.
|
||
This feature is used to facilitate reuse between flows and states that share a common structure.
|
||
|
||
* Added Portlet support. See the Portlet section of the reference guide and the booking-mvc-portlet and booking-faces-portlet sample applications for examples.
|
||
|
||
* Introduced the spring-js module called "Spring Javascript".
|
||
This module provides a Javascript abstraction framework for applying client-side behaviors such as form validation and Ajax in a consistent manner.
|
||
The default UI toolkit this framework builds upon is Dojo 1.
|
||
Spring's JSF integration module called "Spring Faces" builds on spring-js to provide simple declarative JSF components for validation and Ajax.
|
||
|
||
* Added integration with the RichFaces JSF component library. Rich Faces can be used with the Spring Faces component library or used standalone.
|
||
|
||
* Added a "jsf-booking" reference application that offers a comparsion between a traditional "JSF-centric" web application
|
||
and a Spring web application that uses JSF as the UI component model.
|
||
Compare jsf-booking with booking-faces to see the differences in the architectural approach and implementation.
|
||
Particularly insightful for seasoned JSF developers interested in Spring.
|
||
|
||
* Introduced support for automatic model binding and validation with Spring MVC.
|
||
This support provides a concise alternative to manual setupForm and bindAndValidate calls using FormAction.
|
||
This support also allows registration of data input Formatters application wide,
|
||
reducing the need to manually register PropertyEditors on a view-by-view basis in many cases.
|
||
Support for suppressing data binding for a event such as a cancel button click is also provided.
|
||
|
||
* Introduced view scope.
|
||
View scope is allocated when a view-state enters and destroyed when a view-state exits.
|
||
The scope is particularly useful for updating a model over a series of Ajax requests.
|
||
|
||
* Added support for flow message bundles.
|
||
Create a messages.properties file in your flow's working directory for the Locales you need to support and off you go.
|
||
|
||
* Introduced configurable view-state history polices.
|
||
A view state can preserve its history to support backtracking, discard its history to prevent backtracking,
|
||
and invalidate all previous history to disallow backtracking after a point of no return.
|
||
See the new 'history' attribute on the view-state element.
|
||
|
||
* Refined the flow execution snapshotting process.
|
||
These refinements capture view-state form values on postback to support restoring those values when backtracking.
|
||
|
||
* Simplified flow execution testing by allowing you to "jump" to any state to begin a test case.
|
||
See the booking-mvc and booking-faces for examples of flow test cases.
|
||
|
||
Minor Improvements
|
||
* Added "before view rendering" and "after view rendering" FlowExecutionListener callbacks.
|
||
* Upgraded to Dojo 1.1 from 1.0.
|
||
* Attempts to lock a Conversation will now throw an Exception after a configurable timeout period (default is 30).
|
||
* Changed the faces-config schema to simply 'faces' in-line with Spring conventions.
|
||
* Added automatic registration of Spring 2 Flow scopes in the flow-local application context, removing the need for a custom enable-flow-scopes tag.
|
||
* Added a flow-registry 'parent' attribute, allowing registries to be linked together in a hierarchy.
|
||
* Made the JSF 1.2 RI the default JSF implementation used by the JSF samples.
|
||
* Updated the distribution structure to use the new "Spring Build" system.
|
||
* Made backport-util-concurrent the fallback concurrency framework in a Java 1.4 environment, instead of oswego-concurrent.
|
||
* Added a dynamic subflow resolution capability.
|
||
* Simplified the FlowHandler interface and added examples of implementing FlowHandlers to manage access to a flow in a custom manner.
|
||
* Upgraded the booking-mvc sample to show a mixing Spring MVC @Controllers with web flows, which is typical in a real-world application.
|
||
* Added ExternalContext.getLocale() to get the client locale from the flow in a portable manner.
|
||
* Added ExternalContext.getCurrentUser() to get the current user principal from the flow in a portable manner.
|
||
* Restored support for setting action execution attributes such as validatorMethod. See the <attribute> sub-element of <evaluate>, <set>, and <render>.
|
||
|
||
Changes in version 2.0 M4 (06.03.2008)
|
||
-------------------------------------
|
||
|
||
General
|
||
* Stabilized the Web Flow 2 architectural model. This includes Web Flow's role and relationship with Spring MVC, JSF, and Ajax,
|
||
as well as the definition of new Web Flow 2 extension points.
|
||
Notes:
|
||
- Web Flow 2 will continue to play the role of a stateful controller framework complimenting stateless web controller implementations like @Controller.
|
||
- In this role, Web Flow continues to plug into Spring MVC via Controller and HandlerAdapter hooks and treats Spring MVC
|
||
as the base web MVC platform for request dispatch.
|
||
- Web Flow can now manage the JSF UI component lifecycle fully within its ViewState lifecycle. This work resides in the Spring Faces project.
|
||
- Spring MVC can also now execute the JSF rendering lifecycle directly, allowing rendering of JSF views by @Controllers as well.
|
||
This work also resides in the Spring Faces project.
|
||
- The SWF ViewFactory API is an extension point for other UI framework providers to integrate their view rendering and postback lifecycles
|
||
into the Web Flow Execution Engine. SWF 2 ships integration with Spring MVC and JSF, and we expect additional UI frameworks to integrate over time.
|
||
- The SWF FlowExecutor API can be used to embed the Web Flow engine in any web controller environment. For example, Grails uses this API as does IceFaces.
|
||
- Web Flow 2 defines a general model for handling asynchronous events from within a page and requesting partial rendering of page fragments after
|
||
handling those events. Spring Javascript Ajax integration ships with SWF 2.x, and hooks exist for other Ajax framework providers to plug in.
|
||
|
||
Major New Features
|
||
* Introduced a much simplified XML-based flow definition syntax. See the "Spring Travel" reference applications (booking-faces and booking-mvc projects) for an
|
||
illustration of the new syntax. Use of the version 2 syntax can reduce the size of a version 1 flow definition by up to 50%. This is achieved
|
||
primarily by stronger Expression Language (EL) integration and simpler tags for action execution and data mapping.
|
||
|
||
* Added Spring Security integration. Full support for securing flows, states, and transitions is provided. A new "currentUser" EL variable
|
||
provides easy-reference to the current Authenticated user from a flow definition or view template.
|
||
|
||
* Added full support for flow exception handling, including support for automatically restarting a flow that has ended or expired.
|
||
|
||
* Added support for view "event handlers", transitions that process Ajax events that should not change the current page.
|
||
A new "render" element allows you to request fragment(s) of a page that should re-render after handling an Ajax event.
|
||
This element is not tied to any particular Ajax framework.
|
||
|
||
* Added support for "view variables" (view scope or page scope).
|
||
A view variable is allocated when its containing view-state enters and destroyed when that state exits.
|
||
These variables provide a page context and are particularly useful for updating a model over a series of Ajax requests.
|
||
|
||
* Added support for @Autowired flow variables. Flow and view variables can now have their dependencies @Autowired by Spring, enabling flow-scoped beans
|
||
to hold references to Spring-managed beans such as @Services. If a dependency is not serializable and therefore transient, those references will
|
||
be re-wired for you automatically between requests.
|
||
|
||
* Added support for "popup" view-states. Mark a view-state as popup=true and it will render in a popup dialog when Javascript is enabled.
|
||
|
||
* Introduced a Javascript abstraction framework called "Spring Javascript", currently providing Dojo and Ext based implementations.
|
||
This abstraction framework provides the following:
|
||
- A common interface for Ajax, regardless of which toolkit is being used under the covers
|
||
- An unique aspect-oriented configuration API for decorating HTML DOM nodes with rich web behaviors, including client-side validation behaviors.
|
||
|
||
* Added a lightweight JSF component library that uses Spring Javascript underneath to employ progressive enhancement techniques,
|
||
degrading nicely if Javascript is not available for use on the client. See the Spring Travel example for an illustration;
|
||
turn Javascript off and compare the application to when Javascript is turned on.
|
||
|
||
* Added support for registering "Flow Handlers", as an alternative or supplement to the traditional Spring MVC FlowController.
|
||
A FlowHandler is a gatekeeper that brokers access to a single flow definition.
|
||
Such handlers are useful when you need the to handle flow input mapping, flow outcomes, or flow exceptions in a custom manner.
|
||
See the FlowHandlerAdapter and FlowHandler Javadoc API for more information.
|
||
|
||
Changes in version 2.0 M3 (20.12.2007)
|
||
-------------------------------------
|
||
Package org.springframework.webflow.faces
|
||
* Added built-in Ajax support for rendering partial page views in response to asynchronous Web Flow events.
|
||
See the booking-jsf sample for an example.
|
||
* Added built-in support for progressive enhancement, including a library of JSF components that degrade nicely if Javascript
|
||
is not available on the client. See booking-jsf for an example of two such components: first, the Spring Faces command link which
|
||
renders as a standard submit button if Javascript is not available, and second a popup window that displays a partial asynchronous response if
|
||
Javascript is available (otherwise a full synchronous page navigation occurs).
|
||
* Polished overall JSF integration approach since M2, including applying refinements and performance optimizations
|
||
to the UIViewRoot state saving strategy.
|
||
* Upgraded to Dojo 1.0 from 0.9.
|
||
|
||
Changes in version 2.0 M2 (30.10.2007)
|
||
-------------------------------------
|
||
|
||
General
|
||
* Spring Web Flow now cares for the entire web controller request/response lifecycle (including control over the view rendering process, too!)
|
||
* Spring Web Flow now provides first-class JSF and Spring MVC integration by driving their respective view rendering and
|
||
restoration request lifecycles in the context of a web flow execution request. This simplifies view technology integration
|
||
for the developer, provides a cleaner and more powerful architectural model, and makes it possible to mix-and-match JSF and MVC-style views
|
||
in the same application, if desired. Support for Portlet MVC using this approach will be added in a future 2.x milestone.
|
||
* Please see the "booking-jsf" reference application for a complete example of a "standalone" webflow app using JSF as the view technology.
|
||
Please see the "booking-mvc" reference application for a complete example of a "embedded" webflow app using Spring MVC as the view technology.
|
||
Note it would be possible to introduce flows that render JSF-based views in this "embedded" mode, if desired.
|
||
* The default URL scheme for working with flows is now REST-based:
|
||
http://host/<flowId>[?requestParameters] - to launch a new flow execution; for example http://host/booking
|
||
http://host/<flowId>?execution=<flowExecutionKey> - to resume a paused flow execution; for example http://host/booking?execution=e1s1
|
||
This scheme will be configurable in later 2.x milestones, primarily to ease migration to 2.0 from 1.0.
|
||
* Flow execution key assignment now happens before a view state is entered now, allowing a flow execution to send proper callback Url to a
|
||
external systems that will take over control of the conversation and return control at a later time. An example would be a e-shopping site
|
||
redirecting to paypal to complete a payment authorization. This was difficult to do in SWF 1.0 and is now supported natively.
|
||
|
||
Package org.springframework.binding
|
||
* Simplified Expression and ExpressionParser abstraction, normalized parser contract to be consistent between parser implementations as far as possible.
|
||
OGNL and the Unified EL are the two supported expression parser implementations. OGNL is currently the default. The Unified EL is recommended for
|
||
a JSF environment. See booking-jsf for an example of the Unified EL in use. See booking-mvc for an example of OGNL in use.
|
||
These changes will require tweaks in flow definitions being upgraded to 2.x that define implicit eval expressions without encasing them in explicit
|
||
eval expression delimiters (#{} for EL, ${} for OGNL). Now, such delimiters are required for eval expressions for clarity and consistency.
|
||
|
||
Package org.springframework.webflow.engine
|
||
* Added support for "flow relative resources". Most notably, this allows views to be selected by a flow-relative file path, rather than requiring
|
||
a fully-qualified context path. See booking-mvc and booking-jsf for an example.
|
||
* Removed support for inline flows entirely for 2.x. Use subflows instead. Support for local flow registries for internal subflows is planned for
|
||
a future 2.x milestone.
|
||
* Removed support for declaring flow variables whose source value is sourced from a Spring bean factory. Use simply name/class notation instead.
|
||
Support for dependency injection of flow variables is planned for a future 2.x milestone.
|
||
|
||
Package org.springframework.faces
|
||
* Made Dojo the default UI toolkit for the default 'faces' component namespace. See booking-jsf for an example of using Spring Faces with the Dojo toolkit.
|
||
* Made Ext an alternate UI toolkit and introduced the alternate 'faces-ext' component namespace.
|
||
* Added support for serving web resources from .jar files using the general purpose 'resources' flow. See booking-jsf or mvc for an example.
|
||
|
||
Package org.springframework.webflow.samples
|
||
* Introduced booking-mvc, the hotel booking reference application using Spring MVC-based views with Tiles for templating.
|
||
* Removed old SWF 1.x samples, with 2.x now focusing on a smaller set of more comprehensive reference applications.
|
||
|
||
Changes in version 2.0 M1 (21.08.2007)
|
||
-------------------------------------
|
||
|
||
Package org.springframework.binding
|
||
* Fixed serializability problems in ConversionException, EvaluationException and MethodInvocationException.
|
||
* Added targetCollection(String) method to MappingBuilder.
|
||
* ConversionExecutor now checks for assignment compatible types (SWF-337).
|
||
* Fixed bug in MapAccessor where accessing a map entry with a null value would result in an exception (SWF-343).
|
||
|
||
Package org.springframework.webflow.action
|
||
* Improved FormAction.setupForm() JavaDoc (SWF-325).
|
||
|
||
Package org.springframework.webflow.config
|
||
* FlowExecutorFactoryBean now has an 'inputMapper' property to conveniently configure the 'inputMapper'
|
||
property of the created FlowExecutorImpl object.
|
||
* Added a new <enable-scopes/> bean definition to a new 2.0 revision of the spring-webflow-config schema to support
|
||
Web Flow scoping of beans in Spring (SWF-163).
|
||
|
||
Package org.springframework.webflow.engine
|
||
* Made flash scope a property of the FlowExecution instead of the active FlowSession. This allows flash messages to be saved across an redirect
|
||
if the messages were put there by a subflow that ended, for example (SWF-221).
|
||
|
||
Package org.springframework.webflow.context.scope
|
||
* Added support for Web Flow scoping of Spring beans (SWF-163).
|
||
|
||
Package org.springframework.webflow.conversation
|
||
* Each SessionBindingConversationManager now uses a unique key to store it's conversation container
|
||
in the session (SWF-304).
|
||
|
||
Package org.springframework.webflow.core
|
||
* Fixed DefaultExpressionParserFactory to not require OGNL on the classpath if another expression parser
|
||
is configured (SWF-335).
|
||
|
||
Package org.springframework.webflow.definition.registry
|
||
* Added namespace awareness to the flow registry allowing flows with the same id to be placed in different namespaces
|
||
and be referenced by a 'flow path' (SWF-363).
|
||
|
||
Package org.springframework.webflow.engine
|
||
* Added invoke(String, Action) method to AbstractFlowBuilder.
|
||
* Added initBuilder() hook method to AbstractFlowBuilder.
|
||
* Added name(String, Action) method to AbstractFlowBuilder for convenient creation of named actions.
|
||
* AnnotatedAction now has a convenience putAttribute(String, Object) method.
|
||
* Added annotate(Action) method to AbstractFlowBuilder.
|
||
* Added createLocalBeanFactory(Flow, Resource[]) and registerLocalBeans(Flow, ConfigurableBeanFactory) hook
|
||
methods to XmlFlowBuilder to allow for control over the registration of beans needed locally by a flow definition.
|
||
Useful for testing (SWF-307).
|
||
* Ensures that all exceptions (including RuntimeExceptions) are handled properly by the FlowExecution (SWF-333).
|
||
* Ensured the RequestContext attribute map can never be null (SWF-347).
|
||
* Renamed TransitionExecutingStateExceptionHandler to TransitionExecutingFlowExecutionExceptionHandler.
|
||
This handler now exposes the handled flow execution exception under the key "flowExecutionException"
|
||
instead of the key "stateException (SWF-281).
|
||
|
||
Package org.springframework.webflow.execution
|
||
* Added a holder for the FlowExecutionContext of a request (SWF-163).
|
||
* Made the Event class non-final to allow for extension (SWF-330).
|
||
* Now allow multiple conversation containers per session in a manner that supports use in a cluster (SWF-378).
|
||
|
||
Package org.springframework.webflow.executor
|
||
* JSF integration code now manages flow execution locks properly in exceptional situations and when the
|
||
RENDER RESPONSE phase is bypassed (SWF-302).
|
||
* Restored compatability with 1.0.1 allowing default navigation rules to be queried if no transition could
|
||
be matched against the state of the current flow execution (SWF-303).
|
||
* JSF integration code now tears down ExternalContext thread local properly in exceptional situations and when
|
||
the RENDER_RESPONSE phase is bypassed (SWF-305).
|
||
* JSF integration code now binds the current FlowExecutionContext to a thread local for use by the Spring scoping
|
||
mechanism (SWF-163).
|
||
* JSF can now use a FlowSystemCleanupFilter to ensure that no matter what happens in JSF, the request context
|
||
is cleaned up properly (SWF-306).
|
||
|
||
Package org.springframework.webflow.persistence
|
||
* Added support for Flow Managed Persistence Contexts with Hibernate and JPA (SWF-92).
|
||
|
||
Package org.springframework.webflow.test
|
||
* Added the ability to apply multiple listeners to a test case (SWF-334).
|
||
* Relaxed 'final' qualifier on AbstractXmlFlowExecutionTests#createFlowBuilder(FlowServiceLocator).
|
||
* Added registerLocalMockServices(Flow, ConfigurableBeanFactory) hook method to AbstractXmlFlowExecutionTests.
|
||
Overriding this method is useful for customizing the builder's population of the bean factory local to the
|
||
flow definition (SWF-307).
|
||
* Introduced MockAction for stubbing out action implementations when unit testing flow executions (SWF-317).
|
||
|
||
Package org.springframework.faces
|
||
* Introduced a "Spring Faces" component library, the new home of the Spring Web Flow + Java Server Faces (JSF) integration
|
||
and additional JSF-based functionality such as client-side UI input validation components (SWF-388).
|
||
|
||
Package org.springframework.webflow.samples
|
||
* Added a "booking-jsf" reference application, a hotel booking system built on "Spring Faces" (which ties together JSF + Spring Web Flow + Spring).
|
||
Also serves as a Seam comparison sample (SWF-366).
|
||
|
||
Package reference-manual
|
||
* Improved readability of reference manual in several sections (SWF-349).
|
||
* Added documentation on flow execution exception handling options (SWF-357).
|
||
|
||
Changes in version 1.0.3 (19.04.2007)
|
||
-------------------------------------
|
||
|
||
Package org.springframework.webflow.executor
|
||
* PortletFlowController now correctly handles flow redirection parameters (SWF-236).
|
||
* SWF-JSF: FlowExecution refresh no longer causes a new flow execution key to be generated (SWF-291).
|
||
* SWF-JSF: Restored capability to launch a new flow within an ongoing flow using a UICommand (SWF-290).
|
||
|
||
Changes in version 1.0.2 (10.04.2007)
|
||
-------------------------------------
|
||
|
||
Package org.springframework.binding
|
||
* GenericConversionService.getConversionExecutor() now uses isAssignableFrom to detect situations where no
|
||
conversion is necessary (SWF-264).
|
||
* Fixed possbile NullPointerException in MethodKey.parameterTypesString() (SWF-265).
|
||
* OgnlExpression now unwraps the ognl.OgnlException to make the real exception available to the caller (SWF-255).
|
||
* OgnlExpressionParser now supports OGNL collection construction syntax (SWF-274).
|
||
* AbstractExpressionParser now has a doParseSettableExpression() template method.
|
||
* MethodInvoker now unwraps an InvocationTargetException to make the target exception directly available as
|
||
the cause of a MethodInvocationException.
|
||
|
||
Package org.springframework.webflow.action
|
||
* FormAction methods doBind() and createBinder() now declare "throws Exception".
|
||
* FormAction now consistently uses the getters to get property values (SWF-251).
|
||
* FormAction now allows usage of a validator when the formObjectClass is null.
|
||
* ResultObjectBasedEventFactory now uses java.lang.Enum.name() to get the name of a Java 5 enum (SWF-250).
|
||
|
||
Package org.springframework.webflow.config
|
||
* Fixed bug in WebFlowConfigNamespaceHandler that caused the type attribute of the repository tag not to be
|
||
read properly and throw an exception (SWF-239).
|
||
* Added Spring tooling funtionality to the BeanDefinitionParser to allow tools such as SpringIDE to properly
|
||
interact with it (SWF-254).
|
||
* Added getFlowExecutor() method to FlowExecutorFactoryBean.
|
||
|
||
Package org.springframework.webflow.context
|
||
* The ThreadLocal in ExternalContextHolder is now final (SWF-262).
|
||
|
||
Package org.springframework.webflow.conversation
|
||
* The SessionBindingConversationManager now re-binds the ConversationContainer in the session every time a
|
||
contained conversation is unlocked (SWF-244).
|
||
|
||
Package org.springframework.webflow.engine
|
||
* FlowExecutionImpl.handleException() now also tries to handle FlowExecutionExceptions that occur during
|
||
exception handling (SWF-261).
|
||
* The XmlFlowBuilder now also supports OGNL expressions in the "to" attribute of a transition when using the
|
||
"on-exception" attribute (SWF-269).
|
||
* The XmlFlowBuilder now consistently uses "fromStringTo(Class.class)" to resolve types (SWF-268).
|
||
* Added AbstractFlowBuilderFlowRegistryFactoryBean for easy setup of a flow registry containing flows built
|
||
using AbstractFlowBuilders.
|
||
* Added DefaultFlowServiceLocator(String, BeanFactory) convenience constructor to the DefaultFlowServiceLocator.
|
||
* Added BeanFactoryFlowVariable(String, BeanFactory, ScopeType) convenience constructor to the
|
||
BeanFactoryFlowVariable.
|
||
* Added settableExpression() method to AbstractFlowBuilder.
|
||
* Added new exposeException() hook method to TransitionExecutingStateExceptionHandler (SWF-280).
|
||
|
||
Package org.springframework.webflow.execution
|
||
* Added FlowExecutionListener.sessionCreated(RequestContext, FlowSession) callback, useful for setting flow
|
||
attributes before the flow starts (SWF-223).
|
||
* ClientContinuationFlowExecutionRepository now uses 'URL-safe Base64 encoding' (SWF-270).
|
||
* AbstractConversationFlowExecutionRepository.parseFlowExecutionKey() now throws an
|
||
BadlyFormattedFlowExecutionKeyException when asked to parse an empty flow execution key (SWF-277).
|
||
|
||
Package org.springframework.webflow.executor
|
||
* Added ease of configuration for those using SWF in a JSF environment, consistent with the other environments
|
||
Spring Web Flow supports.
|
||
This includes support for using the <flow:executor> webflow-config element in a JSF environment, which allows JSF
|
||
users to benefit from defaults such as a continuation-based flow execution repository and 'alwaysRedirectOnPause'
|
||
for full back-button-support out of the box. See sellitem-jsf for an example.
|
||
* Added DelegatingFlowVariableResolver for resolving flow variables in any of the support scopes: "flash" (like view
|
||
scope), "flow" (local flow scope) and "conversation" (global conversation scope). Previously only "flowScope" was
|
||
accessible to view developers.
|
||
In addition, this resolver does not require a variable prefix, meaning variables can be resolved like
|
||
{#someBean.someProperty} which is what JSF developers are familiar with. In this case a search of
|
||
flash/flow/conversation is performed in that order with a fallback to the next variable resolver in the chain
|
||
when no match is found.
|
||
* Added new FlowExecutionVariableResolver and FlowExecutionPropertyResolver for resolving flow execution variables
|
||
with an explicit "flowExecution" prefix. This is an alternative to using DelegatingFlowVariableResolver.
|
||
* Support for embedding the flowExecutionKey (identifying the state of an active flow instance) in the UIViewRoot
|
||
as a component.
|
||
This means view developers no longer have to track the ${flowExecutionKey} themselves and remember to post it back
|
||
to the server. So the bottom line is JSF views in a SWF environment now look like standard JSF views (there is no
|
||
difference at all), which makes SWF more natural and easier to adopt by the JSF community. Special thanks to
|
||
Jeremy Grelle for submitting this work (SWF-283).
|
||
* Added resource URL encoding to redirects in a JSF environment (SWF-256).
|
||
* JSF flow execution lifecycle now respects flow execution locking contract (SWF-229, SWF-276).
|
||
* Fixed bug in FlowPhaseListener that resulted in a NPE on a flow that started and ended in the same request (SWF-273).
|
||
* Introduced ResponseInstructionHandler convenience class and refactored FlowController, PortletFlowController,
|
||
FlowAction and FlowPhaseListener to use it.
|
||
* Added FlowIdMappingArgumentHandlerWrapper (SWF-204).
|
||
|
||
Package org.springframework.webflow.test
|
||
* Added constructor taking test name argument to AbstractFlowExecutionTests, AbstractExternalizedFlowExecutionTests
|
||
and AbstractXmlFlowExecutionTests.
|
||
* Added getFlashAttribute and getRequiredFlashAttribute methods to AbstractFlowExecutionTests.
|
||
|
||
Package org.springframework.webflow.samples
|
||
* Made all samples Spring IDE 2.0 projects for use with the Spring Web Flow Graphical Editor and XML Flow Definition
|
||
Editor out of the box.
|
||
To use these features, import the sample projects into Eclipse 3.2.2 with WTP 1.5.3 and Spring IDE 2.0 M3 or
|
||
greater installed. Get Spring IDE 2.0 at http://springide.org.
|
||
* Featured alternate versions of "ItemList" and "Sellitem" flows more prominently.
|
||
* Enhanced the JSF-based version of SellItem to take advantage of the latest simplifications in Spring Web Flow's
|
||
JSF support. Please see this sample along with the practical section in the reference manual for illustrations
|
||
of how to use Spring Web Flow in a JSF environment effectively.
|
||
* Greatly enhanced sample walkthrough documentation in 'practical' section of reference manual (special thanks to
|
||
Rossen Stoyanchev who contributed this).
|
||
|
||
Changes in version 1.0.1 (08.01.2007)
|
||
-------------------------------------
|
||
|
||
General
|
||
* In Ivy, JUnit is no longer a default dependency. There is now a new 'testing' configuration that
|
||
includes JUnit as a dependency (SWF-213).
|
||
|
||
Package org.springframework.webflow.action
|
||
* FormAction methods getFormObject and getFormErrors are no longer final (SWF-222).
|
||
* When FormAction detects that the existing Errors instance is invalid, it will now copy over
|
||
existing field and object errors to the newly created Errors instance (SWF-219).
|
||
|
||
Package org.springframework.webflow.config
|
||
* Added get/setMaxConversations and get/setMaxContinuations methods to FlowExecutorFactoryBean. Also
|
||
added corresponding configuration abilities to the config schema (SWF-210).
|
||
* Fixed bug in FlowExecutorFactoryBean where the ClientContinuationFlowExecutionRepository was being
|
||
configured with the SessionBindingConversationManager by default (SWF-216).
|
||
* The conversationManager argument of the createExecutionRepository hook method in the
|
||
FlowExecutorFactoryBean is now possibly null. Review your implementation if you were overriding
|
||
this method!
|
||
* Fixed JDK 1.3 compatibility issue in FlowSystemDefaults (SWF-227).
|
||
|
||
Package org.springframework.webflow.context
|
||
* ExternalContextHolder now uses a ThreadLocal instead of an InheritableThreadLocal (SWF-206).
|
||
|
||
Package org.springframework.webflow.conversation
|
||
* The default value of the maxConversations property of the SessionBindingConversationManager is
|
||
now 5. It used to be -1 (unlimited).
|
||
* Added getConversationIdGenerator and getMaxConversations methods to SessionBindingConversationManager.
|
||
* Reduced log level from INFO to DEBUG.
|
||
|
||
Package org.springframework.webflow.definition
|
||
* Added debug logging to FlowDefinitionRegistryImpl.
|
||
* FlowDefinitionResource now has a public static helper method named conventionalFlowId that implements
|
||
conventions based flow id calculation logic.
|
||
|
||
Package org.springframework.webflow.engine
|
||
* The methods getMatchingCriteria, getExecutionCriteria, getTargetStateResolver, and canExecute
|
||
of the Transition class have been made public (SWF-209).
|
||
* Added debug logging to FlowAssembler, RefreshableFlowDefinitionHolder and FlowExecutionImplFactory.
|
||
* The "alwaysRedirectOnPause" flow execution attribute value can now also be a String.
|
||
* Added toString implementations to XmlFlowBuilder and AbstractFlowBuilder.
|
||
* Added support for the "name" attribute to the <set> and <evaluate-action> elements in the flow XML.
|
||
* Fixed bug in method isFlowElement of XmlFlowBuilder to make it namespace-aware (SWF-226).
|
||
* TransitionExecutingStateExceptionHandler now does full logging of the exceptions that it handles.
|
||
* Fixed bug in BaseFlowServiceLocator where it was not allowing user to override the default web flow
|
||
converters (SWF-220).
|
||
* Added setFlowAttributes method to XmlFlowRegistryFactoryBean to make it easier to configure
|
||
externally defined flow definition attributes (SWF-200).
|
||
* Added setXmlFlowRegistrar method to XmlFlowRegistryFactoryBean.
|
||
|
||
Package org.springframework.webflow.execution.factory
|
||
* The getHolder method on ConditionalFlowExecutionListenerLoader is now private. It has a package
|
||
private return type, so there is no use in it being protected.
|
||
|
||
Package org.springframework.webflow.execution.repository
|
||
* Fixed a bug in FlowExecutionContinuationGroup. It was not correctly handling an update of a
|
||
continuation (SWF-211).
|
||
* The default value for the maxContinuations property of the ContinuationFlowExecutionRepository
|
||
is now 30. It used to be -1 (unlimited).
|
||
* Method getConversationManager of AbstractConversationFlowExecutionRepository is now public.
|
||
* Added debug logging to the FlowExecutionRepository implementations.
|
||
|
||
Package org.springframework.webflow.executor
|
||
* Added debug logging to FlowExecutorImpl.
|
||
|
||
Package org.springframework.webflow.samples
|
||
* Made sample projects Eclipse Dynamic Web Projects for easy deployment from Eclipse.
|
||
|
||
Changes in version 1.0 (25.10.2006)
|
||
-----------------------------------
|
||
|
||
Package org.springframework.webflow.action
|
||
* Fixed bug in FormAction where the binder was not properly initialized in all cases (SWF-193).
|
||
|
||
Package org.springframework.webflow.definition.registry
|
||
* Added createFlowDefinitionRegistry hook method to AbstractFlowDefinitionRegistryFactoryBean.
|
||
|
||
Package org.springframework.webflow.engine
|
||
* Removed END_STATE_VIEW_FLAG_PARAMETER from TextToViewSelector. As a result, the endingViewSelector
|
||
method of AbstractFlowBuilder was also removed.
|
||
* Removed newDefaultFlowServiceLocator method from AbstractFlowBuildingFlowRegistryFactoryBean.
|
||
* Fixed bug in RefreshableFlowDefinitionHolder. It was not correctly reloading flows when resources
|
||
changed.
|
||
* Added "input-attribute" and "output-attribute" convenience elements to "input-mapper" and
|
||
"output-mapper" elements, respectively.
|
||
* Renamed DefaultFlowAttributeMapper to ConfigurableFlowAttributeMapper for clarity and to avoid confusion.
|
||
* Restored TargetStateResolver to support dynamic transitions.
|
||
|
||
Package org.springframework.webflow.executor
|
||
* FlowExecutorImpl now updates the flow execution in the flow execution repository after a refresh,
|
||
without generating a new key. This ensures that side effects of render actions live beyond the
|
||
current request.
|
||
* Refactored FlowExecutorArgumentExtractor into an interface and introduced FlowExecutorArgumentExposer
|
||
and FlowExecutorArgumentHandler. What the FlowExecutorArgumentExtractor used to be is now
|
||
RequestParameterFlowExecutorArgumentHandler. RequestPathFlowExecutorArgumentExtractor was renamed
|
||
to RequestPathFlowExecutorArgumentHandler.
|
||
The flow controllers (FlowController, FlowAction, PortletFlowController and FlowPhaseListener) now
|
||
use a FlowExecutorArgumentHandler instead of just a FlowExecutorArgumentExtractor. The corresponding
|
||
"argumentExtractor" properties of the flow controllers were renamed to "argumentHandler".
|
||
* Fixed bug in FlowPhaseListener where flow execution was being saved twice on redirects out of the
|
||
control of the JSF lifecycle due to obeying response complete lifecycle semantics incorrectly (SWF 181).
|
||
|
||
Package org.springframework.webflow.test
|
||
* Introduced createExternalContext hook method in AbstractFlowExecutionTests.
|
||
|
||
Changes in version 1.0 RC4 (04.10.2006)
|
||
---------------------------------------
|
||
|
||
General
|
||
* Restructured codebase into distinct layers and subsystems upon in-depth SonarJ analysis of architecture.
|
||
Notable restructuring:
|
||
- Extracted stable "Flow Definition" API to webflow.definition package from root webflow package
|
||
- Extracted stable "Flow Definition Registry" subsystem to webflow.definition.registry.
|
||
- Extracted stable "Flow Execution" API to webflow.execution package from root webflow package.
|
||
- Extracted stable "External Context" subsystem to webflow.context from root webflow package.
|
||
- Extracted "Flow Execution Engine" implementation to webflow.engine package from root webflow package,
|
||
decoupling stable Flow Definition, Flow Definition Registry, Flow Execution, Flow Execution Repository,
|
||
and Flow Executor subsystems from the more volatile engine implementation.
|
||
- Moved webflow.builder subsystem into the webflow.engine implementation package.
|
||
- Extracted the XML-based Flow Builder into webflow.builder.xml sub package.
|
||
- Extracted generic data structures into webflow.core.collection from root webflow package.
|
||
- Extracted generic "Conversation Manager" subsystem into webflow.conversation from execution.repository.
|
||
- Factored out test support code into "engine" and "execution" subpackages, for unit testing
|
||
flow artifacts and system testing flow executions respectively.
|
||
Restructuring effort successfully reduced project average component dependency from 48 to 27 (45%),
|
||
largely by isolating and encapsulating the complexity of the Spring Web Flow engine implementation.
|
||
See reference documentation and JavaDoc overview for layer and subsystem descriptions.
|
||
See root spring-webflow project directory for SonarJ architecture document - "webflow-architecture.xml"
|
||
* Refined and polished method throws exception signatures in various places.
|
||
* JavaDoc enhancements all over the source code.
|
||
* Significant reference documentation updates.
|
||
|
||
Package org.springframework.webflow.action
|
||
* Added EvaluateAction for evaluating Expression objects against the RequestContext as part of Action execution.
|
||
* Added SetAction for setting attribute values in a configured scope on Action execution.
|
||
* Added note about the "final" nature of FormAction's action methods. In general, do not override action methods,
|
||
instead have your flow call multiple methods in a chain or have your action method delegate to an explict overridable hook.
|
||
* Added support for reinstalling custom property editors on FormAction.setupForm if necessary; for
|
||
example, because the errors collection was serialized and transient editors were lost.
|
||
* Factored out generic ResultEventFactory and ResultEventFactorySelector helpers.
|
||
* Collapsed default RC3 FormAction.createFormObject behavior into "loadFormObject" for simplictly and
|
||
renamed "loadFormObject" to simply "createFormObject" for consistency. This leaves a single hook
|
||
-- createFormObject -- to customize how the form object instance is created/retrieved.
|
||
* Extracted FormAction.registerPropertyEditors(PropertyEditorRegistry) hook, now called by initBinder
|
||
on bind and initFormErrors on setupForm.
|
||
* Renamed MethodResultSpecification to ActionResultExposer indicating its more general applicability.
|
||
* Removed GuardedAction as it was not being used.
|
||
* Removed automatic adaption of a Spring-managed prototype bean to a flow-scoped bean. Overloaded usage
|
||
of prototype semantics was confusing particular in a Spring 2.0 environment with the notion of custom
|
||
bean scopes. If you need flow-scoped beans, use flow variables (see 'var' element). You can call
|
||
methods on a flow-scoped bean using an evaluate action (see 'evaluate-action' element and Numberguess
|
||
sample application).
|
||
* Removed experimental and now unused bean action related classes BeanFactoryBeanInvokingAction,
|
||
BeanStatePersister, and related Memento persister classes. Flow variables with evaluate actions
|
||
provide a better solution. In the future we may provide support for restoring transient variable
|
||
references on flow execution restoration.
|
||
|
||
Package org.springframework.webflow.config
|
||
* Introduced new Spring 2.0 webflow-config XML namespace, significantly simplifying user configuration
|
||
of the flow execution engine. See spring-webflow-config.xsd and sample applications for more information.
|
||
* Introduced Spring 1.2 compatible FlowExecutorFactoryBean for easing configuration of the flow
|
||
execution engine. See itemlist sample for an example of how to use.
|
||
* Introduced FlowSystemDefaults encapsulating system-wide default settings. These defaults include:
|
||
- repositoryType = 'continuation'
|
||
- alwaysRedirectOnPause = 'true'
|
||
Defaults may be overridden on a flow executor basis. The defaults themselves are also configurable.
|
||
|
||
Package org.springframework.webflow.core
|
||
* Factored out "AttributeMap" interface and renamed default implementation to "LocalAttributeMap".
|
||
* Factored out "ParameterMap" interface and renamed default implementation to "LocalParameterMap".
|
||
* Factored out "MutableAttributeMap" interface from "AttributeMap" for modifiable maps.
|
||
* Added AttributeMapBindingListener abstraction for listening to bind and unbind events in supported attribute maps
|
||
such as the external context session map.
|
||
|
||
Package org.springframework.webflow.context
|
||
* Added support for accessing a PortletRequest.USER_INFO map as context.getUserInfoMap().
|
||
* Added support for MultipartActionRequest parameters for fileupload support in a Portlet environment.
|
||
* Introduced ExternalContextHolder for setting a thread-bound ExternalContext. Used by FlowExecutionRepository
|
||
implementations that need to access external state such as the sessionMap.
|
||
* Promoted the "globalSessionMap" property to the normalized ExternalContext interface.
|
||
* Factored out generic Map decorators to spring-binding collection package.
|
||
|
||
Package org.springframework.webflow.conversation
|
||
* Renamed ConversationService to ConversationManager.
|
||
* Added SessionBindingConversationManager for storing conversations in the session map.
|
||
* Fixed bug where an IllegalMonitorException could occur on implicit conversation unlock on 'end'.
|
||
|
||
Package org.springframework.webflow.definition
|
||
* Introduced stable FlowDefinition abstractions, useful for reasoning on flow definition metadata
|
||
to support tooling and other runtime introspection.
|
||
* Relocated FlowLocator and related exception types from execution to registry subpackage.
|
||
* Renamed FlowLocator to FlowDefinitionLocator for consistency.
|
||
* Renamed FlowRegistry to FlowDefinitionRegistry for consistency.
|
||
* Renamed FlowRegistrar to FlowDefinitionRegistrar for consistency.
|
||
* Renamed ExternalizedFlowDefinition to FlowDefinitionResource for clarity.
|
||
* Reworked FlowDefinitionRegistrar interface, simplifying and decoupling it from the concept of a FlowServiceLocator.
|
||
* Removed FlowDefinitionRegistryFactoryBean as it was not used.
|
||
|
||
Package org.springframework.webflow.engine
|
||
* Introduced full support for XML schema, see builder/xml/spring-webflow.xsd
|
||
* Removed support for XML DTD, removing spring-webflow.dtd.
|
||
* Significantly enhanced in-line XML element and attribute documentation for benefit of .xsd users.
|
||
* Reworked support for "bean invoking actions". Introduced new <bean action/> tag.
|
||
* Added support for <evaluate-action/> elements for evaluating arbitrary flow expressions as an action using OGNL.
|
||
* Added support for <set/> elements for setting attributes in a scope type as an action.
|
||
* Added support for 'required' mappings. A required mapping will report an error if its source expression evaluates to a null value.
|
||
* Added 'renderActionList' property to ViewState, for executing behavior before a view selection is rendered.
|
||
* Added support for <render-actions> within a <view-state/> element, for executing behavior
|
||
when the view state makes a renderable view selection.
|
||
* Added the ability to invoke a list of actions before executing an exception handling transition.
|
||
* Added several AbstractFlowBuilder.addViewState convenience operations.
|
||
* BaseFlowBuilder now resets its internal flow reference on a call to dispose.
|
||
* FlowAssembler.assembleFlow now returns the constructed flow for clarity. This also clarifies the API in that it is no longer
|
||
required to call getFlow on a FlowBuilder that has already been disposed by the FlowAssembler.
|
||
* Replaced STATE_TYPE_CONTEXT_PARAMETER parameter used by the TextToViewSelector by END_STATE_VIEW_FLAG_PARAMETER which just
|
||
has a boolean value (a flag). This makes the contract a bit clearer. As a result, the VIEW_STATE_TYPE and END_STATE_TYPE
|
||
constants in TextToViewSelector were also dropped.
|
||
* Moved ImmutableFlowAttributeMapper to builder and made package-private. Not a general support class.
|
||
* Reworked FlowExecution transient state restoration behavior, now using
|
||
a dedicated FlowExecutionImplStateRestorer.
|
||
* Added support for EndState transitions on exception, typically thrown as party of an entry action.
|
||
Transition.execute now accepts the base State type now, no longer requiring a TransitionableState reference.
|
||
* Made execution state restorer strategy always apply, updated execution impl types to keep transient
|
||
and serialized references in sync for VM clustering purposes.
|
||
* Extracted DocumentLoader strategy interface from XmlFlowBuilder to isolate dependency on DOM/SAX
|
||
DocumentBuilder factory logic.
|
||
* Fixed bug where flow execution restoration would fail when the active flow was an in-line flow
|
||
of a subflow.
|
||
* TransitionExecutingStateExceptionHandler now exposes exceptions in flash scope now so they live through
|
||
a view redirect and any subsequent refreshes.
|
||
|
||
Package org.springframework.webflow.execution
|
||
* Added support for "flow execution attributes" for setting system parameters that can affect flow execution.
|
||
* Added new "flash" scope type for storing attributes for the duration of a request plus a redirect
|
||
and any subsequent view refreshes. More specifically, flash is cleared when the next user event
|
||
is signaled.
|
||
* Added support for listening to "exceptionThrown" events in a FlowExecution - see FlowExecutionListener.
|
||
* Decoupled the central RequestContext interface from the flow execution engine implementation.
|
||
* Renamed the "flow" property of FlowExecutionContext to "definition" for consistency.
|
||
* Renamed the "flow" property of FlowSession to "definition" for consistency.
|
||
* Renamed FlowRedirect to FlowDefinitionRedirect for clarity.
|
||
* Made all modifiable execution data maps "MutableAttributeMap" references: this includes
|
||
"request scope", "flow scope", and "conversation scope". Umodifiable maps are simply plain
|
||
"AttributeMap" references: this includes request context attributes, flow execution system
|
||
attributes, and flow definition attributes.
|
||
* Introduced FlowExecutionFactory for encapsulating the construction of a FlowExecution from a FlowDefinition.
|
||
* Moved generic FlowExcutionFactory support code into "factory" subpackage.
|
||
* Fixed inconsistency in continuation id parsing within ClientContinuationFlowExecutionRepository.
|
||
* Removed FlowExecutionRepositoryFactory abstraction, simplifying overall use of the
|
||
FlowExecutionRepository subsystem.
|
||
* Improved support for customization of FlowExecutionContinuation creation via the FlowExecutionContinuationFactory.
|
||
* Event id-based transition matching expressions are now case sensitive.
|
||
|
||
Package org.springframework.webflow.executor
|
||
* Decoupled executor subsystem from the flow execution engine implementation and assumptions about engine defaults.
|
||
* Removed 'alwaysRedirectOnPause' property in favor of dedicated 'alwaysRedirectOnPause' flow execution attribute.
|
||
* Changed RequestPathFlowExecutorArgumentExtractor to append keyDelimiter property as path element instead of
|
||
request parameter for flow execution URLs.
|
||
* Renamed FlowExecutor.signalEvent to FlowExecutor.resume for clarity and revised order of parameters accordingly.
|
||
|
||
Package org.springframework.webflow.samples
|
||
* Updated sample applications to take advantage of new features including:
|
||
- New spring-webflow-config Spring 2.0 XML Schema
|
||
- "Render actions" (Shipping rate)
|
||
- "Always redirect on pause" (Sellitem, Itemlist)
|
||
- "Bean actions" (Phonebook, Sellitem)
|
||
- "Flow variables" and "Evaluate actions" (Numberguess)
|
||
- "Flash scope" and "Set" actions (Fileupload)
|
||
Please review samples to see these features in action!
|
||
|
||
Package org.springframework.webflow.test
|
||
* Changed AbstractXmlFlowExecutionTests 'getFlowDefinition' hook to 'getFlowDefinitionResource' returning
|
||
a FlowDefinitionResource. See phonebook and sellitem src/test trees for an example.
|
||
* Added several convenience flow definition resource factory methods.
|
||
* Removed startFlow variants in AbstractFlowExecutionTests that accept a flow execution listener, call
|
||
setFlowExecutionListener(...) instead.
|
||
* Added convenient registerMockServices hook to AbstractExternalizedFlowExecutionTests.
|
||
|
||
Changes in version 1.0 RC3 (23.6.2006)
|
||
--------------------------------------
|
||
|
||
Package org.springframework.webflow
|
||
* Renamed TransitionSet.transitionMatches to "hasMatchingTransition".
|
||
* A flow variable can now be annotated with arbitrary properties to influence behaviour.
|
||
* Factored out shared behavior of TransitionSet and StateExceptionHandlerSet into CollectionUtils.
|
||
* Renamed FlowExecutionControlContext to RequestControlContext to avoid confusion with the FlowExecutionContext
|
||
and highlight the relationship with the RequestContext.
|
||
* Renamed FlowArtifactException to FlowArtifactLookupException and relocated to builder package.
|
||
* Renamed StateException to FlowExecutionException. Revised semantics to ensure it is serializable.
|
||
* Renamed StateExceptionHandler to FlowExecutionExceptionHandler.
|
||
* Renamed StateExceptionHandlerSet to FlowExecutionHandlerSet.
|
||
* Removed FlowExecutionStatistics, merging its only useful method (isActive) into the FlowExecutionContext interface
|
||
* Removed unnecessary Event argument from Flow.onEvent and TransitionableState.onEvent.
|
||
* Removed CannotExecuteTransitionException, as its use reflected an illegal state.
|
||
* Removed NoSuchFlowStateException, as its use reflected an illegal argument.
|
||
* Made all exceptions honor serializable contract, removing dependencies on internal transient arguments such as Flow, State, and Transition
|
||
in favor of serializable artifact identifiers such as the flowId and stateId.
|
||
|
||
Package org.springframework.webflow.action
|
||
* Renamed FormAction.VALIDATOR_METHOD_PROPERTY to VALIDATOR_METHOD_ATTRIBUTE for consistency with other
|
||
context attributes.
|
||
* Removed FormAction.validateUsingValidatorMethod property. If you don't want validation, don't call bindAndValidate()
|
||
or validate() but just bind(). Updated samples accordingly.
|
||
* Removed AbstractAction.setEventFactorySupport(). In the unlikely case that you want to use an custom subclass of
|
||
EventFactorySupport, just override AbstractAction.getEventFactorySupport().
|
||
* Removed FormActionMethods since it served little purpose and was very closely linked to the way FormAction
|
||
implemented form handling.
|
||
* Renamed ResultSpecification to MethodResultSpecification for clarity. The property AbstractBeanInvokingAction.resultSpecification
|
||
was also renamed accordingly.
|
||
|
||
Package org.springframework.webflow.builder
|
||
* Reapplied 1.0 rc2 fix for inline flow parsing, which was lost in SourceForge CVS issues occurring between 7/5/06 and 15/5/06
|
||
|
||
Package org.springframework.webflow.execution
|
||
* Renamed ConversationService.begin to "beginConversation".
|
||
* Removed implicit unlock call in LocalConversationService.removeFlowExecution
|
||
* Fixed a bug where ConversationEntry.lock field was serializable--it should be transient.
|
||
* Made ConversationServiceException extend NestedRuntimeException, since it is a distinct subsystem root exception.
|
||
* Added FlowExecutionRestorationFailureException.
|
||
* Added BadlyFormattedFlowExecutionKeyException.
|
||
* NoSuchConversationException now triggers a NoSuchFlowExecution exception.
|
||
* InvalidContinuationIdException, ContinuationNotFoundException, and ContinuationUnmarshalException
|
||
now trigger a FlowExecutionRestorationException.
|
||
|
||
Package org.springframework.webflow.executor
|
||
* Refined PortletFlowController to no longer set flowExecutionKey render parameter when an execution terminates.
|
||
* Removed the temporary workaround accounting for differences between SWF view names and JSF view ids. Now
|
||
by default it is expected that the SWF view name match the JSF view id exactly. A custom ViewIdMapper can be
|
||
configured to configure a specific mapping strategy.
|
||
* Renamed ViewIdResolver to ViewIdMapper.
|
||
|
||
Package org.springframework.webflow.executor.support
|
||
* Removed the appendFlowInputAttributesToRequestPath flag in RequestPathFlowExecutorArgumentExtractor since it didn't offer
|
||
a ready-to-use system--you would need to do custom coding to make it work completely.
|
||
|
||
Package org.springframework.webflow.registry
|
||
* Made NoSuchFlowDefinitionException a standalone exception of the flow registry subsystem.
|
||
|
||
Package org.springframework.webflow.samples
|
||
* Simplified 'flowLauncher' to take advantage of latest attribute mapping features.
|
||
* Simplified 'fileUpload' to take advantage of convenient MultipartFile parameter access support.
|
||
* Refined 'birthdate', 'sellitem', and 'sellitem-jsf' to use simpler "bind" methods instead of 'bindAndValidate' with a 'validateUsingValidatorMethod=true' flag.
|
||
* Refined sellitem-jsf to demonstrate default view name behavior within a JSF environment--that is,
|
||
where view-state 'view' names should match JSF view ids exactly.
|
||
|
||
Package org.springframework.webflow.support
|
||
* Fixed bug in FlowRedirectSelector where a NPE was thrown on null redirect expression.
|
||
* Removed RedirectType. Classes using it now have a simple boolean redirect flag.
|
||
|
||
Changes in version 1.0 RC2 (09.6.2006)
|
||
--------------------------------------
|
||
|
||
Overall
|
||
* Moved project source control (with history preserved) to sourceforge subversion (SVN) repository at:
|
||
https://svn.sourceforge.net/svnroot/springframework/spring-projects/trunk
|
||
* Updated projects structure to maven2 standard (e.g. src/main/java, src/test/java).
|
||
* Spring-projects JAR repository structure now follows maven2 standard.
|
||
|
||
Package org.springframework.webflow
|
||
* Removed 'requiredType' not null check on AttributeMap accessor methods; if no requiredType is specified
|
||
the type assert is simply not performed.
|
||
* Fixed bug in Flow.end where outputMapper source and target arguments were backwards.
|
||
* Removed unused constructors in AttributeMap.
|
||
* Added CollectionUtils.singleEntryMap for easily populating a UnmodifiableAttributeMap with a single attribute.
|
||
* AttributeMap, UnmodifiableAttributeMap, and ParameterMap implement equals and hashCode now.
|
||
|
||
Package org.springframework.webflow.action
|
||
* Moved MultiAction.METHOD_ATTRIBUTE constant to AnnotatedAction.METHOD_ATTRIBUTE.
|
||
* Made FormAction.formObjectScope default ScopeType.FLOW instead of ScopeType.REQUEST.
|
||
* Improved FormAction debug logging.
|
||
* Removed FormAction.bindOnSetupForm flag for simplicity--if you need to perform a bind operation before
|
||
entering a view state simply invoke the 'bind' action method from your flow definition.
|
||
* Removed FormAction.validateOnBinding flag for simplicity--if you need to dynamically calculate if
|
||
validation should occur after binding on 'bindAndValidate' override validationEnabled(RequestContext).
|
||
* Removed 'exposeFormObject' action method from FormAction; use 'setupForm' instead.
|
||
|
||
Package org.springframework.webflow.builder
|
||
* Fixed bug related to inline-flow parsing where inline flow artifacts were not assembled properly.
|
||
* Added not null asserts to setters allowing overriding of required flow builder services.
|
||
* Improved DTD documentation describing input-mapper and output-mapper element usage.
|
||
* Relaxed 'isMultiAction' assert in XmlFlowBuilder to simply 'isAction', allowing provision of the 'method'
|
||
annotated action attribute with any target Action implementation, not just MultiActions.
|
||
* Removed 'isMultiAction' tester on FlowServiceLocator as it is no longer needed by the builders.
|
||
* Renamed 'resultName' and 'resultScope' <action/> element attributes to 'result-name' and
|
||
'result-scope', respectively, for consistency with other attribute and element names.
|
||
* Removed support for special "conversationRedirect:" 'view' prefix.
|
||
|
||
Package org.springframework.webflow.context
|
||
* Enhanced PortletExternalContext to provide access to the "globalSessionMap" for accessing attributes in
|
||
the session's APPLICATION_SCOPE.
|
||
|
||
Package org.springframework.webflow.execution
|
||
* Fixed bug in FlowExecutionImpl toString, where a NPE could be thrown if toString was called during
|
||
a FlowExecution.start (after becoming active but before having the current state set).
|
||
* Added various not null asserts to setters allowing overriding of required flow execution repository services.
|
||
* Changed ContinuationFlowExecutionRepositoryCreator's default 'maxContinuations' property to 0, setting
|
||
no upper bound on the number of continuations that can exist per conversation by default.
|
||
* Renamed EmptyFlowExecutionListenerLoader to StaticFlowExecutionListenerLoader and improved to accept
|
||
a static listener array for convenient listener loading without conditionals.
|
||
* Reworked FlowExecutionRepository interface to encapsulate the flow execution key generation strategy
|
||
as well as the additional (and optional) concept of a conversation.
|
||
* Factored out conversation code into a portable conversation management subsystem, see repository.conversation.
|
||
This generic abstraction is usable outside of SWF and may be promoted to a top-level project in the future.
|
||
* Renamed SimpleFlowExecutionRepository to DefaultFlowExecutionRepository.
|
||
* Removed 'CannotContinueConversationException' from root repository package. Now the
|
||
'NoSuchFlowExecutionException' is thrown consistently by the repository implementations
|
||
for both invalid conversation and continuation identifiers with the 'cause' property
|
||
noting exactly what happened.
|
||
* Moved FlowExecutionRepositoryCreator to the support package and made implementations private
|
||
inner classes of their containing factories, reflecting the role as a helper.
|
||
|
||
Package org.springframework.webflow.executor
|
||
* Simplified FlowExecutor interface, exposing simple types to clients and encapsulating dependencies
|
||
on internal types (as a good facade should).
|
||
* Removed all support for conversation "refresh" and redirect, decoupling the optional concept of
|
||
a conversation from that of a flow execution. To achieve the 1.0 EA and 1.0 RC1 equivalent semantics
|
||
of a "conversation redirect" use a flow execution redirects with FlowExecutionRepository that uses
|
||
the same FlowExecutionKey for the duration of the FlowExecution.
|
||
* Refined support for context-relative external redirects; now by default external URLs that begin with
|
||
a leading '/' are treated as context-relative. The FlowExecutorArgumentExtractor.redirectContextRelative
|
||
property allows for overriding this default.
|
||
* Fixed bug in RequestPathFlowExecutorArgumentExtractor.createFlowUrl where flow redirect input
|
||
was not being appended to the redirect URL correctly.
|
||
* Fixed bug where JSFPhaseListener was resetting the UIViewRoot even if the view did not change as
|
||
part of a resubmission.
|
||
* Added support for populating the FlowExecution inputMap from ExternalContext attributes during a launch operation.
|
||
This allows for a flow to be passed input from clients that start it, and subsequently
|
||
map the input into its local scope using a input-mapper.
|
||
* Portlet flow controller now refreshes a flow execution on render request if necessary to support browser refresh.
|
||
* Portlet flow controller can now perform external redirects using ActionResponse.sendRedirect(url).
|
||
|
||
Package org.springframework.webflow.registry
|
||
* Improved ExternalizedFlowRegistrar, extracting a factory method for creating an ExternalizedFlowDefinition
|
||
from a valid Resource location, and a template method for calculating if the location is actually a flow resource.
|
||
* Fixed a bug in AbstractFlowRegistryFactoryBean where a NPE would occur when configuring custom DefaultFlowServiceLocator services.
|
||
* Generally improved pluggability of core FlowBuilder services with the AbstractFlowRegistryFactoryBean,
|
||
including the FlowArtifactFactory, BeanInvokingActionFactory, ExpressionParser, and parent ConversionService implementations.
|
||
|
||
Package org.springframework.webflow.support
|
||
* Improved TransitionExecutingStateExceptionHandler to consider exception superclasses in handler match.
|
||
* Improved TransitionExecutingStateExceptionHandler to expose "rootCauseException" as request scoped attribute
|
||
* Added TransitionExecutingStateExceptionHandler debug level logging.
|
||
* Changed "handledStateException" attribute to simply "stateException".
|
||
* Fixed bug in DefaultExpressionParserFactory where Ognl would be loaded before explict classpath check.
|
||
* Removed ConversationRedirect.
|
||
|
||
Package org.springframework.webflow.test
|
||
* Added flowExecution not null asserts to signalEvent and refresh AbstractFlowExecutionTests operations.
|
||
* Removed AbstractFlowExecutionTests.conversationRedirect method.
|
||
|
||
Changes in version 1.0 RC1 (03.5.2006)
|
||
--------------------------------------
|
||
|
||
Package org.springframework.webflow
|
||
* Added explict Flow variable support to this package; see Flow.addVariable and Flow.start
|
||
* Fixed a bug in ParameterMap related to multi-valued parameter access
|
||
* ParameterMap.get now returns the first element for a multi-valued parameter instead of throwing an exception
|
||
* Refined the semantics of flow input attribute mapping. All input attributes passed into a flow
|
||
by a caller must now be explictly mapped by the flow. To achieve this each Flow can be configured
|
||
with an inputMapper; see Flow.setInputMapper and Flow.start.
|
||
* Removed the 'action' property of the DecisionState. Use an ActionState if the purpose of the
|
||
state is to execute an Action and respond to its result. Consider using a custom ResultEventFactory
|
||
to customize how the result event is created for bean invoking actions.
|
||
|
||
Package org.springframework.webflow.action
|
||
* Removed FlowVariableCreatingAction, superceded by variable support added to core package.
|
||
* Extracted ResultObjectBasedEventFactory and SuccessEventFactory implementations of the ResultEventFactory interface.
|
||
* Introduced MementoBeanStatePersister for saving and restoring action bean state from a flow-scoped managed memento.
|
||
|
||
Package org.springframework.webflow.builder
|
||
* Added a 'bean' attribute to the 'var' element, for delegating to a Spring bean factory for flow variable creation.
|
||
* Made the 'bean' and 'class' attributes optional of the 'var' element; by default the 'name' attribute will be treated as the name
|
||
of a prototype bean in the BeanFactory to use to create the flow variable value.
|
||
* Added 'input-mapper' and 'output-mapper' elements to the 'flow' element, for mapping input and output attributes respectively.
|
||
* Changed the 'attribute-mapper' element of the 'subflow-state' element to be consistent with the new
|
||
'input-mapper' and 'output-mapper' elements, for mapping input and output attributes to and from a subflow, respectively.
|
||
* Changed the 'output-attribute' element of the 'end-state' element to be consistent with the new
|
||
'output-mapper' elements, for output attributes specific to a flow outcome.
|
||
* Added an 'on-exception' attribute to the 'transition' element, for executing a state transition as part of
|
||
state or flow exception handler logic. This supercedes use of the 'class' and 'to' attributes of the
|
||
'exception-handler' element.
|
||
* Streamlined the 'exception-handler' attribute to support attaching custom exception handler implementations only.
|
||
Favor use of <transition on-exception="..." to="..."/> for attaching transition executing state exception handlers.
|
||
* Added special detection for "stateful actions"; beans marked singleton=false (non-singleton prototypes) are treated
|
||
as stateful actions, with their instances managed directly in flow scope by default. Beans implementing MementoOriginator
|
||
are treated as stateful actions responsible for creating mementos that house their state managed in flow scope.
|
||
* Added special detection for action "result event factories"; bean methods that return a scalar 'value object' are
|
||
configured with a ResultObjectBasedEventFactory, otherwise a SuccessEventFactory is used.
|
||
* Added back the state type context attribute to TextToViewSelector, to aid in creating the correct ViewSelector
|
||
implementation based on the state type (ViewState or EndState) in use.
|
||
* Changed the 'on' attribute of the 'transition' element to be optional.
|
||
* Enhanced the 'to' attribute of the 'transition' element ${expression} capable; the resolved string expression(s) are
|
||
treated as the target state of the transition.
|
||
* Enhanced the 'view' attribute of the 'view-state' and 'end-state' elements to be fully ${expression} capable; previously
|
||
expressions could only be defined for redirect parameters.
|
||
* Renamed the FlowArtifactFactory interface as it existed in 1.0 EA to FlowServiceLocator. Factored out two new
|
||
"services" from the original interface: FlowArtifactFactory, for encapsulating the construction of core flow elements
|
||
like State and Transition, and BeanInvokingActionFactory, for encapsulating the construction of an Action that invokes
|
||
a method on a bean when executed.
|
||
* Refined the FlowBuilder interface, adding builder methods for each type of major Flow construct.
|
||
* Reworked AbstractFlowBuilder and XmlFlowBuilder to bring them in-line with the FlowServiceLocator and FlowBuilder refinements.
|
||
* XmlFlowBuilder now respects deployment within a WebApplicationContext now, supporting access to the
|
||
ServletContext from within beans deployed in flow-local contexts.
|
||
|
||
Package org.springframework.webflow.context
|
||
* Changed the String-keyed map attribute iteration construct from 'Enumeration' to 'Iterator'.
|
||
|
||
Package org.springframework.webflow.execution
|
||
* Simplified the ConditionalFlowExecutionListenerLoader configuration interface.
|
||
* Refined the FlowExecutionListener interface, improving the sessionStarting and eventSignaled method signatures.
|
||
* Fixed a bug in ContinuationFlowExecutionRepository related to conversation scope restoration (which could cause a NPE).
|
||
* Fixed a bug in FlowExecutionImpl related to nested exception handling.
|
||
* Added an 'input' Attribute argument to the FlowExecution.start operation, for passing input into a starting
|
||
flow execution in a consistent manner.
|
||
* Added support "refreshing" a paused flow execution, an idempotent operation used to support flow execution redirects.
|
||
* Introduced an EventId value object for describing an external event that has been signaled.
|
||
* Streamlined FlowExecutionRepository interface to remove experimental 'getCurrentViewSelection' and
|
||
'setCurrentViewSelection' methods.
|
||
|
||
Package org.springframework.webflow.executor
|
||
* Added 'appendFlowInputAttributesToRequestPath' property to RequestPathFlowExecutorArgumentExtractor to control
|
||
if flow redirect input is appended to the URL request path or by use of named query parameters.
|
||
* Added "redirectOnPause" attribute to FlowExecutorImpl to allow global enforcement of flow execution redirects for paused flows.
|
||
* FlowExecutorArgumentExtractor now throws typed argument extraction exceptions to report illegal arguments provided by clients.
|
||
* Changed JSF "resume flow" behavior to no longer require an eventId; if no eventId is provided in a request the current view will be refreshed.
|
||
* Changed JSF "launch" flow behavior to no longer require a nav handler outcome; if the _flowId parameter
|
||
is provided in the request the FlowPhaseListener will launch the new flow execution on RESTORE_VIEW instead.
|
||
* Fixed a situation where a NullPointerException could occur within JSF's FlowPhaseListener.
|
||
* Added support for conversation redirects, external redirects, and flow redirects within a JSF environment.
|
||
* Misc polishing
|
||
|
||
Package org.springframework.webflow.registry
|
||
* Fixed a race condition within RefreshableFlowHolder pertaining to flow assembly.
|
||
* Added 'builderValidating' and 'entityResolver' properties of XmlFlowRegistryFactoryBean configuration interface.
|
||
* Reworked to bring registry subsystem in-line with changes in builder system. All "flow services" may be
|
||
configured by Spring now by setting properties of a FlowRegistryFactoryBean.
|
||
* Added setters to AbstractFlowRegistryFactoryBean for configuring common flow builder services.
|
||
* Misc polishing
|
||
|
||
Package org.springframework.webflow.support
|
||
* Added two concrete FlowVariable types, SimpleFlowVariable and BeanFactoryFlowVariable.
|
||
* Added FlowExecutionRedirect, for redirecting to a "current" ApplicationView of a FlowExecution.
|
||
This facilitates post+redirect+get semantics with unique resource URLs for refreshing each
|
||
flow execution continuation (allowing back and refresh button use without page caching).
|
||
* Factored out a RedirectType enumeration, as there are now two redirect options: FlowExecutionRedirect and
|
||
ConversationRedirect.
|
||
* Added ImmutableFlowAttributeMapper.
|
||
|
||
Package org.springframework.webflow.test
|
||
* Misc polishing
|
||
|
||
Package org.springframework.webflow.samples
|
||
* Made all samples Spring IDE projects.
|
||
* Made the number guess "games" fully stateful, 100% decoupling game logic from SWF APIs.
|
||
|
||
Changes in version 1.0 Early Access (02.3.2006)
|
||
-----------------------------------------------
|
||
|
||
Overall
|
||
* The proposal to the community for Spring Web Flow 1.0; the next release will be 1.0 RC1
|
||
after a fixed user evaluation period
|
||
* Introduced the reference manual in HTML and PDF form, see "docs" directory.
|
||
* Added unit tests, with total test coverage above 70%.
|
||
* Added extensive JavaDoc enhancements.
|
||
|
||
Package org.springframework.webflow
|
||
* Added support for custom start, signal event, end, and handleException behavior to the Flow class.
|
||
* Added state exception handling support at the State level. States may now be configured with a set of
|
||
one or more StateExceptionHandler objects for responding to exceptions that occur within the state of a flow execution.
|
||
* Added state exception handling support at the Flow level. Flows may now be configured with a set of
|
||
one or more StateExeceptionHandler objects, for responding to exceptions that occur within a state but are not handled by that state.
|
||
* Added support for "global transitions" at the Flow level. Flows may now be configured with a set
|
||
of one or more Transition objects that are inherited by all states of the Flow.
|
||
* Added Transition TargetStateResolver strategy, allowing for dynamic target state calculation.
|
||
* Added the ExternalContext facade for providing a normalized interface about external clients who have called into
|
||
the Spring Web Flow system.
|
||
* Added ParameterMap and AttributeMap map decorators, for strongly-typed Map access support.
|
||
* Renamed ViewDescriptor and ViewDescriptorCreator to ViewSelection and ViewSelector, respectively, for clarity and consistency with lexicon.
|
||
Also made ViewSelection immutable, as a value object created by a selector.
|
||
* Introduced a ViewSelection hierarchy for each of the supported response types: ApplicationView (forward),
|
||
ConversationRedirect, FlowRedirect, ExternalRedirect, and NullView, respectively.
|
||
* Renamed AnnotatedObject properties and Event parameters to "attributes", respectively, for consistency.
|
||
|
||
Package org.springframework.webflow.action
|
||
* Added support for invoking strongly typed methods on arbitrary beans (POJOs) as a SWF Action.
|
||
SWF is now capable of invoking an abitrary java.lang.Object method
|
||
like 'search(SearchCriteria critera)', when using a "bean invoking action" as an
|
||
alternative to implementing the 'execute(RequestContext context)' Action interface or
|
||
extending MultiAction. SWF is also capable of exposing return values on those bean methods
|
||
in request or flow scope, as well as responding to method exceptions.
|
||
See the Phonebook sample app for an example.
|
||
* Added BeanFactoryBeanInvokingAction, an action that can invoke any instance method on any bean managed by the Spring bean factory.
|
||
* Added LocalBeanInvokingAction, an action that can invoke any instance method on any bean.
|
||
* Added "CompositeEvent" support for composite actions that may generate multiple action result events.
|
||
* Added "validateUsingValidatorMethod" property to FormAction, useful for supporting piecemeal validation as part of a wizard flow.
|
||
* Added ActionUtils utility class, useful when implementing actions.
|
||
* Added a convenience constructor to the Event class that takes a single parameter name/value. Mainly for use in unit tests.
|
||
* Added a convenience constructor to the FormAction class that takes the formObjectClass name.
|
||
* Added logic in FormAction to automatically calculate a camelcase formObjectName from the formObjectClass if the name is not set.
|
||
* Added StatefulActionProxy, an action that delegates to a stateful action managed in flow scope.
|
||
* Added convenience methods for retrieving action execution properties to the AbstractAction class.
|
||
* Improved "validatorMethod" handling in FormAction: if no formObjectClass is specified, the invoked validator method
|
||
should have a signature matching "public void ${validatorMethod}(Object obj, Errors errors)". When you do specify a
|
||
formObjectClass, everything works like before, e.g. the signature will be
|
||
"public void ${validatorMethod}(${formObjectClass} obj, Errors errors)".
|
||
* Removed DelegatingAction in favor of StatefulActionProxy and bean invoking actions.
|
||
|
||
Package org.springframework.webflow.builder
|
||
* Added support for "global-transitions", transitions attached at the flow level and inherited by all states.
|
||
* Added support for "inline-flows", local flow definitions fully nested within another flow definition.
|
||
* Added support for locally flow scoped artifacts, importable as bean definitions using the "import" element.
|
||
* Added support for action "resultName" and "resultScope" properties, for exposing POJO method return values
|
||
as attributes in a flow execution scope automatically. See 'action' element in XML DTD.
|
||
* Added support for automatic creation of flow variables during flow startup, see 'var' element in XML DTD.
|
||
* Added "redirect" attribute to view-state for requesting conversational redirects that permit browser refresh.
|
||
* Added support for mapping subflow output attributes into parent flow collections. See 'output' element in XML DTD.
|
||
* Added AbstractFlowBuilder addDecisionState(...) methods for completeness.
|
||
* Introduced the FlowArtifactFactory, for accessing externally managed flow artifacts during the flow building process.
|
||
* Changed AbstractFlowBuilder addSubflowState(...) methods to return the added SubflowState, consistent with other add methods.
|
||
* Reworked FlowBuilder, externalizing flow id assignment from the builder itself (assignment is now a responsibility of the director).
|
||
* Renamed the "config" package to "builder" for clarity.
|
||
* Removed flow artifact creation and autowiring support in favor of artifact lookup by id (which is more compelling now with flow-definition scoped artifact support).
|
||
|
||
Package org.springframework.webflow.context
|
||
* Introduced webflow.context package for housing common ExternalContext implementations.
|
||
* Introduced ExternalContext implementations for HTTP Servlet and JSR 168 Portlet environments.
|
||
This adds support for accessing request, session, and application variables from within SWF
|
||
in a consistent manner (regardless of the environment in which SWF is called).
|
||
|
||
Package org.springframework.webflow.execution
|
||
* Added paused, resumed, and sessionEnding FlowExecutionListener callbacks.
|
||
* Added UidGenerator strategy, providing a plugin point for generating unique keys.
|
||
* Introduced FlowExecutionRepository subsystem, for tracking ongoing conversations between browsers and
|
||
the Spring Web Flow system. This subsystem obsoletes both the FlowExecutionStorage and TransactionSynchronizer
|
||
infrastructure, as it provides the capabilities of both in a single system.
|
||
* Added support for continuation-based repositories (aka 'continuation servers'),
|
||
including a built-in capability to limit the max number of continuations allowed per conversation
|
||
as well as automatically invalidate all continuations associated with a conversation that has ended
|
||
("conversation invalidation after completion"). Explicit support for conversation and continuation
|
||
expiry, as well as metadata-driven continuation invalidation strategies is under consideration.
|
||
* Added support for tracking and accessing the "current view selection" of a conversation accessible under
|
||
a bookmarkable conversation URL.
|
||
* Added for conversation locking, allowing exclusive access to a conversation contended for my multiple
|
||
concurrent threads.
|
||
* Reworked the flow execution package, decoupling the Event abstraction from the notion of an ExternalContext.
|
||
* Reworked the FlowExecution interface, making central start and signalEvent operations more explicit. It is also now
|
||
impossible for external actors to signal an event in another state other than the current state.
|
||
Also removed the "rehydrate" method from the public interface, as it's an implementation detail to
|
||
internal actors that create and restore flow executions.
|
||
* Removed FlowExecutionStorage infrastructure, replaced by an enhanced FlowExecutionRepository subsystem.
|
||
* Removed TransactionSynchronizer abstraction, which has been obsoleted since such a capability is being built
|
||
into the FlowExecutionRepository implementations directly.
|
||
* Removed support for invoking flows in arbitrary states other than the current state for security reasons.
|
||
Support for a single, externally referenceable navigation state per flow is under consideration.
|
||
* Removed ExpiredFlowCleanupFilter, as a more powerful expiry capability built into the
|
||
FlowExecutionRepository subsystem is under consideration.
|
||
|
||
Package org.springframework.webflow.executor
|
||
* Introduced the webflow.executor package, the highest-layer subsystem of SWF for driving the execution of flows.
|
||
* Renamed FlowExecutionManager to FlowExecutor; FlowExecutor is now a central facade interface
|
||
defining the SWF system boundary for typical clients. FlowExecutorImpl is the default implementation; FlowLocator is now a required dependency.
|
||
* Added ResponseInstruction, for allowing strongly-typed access to a flow execution context when preparing
|
||
a response to issue.
|
||
* Added the FlowExecutorArgumentExtractor helper for extracting arguments needed by FlowExecutor implementations
|
||
such as the flowId, flowExecutionKey, and eventId.
|
||
* Renamed all instances of "flowExecutionId" with "flowExecutionKey", for consistency with the FlowExecutionKey class.
|
||
Note: this change affects the views of existing SWF applications, requiring a rename of the
|
||
_flowExcutionId input parameter to _flowExcutionKey.
|
||
* Added RequestPathFlowExecutorParameterExtractor, for extracting parameters from the request URL.
|
||
This faciliates flows being launched in REST-style, for example http://localhost/springair/reservations/booking.
|
||
* Introduced JSF flow executor integration, see the "jsf" package.
|
||
* Reinstated the Spring Portlet MVC flow executor integration, see the "mvc" package and "phonebook-portlet" sample.
|
||
Note: the portlet MVC support requires Spring 2.0.
|
||
|
||
Package org.springframework.webflow.registry
|
||
* Added the FlowRegistry subsystem in webflow.registry, for registering groups of refreshable Flow definitions.
|
||
With this addition, XML flow definitions may now be refreshed from their registries at runtime by using a
|
||
JMX client like Sun's jConsole that ships standard with JDK 1.5.
|
||
* Added a refreshable FlowRegistryImpl, for managing a reloadable registry of flow definitions,
|
||
typically populated by an XmlFlowRegistrar or custom FlowRegistrar. See XmlFlowRegistryFactoryBean
|
||
as a convenient mechanism for populating a FlowRegistry using a standard Spring bean definition.
|
||
* Added RefreshableFlowHolder, capable of automatically detecting changes on externalized flow
|
||
definitions and refreshing those definitions without requiring a container restart.
|
||
|
||
Package org.springframework.webflow.test
|
||
* Improved FlowExecution test support with AbstractFlowExecutionTests.
|
||
* Decoupled flow execution test infrastructure from a first class dependency on spring-mock and
|
||
AbstractTransactionalDataSourceSpringContextTests; this allows for testing flow executions and
|
||
their associated artifacts in isolation without a dependency on the container, and also makes it
|
||
easier to test a flow execution with a mock service-layer. See Phonebook and Sellitem src/test
|
||
tree for an example.
|
||
* Added convenient AbstractXmlFlowExecutionTests, for easy testing of xml-based flow definitions.
|
||
* Small improvements in MockRequestContext to make it easier to use.
|
||
|
||
Package org.springframework.webflow.samples
|
||
* Changed numberguess sample application to use the new StatefulActionProxy.
|
||
* Added sellitem-jsf sample.
|
||
* Added phonebook-portlet sample.
|
||
* Added shippingrate sample, showing Spring Web Flow together with Ajax technology.
|
||
|
||
Changes in version PR5 (28.7.2005)
|
||
----------------------------------
|
||
|
||
* 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.
|
||
|
||
Changes in version PR4 (17.7.2005)
|
||
----------------------------------
|
||
|
||
* 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.
|
||
|
||
Changes in version PR3 (22.5.2005)
|
||
----------------------------------
|
||
|
||
* 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 <20> 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.
|
||
|
||
Changes in version PR2 (11.4.2005)
|
||
----------------------------------
|
||
|
||
* 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 support 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.
|
||
|
||
Changes in version PR1 (30.3.2005)
|
||
----------------------------------
|
||
|
||
* First public preview release. |