From 638fb7841868549cd15b7ab044b739fc879cbc28 Mon Sep 17 00:00:00 2001 From: Soby Chacko Date: Wed, 2 Apr 2025 15:37:01 -0400 Subject: [PATCH] Move AOT runtime hints package and classes from spring-ai-client-chat to spring-ai-model Signed-off-by: Soby Chacko --- .../ai/aot/AiRuntimeHints.java | 0 .../ai/aot/KnuddelsRuntimeHints.java | 0 .../ai/aot/SpringAiCoreRuntimeHints.java | 0 .../aot/ToolBeanRegistrationAotProcessor.java | 0 .../ai/aot/ToolRuntimeHints.java | 0 .../springframework/ai/aot/package-info.java | 0 .../resources/META-INF.spring}/aot.factories | 0 .../ai/aot/AiRuntimeHintsTests.java | 0 .../ai/aot/KnuddelsRuntimeHintsTest.java | 0 .../ai/aot/SpringAiCoreRuntimeHintsTest.java | 0 ...ToolBeanRegistrationAotProcessorTests.java | 0 .../ai/aot/ToolRuntimeHintsTests.java | 0 .../aot/VectorStoreRuntimeHints.java | 37 +++++++++++++++++++ .../aot/VectorStoreRuntimeHintsTests.java | 37 +++++++++++++++++++ 14 files changed, 74 insertions(+) rename {spring-ai-client-chat => spring-ai-model}/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/main/java/org/springframework/ai/aot/package-info.java (100%) rename {spring-ai-client-chat/src/main/resources/META-INF/spring => spring-ai-model/src/main/resources/META-INF.spring}/aot.factories (100%) rename {spring-ai-client-chat => spring-ai-model}/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java (100%) rename {spring-ai-client-chat => spring-ai-model}/src/test/java/org/springframework/ai/aot/ToolRuntimeHintsTests.java (100%) create mode 100644 spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/aot/VectorStoreRuntimeHints.java create mode 100644 spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/aot/VectorStoreRuntimeHintsTests.java diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java similarity index 100% rename from spring-ai-client-chat/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java rename to spring-ai-model/src/main/java/org/springframework/ai/aot/AiRuntimeHints.java diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java similarity index 100% rename from spring-ai-client-chat/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java rename to spring-ai-model/src/main/java/org/springframework/ai/aot/KnuddelsRuntimeHints.java diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java similarity index 100% rename from spring-ai-client-chat/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java rename to spring-ai-model/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java similarity index 100% rename from spring-ai-client-chat/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java rename to spring-ai-model/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java similarity index 100% rename from spring-ai-client-chat/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java rename to spring-ai-model/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/aot/package-info.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/package-info.java similarity index 100% rename from spring-ai-client-chat/src/main/java/org/springframework/ai/aot/package-info.java rename to spring-ai-model/src/main/java/org/springframework/ai/aot/package-info.java diff --git a/spring-ai-client-chat/src/main/resources/META-INF/spring/aot.factories b/spring-ai-model/src/main/resources/META-INF.spring/aot.factories similarity index 100% rename from spring-ai-client-chat/src/main/resources/META-INF/spring/aot.factories rename to spring-ai-model/src/main/resources/META-INF.spring/aot.factories diff --git a/spring-ai-client-chat/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java b/spring-ai-model/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java similarity index 100% rename from spring-ai-client-chat/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java rename to spring-ai-model/src/test/java/org/springframework/ai/aot/AiRuntimeHintsTests.java diff --git a/spring-ai-client-chat/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java b/spring-ai-model/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java similarity index 100% rename from spring-ai-client-chat/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java rename to spring-ai-model/src/test/java/org/springframework/ai/aot/KnuddelsRuntimeHintsTest.java diff --git a/spring-ai-client-chat/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java b/spring-ai-model/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java similarity index 100% rename from spring-ai-client-chat/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java rename to spring-ai-model/src/test/java/org/springframework/ai/aot/SpringAiCoreRuntimeHintsTest.java diff --git a/spring-ai-client-chat/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java b/spring-ai-model/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java similarity index 100% rename from spring-ai-client-chat/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java rename to spring-ai-model/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java diff --git a/spring-ai-client-chat/src/test/java/org/springframework/ai/aot/ToolRuntimeHintsTests.java b/spring-ai-model/src/test/java/org/springframework/ai/aot/ToolRuntimeHintsTests.java similarity index 100% rename from spring-ai-client-chat/src/test/java/org/springframework/ai/aot/ToolRuntimeHintsTests.java rename to spring-ai-model/src/test/java/org/springframework/ai/aot/ToolRuntimeHintsTests.java diff --git a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/aot/VectorStoreRuntimeHints.java b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/aot/VectorStoreRuntimeHints.java new file mode 100644 index 000000000..04f98da84 --- /dev/null +++ b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/aot/VectorStoreRuntimeHints.java @@ -0,0 +1,37 @@ +/* + * Copyright 2025-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.vectorstore.aot; + +import java.util.Set; + +import org.springframework.aot.hint.RuntimeHints; +import org.springframework.aot.hint.RuntimeHintsRegistrar; +import org.springframework.core.io.ClassPathResource; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; + +public class VectorStoreRuntimeHints implements RuntimeHintsRegistrar { + + @Override + public void registerHints(@NonNull RuntimeHints hints, @Nullable ClassLoader classLoader) { + + for (var r : Set.of("antlr4/org/springframework/ai/vectorstore/filter/antlr4/Filters.g4")) { + hints.resources().registerResource(new ClassPathResource(r)); + } + } + +} diff --git a/spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/aot/VectorStoreRuntimeHintsTests.java b/spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/aot/VectorStoreRuntimeHintsTests.java new file mode 100644 index 000000000..f3a6e46d2 --- /dev/null +++ b/spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/aot/VectorStoreRuntimeHintsTests.java @@ -0,0 +1,37 @@ +/* + * Copyright 2025-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ai.vectorstore.aot; + +import org.junit.jupiter.api.Test; + +import org.springframework.aot.hint.RuntimeHints; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.aot.hint.predicate.RuntimeHintsPredicates.resource; + +public class VectorStoreRuntimeHintsTests { + + @Test + void vectorStoreRuntimeHints() { + var runtimeHints = new RuntimeHints(); + var vectorStoreHints = new VectorStoreRuntimeHints(); + vectorStoreHints.registerHints(runtimeHints, null); + assertThat(runtimeHints) + .matches(resource().forResource("antlr4/org/springframework/ai/vectorstore/filter/antlr4/Filters.g4")); + } + +}