From 270a5e2fcaab4b1b60aba19c1228ccbca58276f1 Mon Sep 17 00:00:00 2001 From: Ralph Ursprung <39383228+rursprung@users.noreply.github.com> Date: Mon, 30 Mar 2026 20:16:14 +0200 Subject: [PATCH] Make AOT hints for ELC optional. see also opensearch-project/spring-data-opensearch#441 Signed-off-by: Ralph Ursprung (cherry picked from commit ffdbea4dba504d31d1be93b0478fadbcfb94df5b) (cherry picked from commit 6b3646bcc1ef0541df63fbbbc569d1a3c786c5a2) --- .../aot/ElasticsearchClientRuntimeHints.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/ElasticsearchClientRuntimeHints.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/ElasticsearchClientRuntimeHints.java index 758eeadae..95064c004 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/ElasticsearchClientRuntimeHints.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/ElasticsearchClientRuntimeHints.java @@ -15,14 +15,10 @@ */ package org.springframework.data.elasticsearch.client.elc.aot; -import co.elastic.clients.elasticsearch._types.mapping.RuntimeFieldType; -import co.elastic.clients.elasticsearch._types.mapping.TypeMapping; -import co.elastic.clients.elasticsearch.indices.IndexSettings; -import co.elastic.clients.elasticsearch.indices.PutMappingRequest; + 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.lang.Nullable; /** @@ -37,10 +33,14 @@ public class ElasticsearchClientRuntimeHints implements RuntimeHintsRegistrar { public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) { hints.reflection() - .registerType(TypeReference.of(IndexSettings.class), builder -> builder.withField("_DESERIALIZER")) // - .registerType(TypeReference.of(PutMappingRequest.class), builder -> builder.withField("_DESERIALIZER")) // - .registerType(TypeReference.of(RuntimeFieldType.class), builder -> builder.withField("_DESERIALIZER"))// - .registerType(TypeReference.of(TypeMapping.class), builder -> builder.withField("_DESERIALIZER")) // + .registerTypeIfPresent(classLoader, "co.elastic.clients.elasticsearch.indices.IndexSettings", + builder -> builder.withField("_DESERIALIZER")) // + .registerTypeIfPresent(classLoader, "co.elastic.clients.elasticsearch.indices.PutMappingRequest", + builder -> builder.withField("_DESERIALIZER")) // + .registerTypeIfPresent(classLoader, "co.elastic.clients.elasticsearch._types.mapping.RuntimeFieldType", + builder -> builder.withField("_DESERIALIZER"))// + .registerTypeIfPresent(classLoader, "co.elastic.clients.elasticsearch._types.mapping.TypeMapping", + builder -> builder.withField("_DESERIALIZER")) // ; hints.serialization() //