Commit Graph

1450 Commits

Author SHA1 Message Date
Mark Paluch
09258ccc60 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:31 +02:00
Oliver Drotbohm
6e1e5226f4 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:03:30 +02:00
Christoph Strobl
ac09de8c72 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:41 +02:00
Mark Paluch
e9367e1b9f 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:35:35 +02:00
Mark Paluch
5c59d87f41 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:38 +02:00
Mark Paluch
dc82813d8c 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:49:00 +02:00
Mark Paluch
e95bfbb16a Ignore getters for Kotlin types deviating from Java Beans spec.
We now ignore Kotlin getters that are either static methods or would require additional arguments.

Closes #3109
2024-06-18 11:35:26 +02:00
Mark Paluch
ac6a521ff2 Populate DTO projection properties that are considered associations.
We now populate DTO properties whose are identified as associations. While uncommon, as typically entities declare assocations using entities, associations can be identified as types and so these are now considered when populating properties.

Closes #3104
2024-06-10 14:58:22 +02:00
Mark Paluch
fd1ab30a60 Polishing.
Defer message creation. Add test.

See #3091
2024-05-14 15:12:55 +02:00
kgignatyev
b8e230c4e1 Add offending type name to AbstractRepositoryMetadata verification exception message.
Closes #3091
2024-05-14 15:12:54 +02:00
Oliver Drotbohm
be30ca46a9 Polishing.
Ternary ifs and less nesting.

Related: GH-3094
Original pull request: GH-2865
2024-05-14 11:44:41 +02:00
Yanming Zhou
7ecdbdf3d8 Use Pageable.unpaged(sort) for sorted unpaged pageable.
The (Reactive)PageableHandlerMethodArgumentResolver now falls back to a unpaged Pageable instance with a resolved sort if the the resolved Pageable is unpaged.

Fixes: GH-3094
Original pull request: GH-2865
2024-05-14 11:44:39 +02:00
Mark Paluch
e2ee018b1a Limit generics length to declared length.
Also, rename method to reflect what it actually returns.
Document generic usage constraints in RepositoryFactoryBeanSupport subclasses.

Closes #3089
2024-05-08 09:53:38 +02:00
Mark Paluch
138ef0c4c9 Apply Kotlin Value Class unboxing to generated Property Accessors.
Unwrap wrapped value types if necessary when using generated property accessors.

Closes #3087
2024-04-29 09:09:46 +02:00
Mark Paluch
17d4fc3c91 Polishing.
Add missing Javadoc and Serial annotations. Simplify code.

See #3081
2024-04-24 09:38:59 +02:00
Jan Kurella
23de76de35 Avoid NullPointerException´ and IllegalArgumentException for control flow in Sort`.
Checking for null explicitly is cheap and prevents two unnecessary Exception
objects creations.

Closes #3081
2024-04-24 09:38:59 +02:00
Mark Paluch
289e4d1f52 Fix StackOverflowError in TypeDiscoverer comparison.
We now resort to String-based comparison if a generic cannot be resolved. Previously, unresolved generics caused an infinite recursion.

Closes #3084
2024-04-23 10:17:57 +02:00
Oliver Drotbohm
d22bb69a46 Support advanced generics redeclarations in RepositoryFactoryBeanSupport extensions.
Spring Data modules might override, and, by that, fix some of the generic type parameters exposed by RepositoryFactoryBeanSupport. We now more thoroughly walk through them to consider the ones expanded already and automatically expand the remaining ones with either the types found on the user repository interface or the unresolved type variable.

Ticket: GH-3074.
2024-04-09 19:20:28 +02:00
Oliver Drotbohm
36e60d80e0 Repository type preparation now only expands type variables declared in FactoryBean.
Related: GH-3074
2024-04-09 16:47:51 +02:00
Oliver Drotbohm
f2608f6302 More precise type information of factory bean definitions.
We now also forward the domain and identifier information detected on the repository to the target type declared for the repository factory bean definition.

Fixes GH-3074.
2024-04-09 13:40:52 +02:00
Oliver Drotbohm
6f68df292c Polishing.
Related ticket GH-3066.
2024-03-25 22:25:21 +01:00
Oliver Drotbohm
ec78e1b8a1 Cache query method metadata to avoid repeated calculations.
We now calculate information about query methods in RepositoryInformationSupport lazily and keep it around to avoid repeated calculations that involve traversals over declared method and Stream allocations.

Fixes GH-3066.
2024-03-25 22:25:21 +01:00
Mark Paluch
ce368882f4 Add equals/hashCode support for Unpaged.
Closes #3061
2024-03-12 13:56:22 +01:00
Mark Paluch
aec8f1a45a Polishing.
Simplify code.

Original Pull Request: #3059
2024-03-08 14:11:31 +01:00
Mark Paluch
3db2669512 Do not create persistent properties for Map and Collection-like entities.
These types are expected to behave like maps and collections and should not carry properties.
The only exception are types implementing Streamable as Streamable can be used in domain types.

Resolves: #3056
Original Pull Request: #3059
2024-03-08 14:10:39 +01:00
Mark Paluch
8dbfb9a6ab Revert workaround for Java 8 ConcurrentHashMap bug.
Closes #3060
2024-03-07 16:07:29 +01:00
Mark Paluch
a32fe161d1 Polishing.
Handle warnings. Remove redundant code in DefaultReactiveEntityCallbacks.

Original pull request: #3053
See #3055
2024-03-01 11:49:08 +01:00
mawen12
dec7f74311 Remove redundant code in DefaultEntityCallbacks#callback.
Original pull request: #3053
Closes #3055
2024-03-01 11:49:08 +01:00
Mark Paluch
2df05fe3f2 Consider nested generics in TypeDiscoverer equality comparison.
We now compare nested generics wrapped into TypeInformation to consider type equality for deeply parametrized types.

Previously, we resolved type parameters to Class so Foo<List<String>> was considered equal to Foo<List<Map>> as the type parameter of the first nesting level was erased.

Closes #3051
2024-02-27 11:18:34 +01:00
Mark Paluch
c0ae3abbac Polishing.
Tiny naming tweaks.

See #3041
Original pull request: #3048
2024-02-21 14:19:57 +01:00
Christoph Strobl
25c7c7519e Default generic type arguments when resolving KType from a Class.
We now fill up missing KTypeProjection arguments with star because the Kotlin Reflection.typeOf resolution fails if arguments are not provided.

Closes #3041
Original pull request: #3048
2024-02-21 14:19:57 +01:00
Mark Paluch
2ebb6a768e Fix Javadoc build.
Remove package-info for package without sources.

See #3045
2024-02-19 16:12:34 +01:00
Mark Paluch
6bcff2623c Document converter types supported by CustomConversions.
Closes #3040
2024-02-14 09:25:01 +01:00
Mark Paluch
6e78e66740 Polishing.
Add additional tests, add Javadoc to explain isEnclosingClassParameter() behavior.

See #3038
Original pull request: #3039
2024-02-08 10:25:28 +01:00
Christoph Strobl
d333dc612b Use enclosing class constructor parameter only for non-static inner classes.
Closes #3038
Original pull request: #3039
2024-02-08 10:25:27 +01:00
Christoph Strobl
7817df4f61 Guard AOT registration of PageModule.
This commit makes sure to only register runtime hints for PageModule if Jackson is present.
Use newly introduced ClassPathExclusions instead of manually creating the ClassLoader.

Closes #3033
Original pull request: #3034
2024-01-24 16:17:44 +01:00
Mark Paluch
6b6a901708 Polishing.
Move hints into AOT package to align with other hints. Reduce visibility.

See: #3025
Original pull request: #3026
2024-01-22 09:20:31 +01:00
Christoph Strobl
15d411b79a Add missing runtime hit for Unpaged required by PageModule.
The PageModule is loading the Unpaged type via its name which requires additional reflection configuration for native images.

Closes: #3025
Original pull request: #3026
2024-01-22 09:20:31 +01:00
Christoph Strobl
6733a16943 Polishing.
Remove unused imports.

See: #3025
Original pull request: #3026
2024-01-22 09:20:31 +01:00
Oliver Drotbohm
190e9ed88e Polishing.
Related GH-3023.
2024-01-12 21:00:28 +01:00
Oliver Drotbohm
f2c3c8b523 Fix potential IllegalStateException in Limit.
Fixes GH-3023.
2024-01-12 21:00:26 +01:00
Oliver Drotbohm
a7aef1556a GH-2987 - Fix broken serialization of Unpaged instances.
We now reinstantiate the serialization of Unpaged instances as plain INSTANCE strings as they were rendered before Unpaged was changed from an enum into a class.

Note, that we still strongly advise, not to serialize Page instances directly as it's a domain type, its Jackson-level surface is subject to change if we need to change the type's API for unrelated reasons.
2024-01-11 17:01:20 +01:00
Mark Paluch
0093c9085b Consider enclosing class for dynamic projection parameter detection.
We now consider the enclosing class to determine correct generic typing.

Closes #3020
2024-01-11 11:04:56 +01:00
Mark Paluch
6623bd8d91 Polishing.
Add missing override annotations. Refactor TypeFilterFunction into function to avoid additional property references.
Move off deprecated code.

Closes #3016
2024-01-09 14:41:50 +01:00
Mark Paluch
2b684ce554 Extend license header copyright years to 2024.
See #3014
2024-01-02 13:54:18 +01:00
Mark Paluch
686868fe3c Resolve generics for Kotlin Value Boxing inspection.
To introspect value boxing rules, we now resolve Kotlin type parameters.

Closes #2986
2023-12-14 14:56:31 +01:00
Mark Paluch
25a24082dd Polishing.
Use IdentityHashMap for parameter lookup.

See #3000
2023-12-14 14:35:30 +01:00
leeyohan93
2642609ccb Enhance Kotlin Class Conversion by Minimizing Equals Comparisons.
Closes #3000
2023-12-14 14:35:29 +01:00
Mark Paluch
4ec7e98ae5 Polishing.
Fix Javadoc reference. Reorder tags.

See #2531
2023-12-13 08:46:45 +01:00
Oliver Drotbohm
9c99164ad6 Revert "Properly render sort variable variable as composite."
This reverts commit fa9d7bdce7 as the change has too many side effects to be included in a bugfix version.

Related ticket: GH-2531.
2023-12-12 21:13:25 +01:00