From 30f7e82ea637e016f93308026d686509bac0a124 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 8 Jan 2024 13:39:13 +0100 Subject: [PATCH] Polishing. Add Geometry super-type only as subtypes are considered simple types already. Ensure reflective simple type AOT registration. Original pull request: #1713 See #1711 --- .../data/r2dbc/aot/R2dbcRuntimeHints.java | 6 ++++++ .../data/r2dbc/dialect/PostgresDialect.java | 11 +---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/aot/R2dbcRuntimeHints.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/aot/R2dbcRuntimeHints.java index 91b480e87..d48be379f 100644 --- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/aot/R2dbcRuntimeHints.java +++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/aot/R2dbcRuntimeHints.java @@ -21,6 +21,7 @@ import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.aot.hint.TypeReference; +import org.springframework.data.r2dbc.dialect.PostgresDialect; import org.springframework.data.r2dbc.mapping.event.AfterConvertCallback; import org.springframework.data.r2dbc.mapping.event.AfterSaveCallback; import org.springframework.data.r2dbc.mapping.event.BeforeConvertCallback; @@ -31,6 +32,7 @@ import org.springframework.data.r2dbc.repository.support.SimpleR2dbcRepository; * {@link RuntimeHintsRegistrar} for R2DBC. * * @author Christoph Strobl + * @author Mark Paluch * @since 3.0 */ class R2dbcRuntimeHints implements RuntimeHintsRegistrar { @@ -45,5 +47,9 @@ class R2dbcRuntimeHints implements RuntimeHintsRegistrar { .of(BeforeConvertCallback.class), TypeReference.of(BeforeSaveCallback.class), TypeReference.of(AfterSaveCallback.class)), hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.INVOKE_PUBLIC_METHODS)); + + for (Class simpleType : PostgresDialect.INSTANCE.simpleTypes()) { + hints.reflection().registerType(TypeReference.of(simpleType), MemberCategory.PUBLIC_CLASSES); + } } } diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java index 568486d9c..66332a9c0 100644 --- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java +++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java @@ -59,16 +59,7 @@ public class PostgresDialect extends org.springframework.data.relational.core.di .forEach(s -> ifClassPresent(s, simpleTypes::add)); // support the native JTS types supported by r2dbc-postgresql - Stream.of("org.locationtech.jts.geom.Geometry", // - "org.locationtech.jts.geom.Point", // - "org.locationtech.jts.geom.MultiPoint", // - "org.locationtech.jts.geom.LineString", // - "org.locationtech.jts.geom.LinearRing", // - "org.locationtech.jts.geom.MultiLineString", // - "org.locationtech.jts.geom.Polygon", // - "org.locationtech.jts.geom.MultiPolygon", // - "org.locationtech.jts.geom.GeometryCollection") // - .forEach(s -> ifClassPresent(s, simpleTypes::add)); + ifClassPresent("org.locationtech.jts.geom.Geometry", simpleTypes::add); // conditional Postgres JSON support. ifClassPresent("io.r2dbc.postgresql.codec.Json", simpleTypes::add);