Commit Graph

3033 Commits

Author SHA1 Message Date
Mark Paluch
096836ee80 Add ValueExpression infrastructure for query methods.
Introduce ValueExpressionQueryRewriter as replacement for SpelQueryContext and QueryMethodValueEvaluationContextAccessor to encapsulate common ValueExpression functionality for Spring Data modules wanting to resolve Value Expressions in query methods.

Reduce dependencies in RepositoryFactoryBeanSupport and RepositoryFactorySupport to EvaluationContextProvider instead of QueryMethodEvaluationContextProvider to simplify dependencies.

Deprecate QueryMethodEvaluationContextProvider and its reactive variant for future removal.

Closes #3049
Original pull request: #3050
2024-10-09 13:37:04 +02:00
Christoph Strobl
e9ae6c7673 Fix native image hints for web support.
This commit adds a required native image reflection hint to allow Jackson object mapping to resolve and invoke the constructor of PageMetadata.
It also fixes an issue that surfaced after changing the bean constructor argument for SpringDataWebSettings leading to failures during the native compilation.

Closes: #3171
2024-10-07 11:19:48 +02:00
Mark Paluch
960b539069 Polishing.
See #3167
2024-09-30 09:31:48 +02:00
Mark Paluch
8ef195feed Introduce BasicPropertyDescriptor to KotlinBeanInfoFactory to bypass early property type validation.
Closes #3167
2024-09-30 09:31:48 +02:00
Tran Ngoc Nhan
f67cb87bf8 Polishing.
Add missing Override annotations. Use instanceof pattern variables, use diamond operator where possible.

Closes #3162
2024-09-26 11:27:29 +02:00
Mark Paluch
737502c4e4 Polishing.
See #3160
2024-09-26 10:59:46 +02:00
Mikhail2048
4a620ed9a0 Added Lazy wrapper for ReturnType#isDto.
Closes #3160
2024-09-26 10:59:37 +02:00
Mark Paluch
5df841b386 Consider projections without input properties open ones.
Closes #3164
2024-09-25 09:58:53 +02:00
Mark Paluch
4633380ae4 Polishing.
Add missing Override annotations. Eagerly compute input properties.

See #3163
2024-09-24 16:05:58 +02:00
Mark Paluch
22066eced3 Expose ReturnedType factory method.
Closes #3163
2024-09-24 15:59:23 +02:00
Jens Schauder
f305308a21 After release cleanups.
See #3098
2024-09-13 12:42:28 +02:00
Jens Schauder
5e9b7d00b0 Prepare next development iteration.
See #3098
2024-09-13 12:42:27 +02:00
Jens Schauder
82fb995ac4 Release version 3.4 M1 (2024.1.0).
See #3098
2024-09-13 12:39:32 +02:00
Jens Schauder
ee5e272348 Prepare 3.4 M1 (2024.1.0).
See #3098
2024-09-13 12:39:13 +02:00
Christoph Strobl
d9bdd2b550 Polishing.
Update documentation.
Additional logging for repository bootstrap procedure.
Limit usage of Optional in RepositoryFragment.

Original Pull Request: #3145
2024-09-04 10:49:22 +02:00
Mark Paluch
f7895eb306 Add RepositoryMetadataAccess.
Repositories that detect fragment implementations implementing RepositoryMetadataAccess enable metadata exposure regardless of the exposeMetadata flag.

See: #3090
Original Pull Request: #3145
2024-09-04 10:35:57 +02:00
Mark Paluch
b99db0cf01 Specialize Kotlin property accessors in KotlinBeanInfoFactory.
We now attempt to detect property accessors for properties declared in Kotlin that do not have a Kotlin-style accessor but one that instead comes from an interface.

Also, we specialize accessor methods that are inherited from a Java superclass but override accessors in the Kotlin realm.

Closes #3140
Closes #3146
2024-09-02 14:36:05 +02:00
Mark Paluch
3e75581336 Split projections document fragment into multiple subfragments.
Closes #3144
2024-08-29 09:58:26 +02:00
Oliver Drotbohm
32d2e5fc5f Polishing.
Related ticket GH-2937.
2024-08-28 22:15:04 +02:00
Oliver Drotbohm
480aa52d1b ProxyHandlerMethodArgumentResolver now avoids matching parameters annotated with Spring annotation.
We now explicitly do not match handler method parameters that are annotated with anything but @ModelAttribute or @ProjectedPayload. This prevents us accidentally opting into parameter handling for annotated parameters that use interfaces for their declaration and are supposed to be handled by some other infrastructure.

Fixes GH-2937.
2024-08-28 22:14:46 +02:00
Oliver Drotbohm
a9fd0d0377 Polishing.
Related ticket GH-3054.
2024-08-27 12:50:44 +02:00
Yanming Zhou
e074fcc2dd Avoid registering a SpringDataWebSettings bean by default.
We now refrain from registering a SpringDataWebSettings instance as bean in the ApplicationContext if @EnableSpringDataWebSupport is used without an explicit declaration of pageSerializationMode. This allows Spring Boot to use the annotation, but allow the attribute value to be configured via a property at the same time.

See https://github.com/spring-projects/spring-boot/pull/39797#discussion_r1508396169 for details.

Fixes GH-3054.
2024-08-27 12:50:29 +02:00
Mark Paluch
e994f6b60f Update GitHub Actions.
See #3098
2024-08-21 09:28:21 +02:00
Kuyho Chung
98c22d09aa Corrected the definition of coroutines.
Closes #3136
2024-08-15 14:21:04 +02:00
Oliver Drotbohm
ecc40056c0 Avoid affecting serialization of custom Page implementations in legacy mode.
Registering a StdConverter with Jackson to log a warning  about the Page serialization mode causes the target serializer to be only built for Page losing additional properties defined on extensions. We now instead register a no-op BeanSerializerModifier that issues the warning and doesn't affect the serializer selection.

Fixes GH-3137.
2024-08-15 08:38:21 +02:00
Christoph Strobl
2cc8d04c92 Update code snippet in documentation.
Original Pull Request: #3093
2024-08-08 13:52:55 +02:00
Mark Paluch
22fa3c6506 Polishing.
Refine grammar, line breaks, typos.

Original Pull Request: #3093
2024-08-08 13:51:48 +02:00
Christoph Strobl
3b667b90be Update documentation and fix nullable annotations.
Original Pull Request: #3093
2024-08-08 13:50:52 +02:00
Mark Paluch
658c04d00e Rename RepositoryMethodMetadata and move it to an interceptor.
Rename RepositoryMethodMetadata to RepositoryMethodContext.
Add flags to enable method metadata exposure.

See: #3090
Original Pull Request: #3093
2024-08-08 13:49:06 +02:00
Christoph Strobl
647d9fd949 Provide RepositoryMethodMetadata during method invocation.
Provide context during repository method invocation to potential consumers.

See: #3090
Original Pull Request: #3093
2024-08-08 13:46:55 +02:00
Mark Paluch
4df7a164e9 Consider fragments and repository contributions via spring.factories.
Closes: #3090
Original Pull Request: #3093
2024-08-08 13:45:01 +02:00
Mark Paluch
201657e78a Polishing.
Update javadoc and fix formatting.

Original Pull Request: #3093
2024-08-08 13:44:05 +02:00
Mark Paluch
b6262b212e Upgrade to Maven Wrapper 3.9.8.
See #3134
2024-08-08 10:22:00 +02:00
Mark Paluch
43e0dc1da1 Update CI properties.
See #3098
2024-08-08 10:20:10 +02:00
Mark Paluch
1cdfb2e533 Fix KotlinCopyMethod detection for single-association property classes.
KotlinCopyMethod.shouldUsePublicCopyMethod(…) now considers single-association arrangements. Also, the method now early exists if pre-conditions aren't met.

Closes #3131
2024-08-06 15:14:35 +02:00
Oliver Drotbohm
0ba3937617 Explicitly reject invalid aggregate event registrations during publishing.
We now detect that the consumption of the events published during a persistence operation has produced new event instances that would go unpublished and raise an explaining exception. Previously such a scenario would've resulted in a ConcurrentModificationException.

We primarily reject such a scenario as handling the additional event would extend our convenience mechanism over the publishing scope a direct 1:1 replacement with ApplicationEventPublisher would've achieved.

Fixes GH-3116.
2024-08-06 09:02:18 +02:00
Christoph Strobl
1f347dce69 Add missing native image runtime hints for Jackson Page serialization.
Closes #3117
Original pull request: #3119
2024-08-05 14:53:03 +02:00
Eric Haag
d5608934b7 Migrate build to Spring Develocity Conventions extension.
* Migrate build to Spring Develocity Conventions extension.

* Adopt Develocity environment variables.

Closes #3130
2024-08-01 11:45:49 +02:00
Christoph Strobl
431a1f5179 Fix property lookup for projections on Kotlin types.
This commit makes sure to use the target objects method to determine the property used for the projection.

Closes: #3127
Original pull request: #3129
2024-08-01 11:43:02 +02:00
Mark Paluch
2ee3a866a6 Bundle Javadoc with Antora documentation site.
Closes #3128
2024-07-31 09:27:07 +02:00
Mark Paluch
bb833a145c Revise Repositories initialization.
We now no longer declare cacheRepositoryFactory as synchronized to avoid locking. Additionally, simplify the flow and reuse computed values as much as possible.

Closes #3126
2024-07-26 10:34:13 +02:00
Mark Paluch
3dd3932d49 Polishing.
Simplify assertions.

See #3125
2024-07-23 11:35:48 +02:00
Mark Paluch
8a8c92e503 Consider declaring class when evaluating method return type for query method post-processing.
We now consider the declaring class to properly resolve type variable references for the result post-processing of a query method result.

Previously, we attempted to resolve the return type without considering the actual repository class resolving always Object instead of the type parameter.

Closes #3125
2024-07-23 11:35:47 +02:00
Mark Paluch
71484159cf Introduce Parameter.getRequiredName() method.
Add getRequiredName to shortcut parameter name discovery and fast-fail in cases where the parameter name is required.

Closes #3124
2024-07-23 09:18:02 +02:00
Jens Schauder
9ab34d8672 Further refactoring of PageableExecutionUtils.
Removing `isSubsequentPage`. It is another name for !isFirstPage suggesting a different meaning which isn't there.

Extracting `if (isFirstPage(pageable)) {`, further structuring the decision tree.

See #3103
Original pull request #3113
2024-07-01 12:57:57 +02:00
erie0210
47109d4bb1 Refactor PageableExecutionUtils.
Closes #3103
Original pull request #3113
2024-07-01 12:51:17 +02:00
Christoph Strobl
ec3ba10954 Polishing.
Delegate annotation attribute resolution to configured BeanNameGenerator resolving method and test for enabling reactive repositories.

Original Pull Request: #3083
2024-06-26 11:07:15 +02:00
Mark Paluch
2a8402c0c3 Polishing.
Use constants where possible.

Original Pull Request: #3083
2024-06-26 11:06:24 +02:00
Mark Paluch
a37a700b59 Add support for BeanNameGenerator configuration in Enable…Repositories.
We now accept a dedicated BeanNameGenerator in our Enable…Repositories annotations to override the importBeanNameGenerator.

Closes: #3082
Original Pull Request: #3083
2024-06-26 11:05:55 +02:00
Mark Paluch
a115ee6a44 Filter delegated properties for Kotlin data classes.
We now filter delegated properties (such as lazy) from being managed as persistent properties.

Closes #3112
2024-06-24 11:51:49 +02:00