Polishing.

Made changelog easier to read on small screen.
This commit is contained in:
Erwin Vervaet
2007-04-07 09:46:22 +00:00
parent 3ce82b661f
commit d379c00509
2 changed files with 49 additions and 31 deletions

View File

@@ -6,12 +6,14 @@ 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).
* 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.
* 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".
@@ -20,62 +22,78 @@ Package org.springframework.webflow.action
* 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).
* 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).
* 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).
* 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 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 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).
* 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).
* 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.
* 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), "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 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.
* 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 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.
* 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

View File

@@ -148,7 +148,7 @@ public class FlowIdMappingArgumentHandlerWrapper extends FlowExecutorArgumentHan
flowId = publicFlowId;
}
else {
throw new FlowExecutorArgumentExtractionException("Unable to extract flow definition id: "
throw new FlowExecutorArgumentExtractionException("Unable to extract flow definition id: "
+ "no mapping was defined for '" + publicFlowId + "'");
}
}
@@ -181,7 +181,7 @@ public class FlowIdMappingArgumentHandlerWrapper extends FlowExecutorArgumentHan
else {
// this is a mapping problem
throw new IllegalArgumentException("Unable to create a flow definition URL for '"
+ flowDefinitionRedirect + "': " + "no reverse mapping was defined for flow id '"
+ flowDefinitionRedirect + "': no reverse mapping was defined for flow id '"
+ flowDefinitionRedirect.getFlowDefinitionId() + "'");
}
}