Prior to this commit, if a Spring Expression Language (SpEL) expression
did not include parentheses for a MultiAction method that does not
accept a RequestContext argument, the flow would pass on Spring
Framework versions prior to 6.2, but the same flow would fail on Spring
Framework 6.2 M1 or later. The following is such an expression and is
effectively a property reference which must be handled by a registered
PropertyAccessor: "reportActions.evaluateReport".
The reason for the change in behavior is that Spring Framework 6.2 M1
includes a bug fix for ordering SpEL PropertyAccessors. That bug fix
correctly results in Spring Web Flow's ActionPropertyAccessor being
evaluated before SpEL's ReflectivePropertyAccessor. Consequently, an
expression such as "reportActions.evaluateReport" is now handled by
ActionPropertyAccessor which indirectly requires that the action method
accept a RequestContext argument. When the method does not accept a
RequestContext argument, the flow fails with a NoSuchMethodException.
To address that, this commit revises the implementation of canRead(...)
in ActionPropertyAccessor so that it only returns `true` if the action
method accepts a RequestContext argument. When ActionPropertyAccessor's
canRead(...) method returns `false`, the generic
ReflectivePropertyAccessor will be used instead, which restores the
pre-6.2 behavior for such expressions.
The test suite passes for the following Spring Framework versions.
- ./gradlew -PspringFrameworkVersion=6.0.23 --rerun-tasks clean check
- ./gradlew -PspringFrameworkVersion=6.1.14 --rerun-tasks clean check
- ./gradlew -PspringFrameworkVersion=6.2.0-RC3 --rerun-tasks clean check
See https://github.com/spring-projects/spring-framework/issues/33861
See https://github.com/spring-projects/spring-framework/issues/33862
Closes gh-1802
This commit adds a standard GHA workflow to perform a release, including
syncing with Maven Central using s01.oss.sonatype.org.
The release workflow kicks off based on tag that matches `vX.Y.Z` and
perform the following:
* Build the project
* Stage the bits to repo.spring.io
* Move the staging bits to Maven Central
* Promote the bits to repo.spring.io/release
* Generate a changelog using the issues matching the version
Closes gh-1812
This commit adds a GHA workflow that builds the project against a list
of configurable Spring Framework versions. The build action has been
updated to accept an additional input that tunes the Spring Framework
version the build is using
As a result, the default Spring Framework version of the project is now
configured in gradle.properties.
Closes gh-1810
It turns out the repository is required for a plugin that the project
does not use. This commit removes the declaration and adapt CI
accordingly.
Closes gh-1813
This commit removes the usage of the Artifactory plugin and replaces
it with a standard repository structure using the -PdeploymentRepository
option.
This also updates the generated POM to be current.
See gh-1809
This commit updates to the latest develocity conventions plugin. This
has the advantage, since 0.0.21, to include the correct relevant Gradle
Enterprise plugin.
Closes gh-1808
Repositories on repo.spring.io requires to be authenticated. This commit
configures the SPRING_REPOSITORY_USERNAME and SPRING_REPOSITORY_PASSWORD
properties accordingly.
Closes gh-1807
Added a LICENSE file at the root level directory. The license are as per the README file (https://github.com/spring-projects/spring-webflow/blob/main/README.md#license). The license is version 2.0 of the Apache License.
(Please note that the Copyright year and owner fields have been intentionally left empty since Google LLC doesn't own this repository)
This change publishes a build scan to ge.spring.io for every local
build from an authenticated Spring committer and for CI where
appropriate access tokens are available. The build will not fail if
publishing fails.
This change also allows the build to benefit from remote build caching,
providing faster builds for all contributors.
Additionally, the project will have access to all features of Gradle
Enterprise such as:
- Dashboards to view all historical build scans, along with performance
trends over time
- Build failure analytics for enhanced investigation and diagnosis of
build failures
- Test failure analytics to better understand trends and causes around
slow, failing, and flaky tests
This commit moves the asciidoctor *.adoc files to the default location
and removes the unnecessary asciidoctor plugin configuration as a
result.
This changes also reworks dependencies between tasks and adds the
missing publication configuration for generated artifacts. The entire
docs-specific script is moved from the main build.gradle file to a
"gradle/docs.gradle" script to improve readability of the main build.
Fixes gh-1797