Add a variable name factory that considers predefined names and resolves name clashes.
Expose variable name clash resolution via the generation context of a single method.
Closes#3270
Original pull request: #3271
Turn newly introduced methods on ParameterAccessor into default ones allowing modules to pick up changes at their own pace.
Add issue references and missing documentation.
Align Search- and GeoResults toString method with Page.
Original Pull Request: #3285
Associate Repository Bean Definition with RepositoryConfiguration and RepositoryConfigurationExtension attributes to capture configuration details such as the module name or the configuration source.
Introduce RepositoryFragmentsContributor to provide an abstraction for structural fragment implementation allowing to describe the implementation type instead of requiring the implementation object.
Obtain repository fragments from a RepositoryFragmentsContributor (either the configured one or one from a RepositoryFactoryBean).
Closes: #3279
Original Pull Request: #3282
Add module identifier and base repository implementation properties.
Fix fragment function previously overriding already set property due to name clash.
Extend tests for bean definition resolution and code block creation.
See: #3279
Original Pull Request: #3282
Introduce RepositoryFragmentsFunction and a collection of functions to provide a well-formed contract.
Use RepositoryMetadata from initialized RepositoryFactoryBean.
See #3265
We now provide infrastructure to generate AOT repository method code that implements Query method behavior.
No longer use spring.factories but write some custom bean config code so that one of the properties can provide an instance of the generated repository.
Closes#3265
We now use Nullness.forMethodParameter(…) to introspect method return types and argument types for nullness in addition to Spring's NonNullApi and JSR-305 annotations.
Closes#3100
We deprecated `ClassUtils` in the repo.utils package and introduced a slimmer variant in o.s.d.util. Also, ReflectionUtils hosts now several methods that have been in ClassUtils along with an improved method naming (find vs. get in combination with return value semantics).
CastUtils is deprecated as we do not widely use it.
The ProxyHandlerMethodArgumentResolver now avoids matching multipart parameters annotated with @ModelAttribute. This allows multipart parameters to be handled by RequestParamMethodArgumentResolver which properly handles multipart arguments.
Also, the `@ProjectedPayload` annotation can now be used on parameters. This prepares for the upcoming removal of support for non-annotated projections.
Fixes#3258
Related tickets #2937
Original pull request: #3277
Signed-off-by: Chris Bono <chris.bono@broadcom.com>
The documentation now clarifies that entity might get loaded and therefore possibly OptimisticLockingFailureException might get thrown.
Closes#3280
Original pull request: #3281
Introduces a more convenient API to simplify the caller side especially for conditionals that want to determine whether a parameter name is present.
Closes#3088
Original pull request: #3272
Examples for limiting queries with and without a property argument are now better mixed.
This makes it more clear that limiting and filtering by property are orthogonal concerns.
Closes#3268
Original pull request #3269