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
This cleans up a couple of classes by removing unused imports.
Original pull request: #3240
Signed-off-by: Tran Ngoc Nhan <ngocnhan.tran1996@gmail.com>
We now use a refined strategy to cache RepositoryInformation and RepositoryComposition.
Previously, RepositoryComposition wasn't cached at all and store modules that e.g. contributed a Querydsl (or a different) fragment based on the interface declaration returned a new RepositoryComposition (and thus a different hashCode) each time RepositoryInformation was obtained leading to memory leaks caused by HashMap caching.
We now use Fragment's hashCode for the cache key resulting in RepositoryComposition being created only once for a given repository interface and input-fragments arrangement.
Closes#3252
Add since tags. Reformat code. Switch to Collection-typed properties as Iterable is often used in domain models without being an actual mapped collection.
See #3010
Original pull request: #3241