From 6d26ac1102d4dabe3da212779b695bdd8ef893ed Mon Sep 17 00:00:00 2001 From: Wenli Tian Date: Sat, 6 Dec 2025 18:54:08 +0800 Subject: [PATCH] fix: replace deprecated Nullable annotation with jspecify's Nullable Signed-off-by: Wenli Tian --- .../advisor/vectorstore/QuestionAnswerAdvisor.java | 5 ++--- .../CassandraChatMemoryRepositoryProperties.java | 2 +- .../springframework/ai/mcp/AsyncMcpToolCallback.java | 2 +- .../java/org/springframework/ai/mcp/McpToolUtils.java | 2 +- .../springframework/ai/mcp/SyncMcpToolCallback.java | 2 +- .../java/org/springframework/ai/mcp/aot/McpHints.java | 2 +- .../repository/jdbc/JdbcChatMemoryRepository.java | 2 +- .../ai/anthropic/AnthropicChatOptions.java | 4 ++-- .../ai/anthropic/aot/AnthropicRuntimeHints.java | 3 ++- .../ai/azure/openai/AzureOpenAiChatOptions.java | 2 +- .../ai/azure/openai/aot/AzureOpenAiRuntimeHints.java | 2 +- .../ai/azure/openai/MockAiTestConfiguration.java | 2 +- .../ai/bedrock/converse/BedrockChatOptions.java | 2 +- .../ai/deepseek/DeepSeekChatOptions.java | 2 +- .../ai/deepseek/aot/DeepSeekRuntimeHints.java | 3 ++- .../ai/elevenlabs/aot/ElevenLabsRuntimeHints.java | 3 ++- .../ai/google/genai/GoogleGenAiChatOptions.java | 2 +- .../genai/cache/GoogleGenAiCachedContentService.java | 2 +- .../ai/google/genai/metadata/GoogleGenAiUsage.java | 2 +- .../ai/minimax/MiniMaxChatOptions.java | 2 +- .../ai/minimax/aot/MiniMaxRuntimeHints.java | 3 ++- .../ai/mistralai/MistralAiChatOptions.java | 2 +- .../ai/mistralai/aot/MistralAiRuntimeHints.java | 3 ++- .../ai/ollama/api/OllamaChatOptions.java | 2 +- .../ai/openaisdk/OpenAiSdkChatOptions.java | 2 +- .../springframework/ai/openai/OpenAiChatOptions.java | 2 +- .../ai/openai/aot/OpenAiRuntimeHints.java | 3 ++- .../audio/OpenAiAudioSpeechResponseMetadata.java | 3 ++- .../OpenAiAudioTranscriptionResponseMetadata.java | 3 ++- .../ai/vertexai/gemini/VertexAiGeminiChatOptions.java | 2 +- .../ai/zhipuai/ZhiPuAiChatOptions.java | 2 +- .../ai/zhipuai/aot/ZhiPuAiRuntimeHints.java | 3 ++- .../springframework/ai/chat/client/ChatClient.java | 2 +- .../ai/chat/client/ChatClientResponse.java | 3 ++- .../ai/chat/client/DefaultChatClient.java | 2 +- .../ai/chat/client/DefaultChatClientBuilder.java | 2 +- .../ai/chat/client/ResponseEntity.java | 2 +- .../client/advisor/DefaultAroundAdvisorChain.java | 2 +- .../ai/chat/client/advisor/SimpleLoggerAdvisor.java | 2 +- .../observation/AdvisorObservationContext.java | 2 +- .../DefaultAdvisorObservationConvention.java | 2 +- .../observation/ChatClientObservationContext.java | 2 +- .../DefaultChatClientObservationConvention.java | 2 +- .../ai/chat/evaluation/FactCheckingEvaluator.java | 3 ++- .../ai/chat/evaluation/RelevancyEvaluator.java | 3 ++- .../java/org/springframework/ai/content/Media.java | 3 ++- .../org/springframework/ai/document/Document.java | 2 +- .../ai/aot/SpringAiCoreRuntimeHints.java | 2 +- .../ai/aot/ToolBeanRegistrationAotProcessor.java | 3 ++- .../org/springframework/ai/aot/ToolRuntimeHints.java | 3 ++- .../ai/audio/transcription/AudioTranscription.java | 3 ++- .../ai/audio/tts/TextToSpeechOptions.java | 3 ++- .../ai/chat/messages/AbstractMessage.java | 3 ++- .../ai/chat/messages/SystemMessage.java | 3 ++- .../springframework/ai/chat/messages/UserMessage.java | 3 ++- .../springframework/ai/chat/prompt/ChatOptions.java | 3 ++- .../org/springframework/ai/chat/prompt/Prompt.java | 3 ++- .../ai/embedding/EmbeddingOptions.java | 3 ++- .../ai/embedding/EmbeddingRequest.java | 3 ++- .../org/springframework/ai/image/ImageOptions.java | 3 ++- .../ai/model/AbstractResponseMetadata.java | 3 ++- .../ai/model/MutableResponseMetadata.java | 3 ++- .../springframework/ai/model/ResponseMetadata.java | 3 ++- .../ai/model/observation/ModelObservationContext.java | 2 +- .../ai/model/tool/DefaultToolCallingChatOptions.java | 3 ++- .../ai/model/tool/ToolCallingChatOptions.java | 3 ++- .../org/springframework/ai/moderation/Generation.java | 3 ++- .../org/springframework/ai/tool/ToolCallback.java | 2 +- .../execution/DefaultToolCallResultConverter.java | 2 +- .../ai/tool/execution/ToolCallResultConverter.java | 2 +- .../ai/tool/function/FunctionToolCallback.java | 2 +- .../ai/tool/method/MethodToolCallback.java | 2 +- .../DefaultToolCallingObservationConvention.java | 2 +- .../observation/ToolCallingObservationContext.java | 2 +- .../resolution/DelegatingToolCallbackResolver.java | 3 ++- .../resolution/SpringBeanToolCallbackResolver.java | 2 +- .../ai/tool/resolution/ToolCallbackResolver.java | 3 ++- .../org/springframework/ai/util/json/JsonParser.java | 2 +- .../ai/util/json/schema/JsonSchemaGenerator.java | 2 +- .../ai/util/json/schema/SpringAiSchemaModule.java | 2 +- .../ai/aot/ToolBeanRegistrationAotProcessorTests.java | 2 +- .../ai/util/json/JsonSchemaGeneratorTests.java | 2 +- .../ai/rag/advisor/RetrievalAugmentationAdvisor.java | 2 +- .../augmentation/ContextualQueryAugmenter.java | 2 +- .../query/expansion/MultiQueryExpander.java | 2 +- .../transformation/CompressionQueryTransformer.java | 2 +- .../query/transformation/RewriteQueryTransformer.java | 2 +- .../transformation/TranslationQueryTransformer.java | 2 +- .../search/VectorStoreDocumentRetriever.java | 3 ++- .../ai/vectorstore/AbstractVectorStoreBuilder.java | 2 +- .../springframework/ai/vectorstore/SearchRequest.java | 11 +++++------ .../ai/vectorstore/aot/VectorStoreRuntimeHints.java | 3 ++- .../observation/AbstractObservationVectorStore.java | 2 +- .../DefaultVectorStoreObservationConvention.java | 2 +- .../observation/VectorStoreObservationContext.java | 2 +- .../ai/vectorstore/cosmosdb/CosmosDBVectorStore.java | 2 +- .../ai/vectorstore/azure/AzureVectorStore.java | 2 +- .../ai/chroma/vectorstore/ChromaApi.java | 2 +- .../ai/chroma/vectorstore/ChromaVectorStore.java | 2 +- .../ai/vectorstore/gemfire/GemFireVectorStore.java | 2 +- .../ai/vectorstore/hanadb/HanaCloudVectorStore.java | 2 +- .../ai/vectorstore/mariadb/MariaDBVectorStore.java | 2 +- .../ai/vectorstore/milvus/MilvusSearchRequest.java | 3 ++- .../ai/vectorstore/pinecone/PineconeVectorStore.java | 2 +- .../ai/vectorstore/redis/RedisVectorStore.java | 2 +- .../vectorstore/typesense/TypesenseVectorStore.java | 2 +- 106 files changed, 148 insertions(+), 114 deletions(-) diff --git a/advisors/spring-ai-advisors-vector-store/src/main/java/org/springframework/ai/chat/client/advisor/vectorstore/QuestionAnswerAdvisor.java b/advisors/spring-ai-advisors-vector-store/src/main/java/org/springframework/ai/chat/client/advisor/vectorstore/QuestionAnswerAdvisor.java index 0accbe62cfc..52e015df8cd 100644 --- a/advisors/spring-ai-advisors-vector-store/src/main/java/org/springframework/ai/chat/client/advisor/vectorstore/QuestionAnswerAdvisor.java +++ b/advisors/spring-ai-advisors-vector-store/src/main/java/org/springframework/ai/chat/client/advisor/vectorstore/QuestionAnswerAdvisor.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers; @@ -36,7 +37,6 @@ import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.filter.Filter; import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -150,8 +150,7 @@ public ChatClientResponse after(ChatClientResponse chatClientResponse, AdvisorCh .build(); } - @Nullable - protected Filter.Expression doGetFilterExpression(Map context) { + protected Filter.@Nullable Expression doGetFilterExpression(Map context) { if (!context.containsKey(FILTER_EXPRESSION) || !StringUtils.hasText(context.get(FILTER_EXPRESSION).toString())) { return this.searchRequest.getFilterExpression(); diff --git a/auto-configurations/models/chat/memory/repository/spring-ai-autoconfigure-model-chat-memory-repository-cassandra/src/main/java/org/springframework/ai/model/chat/memory/repository/cassandra/autoconfigure/CassandraChatMemoryRepositoryProperties.java b/auto-configurations/models/chat/memory/repository/spring-ai-autoconfigure-model-chat-memory-repository-cassandra/src/main/java/org/springframework/ai/model/chat/memory/repository/cassandra/autoconfigure/CassandraChatMemoryRepositoryProperties.java index 7b7469dbb0b..908289f2148 100644 --- a/auto-configurations/models/chat/memory/repository/spring-ai-autoconfigure-model-chat-memory-repository-cassandra/src/main/java/org/springframework/ai/model/chat/memory/repository/cassandra/autoconfigure/CassandraChatMemoryRepositoryProperties.java +++ b/auto-configurations/models/chat/memory/repository/spring-ai-autoconfigure-model-chat-memory-repository-cassandra/src/main/java/org/springframework/ai/model/chat/memory/repository/cassandra/autoconfigure/CassandraChatMemoryRepositoryProperties.java @@ -18,12 +18,12 @@ import java.time.Duration; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ai.chat.memory.repository.cassandra.CassandraChatMemoryRepositoryConfig; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.lang.Nullable; /** * Configuration properties for Cassandra chat memory. diff --git a/mcp/common/src/main/java/org/springframework/ai/mcp/AsyncMcpToolCallback.java b/mcp/common/src/main/java/org/springframework/ai/mcp/AsyncMcpToolCallback.java index 4e02edeb379..e0afa782c02 100644 --- a/mcp/common/src/main/java/org/springframework/ai/mcp/AsyncMcpToolCallback.java +++ b/mcp/common/src/main/java/org/springframework/ai/mcp/AsyncMcpToolCallback.java @@ -23,6 +23,7 @@ import io.modelcontextprotocol.spec.McpSchema.CallToolResult; import io.modelcontextprotocol.spec.McpSchema.Tool; import io.modelcontextprotocol.util.Assert; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,7 +33,6 @@ import org.springframework.ai.tool.ToolCallback; import org.springframework.ai.tool.definition.ToolDefinition; import org.springframework.ai.tool.execution.ToolExecutionException; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/mcp/common/src/main/java/org/springframework/ai/mcp/McpToolUtils.java b/mcp/common/src/main/java/org/springframework/ai/mcp/McpToolUtils.java index 01c78d35516..fa547f8eada 100644 --- a/mcp/common/src/main/java/org/springframework/ai/mcp/McpToolUtils.java +++ b/mcp/common/src/main/java/org/springframework/ai/mcp/McpToolUtils.java @@ -33,6 +33,7 @@ import io.modelcontextprotocol.spec.McpSchema; import io.modelcontextprotocol.spec.McpSchema.CallToolRequest; import io.modelcontextprotocol.spec.McpSchema.Role; +import org.jspecify.annotations.Nullable; import reactor.core.publisher.Mono; import reactor.core.scheduler.Schedulers; @@ -42,7 +43,6 @@ import org.springframework.ai.tool.definition.DefaultToolDefinition; import org.springframework.ai.tool.definition.ToolDefinition; import org.springframework.ai.util.json.schema.JsonSchemaUtils; -import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; import org.springframework.util.MimeType; diff --git a/mcp/common/src/main/java/org/springframework/ai/mcp/SyncMcpToolCallback.java b/mcp/common/src/main/java/org/springframework/ai/mcp/SyncMcpToolCallback.java index e678efffc95..d0ccfa986b7 100644 --- a/mcp/common/src/main/java/org/springframework/ai/mcp/SyncMcpToolCallback.java +++ b/mcp/common/src/main/java/org/springframework/ai/mcp/SyncMcpToolCallback.java @@ -23,6 +23,7 @@ import io.modelcontextprotocol.spec.McpSchema.CallToolResult; import io.modelcontextprotocol.spec.McpSchema.Tool; import io.modelcontextprotocol.util.Assert; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,7 +32,6 @@ import org.springframework.ai.tool.ToolCallback; import org.springframework.ai.tool.definition.ToolDefinition; import org.springframework.ai.tool.execution.ToolExecutionException; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/mcp/common/src/main/java/org/springframework/ai/mcp/aot/McpHints.java b/mcp/common/src/main/java/org/springframework/ai/mcp/aot/McpHints.java index 5e1815feda8..a0edaa51de4 100644 --- a/mcp/common/src/main/java/org/springframework/ai/mcp/aot/McpHints.java +++ b/mcp/common/src/main/java/org/springframework/ai/mcp/aot/McpHints.java @@ -19,13 +19,13 @@ import java.util.Set; import io.modelcontextprotocol.spec.McpSchema; +import org.jspecify.annotations.Nullable; import org.springframework.ai.aot.AiRuntimeHints; 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; /** * Runtime hints registrar for Model Context Protocol (MCP) schema classes. diff --git a/memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/java/org/springframework/ai/chat/memory/repository/jdbc/JdbcChatMemoryRepository.java b/memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/java/org/springframework/ai/chat/memory/repository/jdbc/JdbcChatMemoryRepository.java index fb7fa558619..56c38d1c784 100644 --- a/memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/java/org/springframework/ai/chat/memory/repository/jdbc/JdbcChatMemoryRepository.java +++ b/memory/repository/spring-ai-model-chat-memory-repository-jdbc/src/main/java/org/springframework/ai/chat/memory/repository/jdbc/JdbcChatMemoryRepository.java @@ -26,6 +26,7 @@ import javax.sql.DataSource; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +41,6 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.lang.Nullable; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.support.TransactionTemplate; import org.springframework.util.Assert; diff --git a/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/AnthropicChatOptions.java b/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/AnthropicChatOptions.java index 96a74ada9d7..b020c19ca29 100644 --- a/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/AnthropicChatOptions.java +++ b/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/AnthropicChatOptions.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.anthropic.api.AnthropicApi; import org.springframework.ai.anthropic.api.AnthropicApi.ChatCompletionRequest; @@ -39,7 +40,6 @@ import org.springframework.ai.model.tool.StructuredOutputChatOptions; import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -652,4 +652,4 @@ public AnthropicChatOptions build() { } -} \ No newline at end of file +} diff --git a/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/aot/AnthropicRuntimeHints.java b/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/aot/AnthropicRuntimeHints.java index d007188cd13..a5eab7cc71b 100644 --- a/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/aot/AnthropicRuntimeHints.java +++ b/models/spring-ai-anthropic/src/main/java/org/springframework/ai/anthropic/aot/AnthropicRuntimeHints.java @@ -16,11 +16,12 @@ package org.springframework.ai.anthropic.aot; +import org.jspecify.annotations.Nullable; + import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import static org.springframework.ai.aot.AiRuntimeHints.findJsonAnnotatedClassesInPackage; diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java index 2dcb1b5073f..d9d9bef5e88 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/AzureOpenAiChatOptions.java @@ -31,12 +31,12 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHints.java b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHints.java index cf5c004af75..7b41792bff5 100644 --- a/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHints.java +++ b/models/spring-ai-azure-openai/src/main/java/org/springframework/ai/azure/openai/aot/AzureOpenAiRuntimeHints.java @@ -19,6 +19,7 @@ import com.azure.ai.openai.OpenAIAsyncClient; import com.azure.ai.openai.OpenAIClient; import com.azure.ai.openai.models.ChatChoice; +import org.jspecify.annotations.Nullable; import org.springframework.ai.aot.AiRuntimeHints; import org.springframework.aot.hint.MemberCategory; @@ -26,7 +27,6 @@ import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; /** * {@link RuntimeHintsRegistrar} for Azure OpenAI. diff --git a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAiTestConfiguration.java b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAiTestConfiguration.java index 08d6ae77f6b..8ebe08a3bac 100644 --- a/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAiTestConfiguration.java +++ b/models/spring-ai-azure-openai/src/test/java/org/springframework/ai/azure/openai/MockAiTestConfiguration.java @@ -30,6 +30,7 @@ import okhttp3.mockwebserver.MockWebServer; import okhttp3.mockwebserver.RecordedRequest; import okio.Buffer; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +40,6 @@ import org.springframework.context.SmartLifecycle; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.lang.Nullable; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; diff --git a/models/spring-ai-bedrock-converse/src/main/java/org/springframework/ai/bedrock/converse/BedrockChatOptions.java b/models/spring-ai-bedrock-converse/src/main/java/org/springframework/ai/bedrock/converse/BedrockChatOptions.java index 54fcd367df6..a6e1d70aa6f 100644 --- a/models/spring-ai-bedrock-converse/src/main/java/org/springframework/ai/bedrock/converse/BedrockChatOptions.java +++ b/models/spring-ai-bedrock-converse/src/main/java/org/springframework/ai/bedrock/converse/BedrockChatOptions.java @@ -28,11 +28,11 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.bedrock.converse.api.BedrockCacheOptions; import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/DeepSeekChatOptions.java b/models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/DeepSeekChatOptions.java index b7d42380c82..d351aa7466f 100644 --- a/models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/DeepSeekChatOptions.java +++ b/models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/DeepSeekChatOptions.java @@ -29,12 +29,12 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.deepseek.api.DeepSeekApi; import org.springframework.ai.deepseek.api.ResponseFormat; import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/aot/DeepSeekRuntimeHints.java b/models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/aot/DeepSeekRuntimeHints.java index bf869a4dc55..7906c1a276a 100644 --- a/models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/aot/DeepSeekRuntimeHints.java +++ b/models/spring-ai-deepseek/src/main/java/org/springframework/ai/deepseek/aot/DeepSeekRuntimeHints.java @@ -16,12 +16,13 @@ package org.springframework.ai.deepseek.aot; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.deepseek.api.DeepSeekApi; import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import static org.springframework.ai.aot.AiRuntimeHints.findJsonAnnotatedClassesInPackage; diff --git a/models/spring-ai-elevenlabs/src/main/java/org/springframework/ai/elevenlabs/aot/ElevenLabsRuntimeHints.java b/models/spring-ai-elevenlabs/src/main/java/org/springframework/ai/elevenlabs/aot/ElevenLabsRuntimeHints.java index c6d4ae881ce..2a5c41065b1 100644 --- a/models/spring-ai-elevenlabs/src/main/java/org/springframework/ai/elevenlabs/aot/ElevenLabsRuntimeHints.java +++ b/models/spring-ai-elevenlabs/src/main/java/org/springframework/ai/elevenlabs/aot/ElevenLabsRuntimeHints.java @@ -16,12 +16,13 @@ package org.springframework.ai.elevenlabs.aot; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.elevenlabs.api.ElevenLabsApi; import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import static org.springframework.ai.aot.AiRuntimeHints.findJsonAnnotatedClassesInPackage; diff --git a/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/GoogleGenAiChatOptions.java b/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/GoogleGenAiChatOptions.java index 0408d978c49..2c0af982449 100644 --- a/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/GoogleGenAiChatOptions.java +++ b/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/GoogleGenAiChatOptions.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.google.genai.GoogleGenAiChatModel.ChatModel; import org.springframework.ai.google.genai.common.GoogleGenAiSafetySetting; @@ -36,7 +37,6 @@ import org.springframework.ai.model.tool.StructuredOutputChatOptions; import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/cache/GoogleGenAiCachedContentService.java b/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/cache/GoogleGenAiCachedContentService.java index 7a5a0630b8c..ac742f8f8fb 100644 --- a/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/cache/GoogleGenAiCachedContentService.java +++ b/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/cache/GoogleGenAiCachedContentService.java @@ -33,10 +33,10 @@ import com.google.genai.types.GetCachedContentConfig; import com.google.genai.types.ListCachedContentsConfig; import com.google.genai.types.UpdateCachedContentConfig; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/metadata/GoogleGenAiUsage.java b/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/metadata/GoogleGenAiUsage.java index 9dcac88872d..83d694ffa48 100644 --- a/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/metadata/GoogleGenAiUsage.java +++ b/models/spring-ai-google-genai/src/main/java/org/springframework/ai/google/genai/metadata/GoogleGenAiUsage.java @@ -23,9 +23,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.google.genai.types.GenerateContentResponseUsageMetadata; import com.google.genai.types.ModalityTokenCount; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.metadata.DefaultUsage; -import org.springframework.lang.Nullable; /** * Extended usage metadata for Google GenAI responses that includes thinking tokens, diff --git a/models/spring-ai-minimax/src/main/java/org/springframework/ai/minimax/MiniMaxChatOptions.java b/models/spring-ai-minimax/src/main/java/org/springframework/ai/minimax/MiniMaxChatOptions.java index a669e7e7adc..056215b52ca 100644 --- a/models/spring-ai-minimax/src/main/java/org/springframework/ai/minimax/MiniMaxChatOptions.java +++ b/models/spring-ai-minimax/src/main/java/org/springframework/ai/minimax/MiniMaxChatOptions.java @@ -30,12 +30,12 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.ai.minimax.api.MiniMaxApi; import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-minimax/src/main/java/org/springframework/ai/minimax/aot/MiniMaxRuntimeHints.java b/models/spring-ai-minimax/src/main/java/org/springframework/ai/minimax/aot/MiniMaxRuntimeHints.java index 7eddbaf9764..4a85a386c79 100644 --- a/models/spring-ai-minimax/src/main/java/org/springframework/ai/minimax/aot/MiniMaxRuntimeHints.java +++ b/models/spring-ai-minimax/src/main/java/org/springframework/ai/minimax/aot/MiniMaxRuntimeHints.java @@ -16,11 +16,12 @@ package org.springframework.ai.minimax.aot; +import org.jspecify.annotations.Nullable; + import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import static org.springframework.ai.aot.AiRuntimeHints.findJsonAnnotatedClassesInPackage; diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java index f5b559d654b..97653c2cc51 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/MistralAiChatOptions.java @@ -28,6 +28,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.mistralai.api.MistralAiApi; import org.springframework.ai.mistralai.api.MistralAiApi.ChatCompletionRequest.ResponseFormat; @@ -35,7 +36,6 @@ import org.springframework.ai.mistralai.api.MistralAiApi.FunctionTool; import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHints.java b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHints.java index 30967727e02..c91a8a914fc 100644 --- a/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHints.java +++ b/models/spring-ai-mistral-ai/src/main/java/org/springframework/ai/mistralai/aot/MistralAiRuntimeHints.java @@ -16,11 +16,12 @@ package org.springframework.ai.mistralai.aot; +import org.jspecify.annotations.Nullable; + import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import static org.springframework.ai.aot.AiRuntimeHints.findJsonAnnotatedClassesInPackage; diff --git a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaChatOptions.java b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaChatOptions.java index 061444913c4..8d7cd4f4eac 100644 --- a/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaChatOptions.java +++ b/models/spring-ai-ollama/src/main/java/org/springframework/ai/ollama/api/OllamaChatOptions.java @@ -30,11 +30,11 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.model.ModelOptionsUtils; import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-openai-sdk/src/main/java/org/springframework/ai/openaisdk/OpenAiSdkChatOptions.java b/models/spring-ai-openai-sdk/src/main/java/org/springframework/ai/openaisdk/OpenAiSdkChatOptions.java index a2a2609d943..e7e658f809f 100644 --- a/models/spring-ai-openai-sdk/src/main/java/org/springframework/ai/openaisdk/OpenAiSdkChatOptions.java +++ b/models/spring-ai-openai-sdk/src/main/java/org/springframework/ai/openaisdk/OpenAiSdkChatOptions.java @@ -28,6 +28,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.openai.models.ChatModel; import com.openai.models.chat.completions.ChatCompletionAudioParam; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,7 +36,6 @@ import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.openaisdk.OpenAiSdkChatModel.ResponseFormat.Type; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java index b545a0623d8..e883d77efb0 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/OpenAiChatOptions.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +44,6 @@ import org.springframework.ai.openai.api.ResponseFormat; import org.springframework.ai.openai.api.ResponseFormat.Type; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java index c16838de0de..ebbe33e3e78 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/aot/OpenAiRuntimeHints.java @@ -16,11 +16,12 @@ package org.springframework.ai.openai.aot; +import org.jspecify.annotations.Nullable; + import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import static org.springframework.ai.aot.AiRuntimeHints.findJsonAnnotatedClassesInPackage; diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioSpeechResponseMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioSpeechResponseMetadata.java index 412b0775ea9..9204a4af4e2 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioSpeechResponseMetadata.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioSpeechResponseMetadata.java @@ -16,11 +16,12 @@ package org.springframework.ai.openai.metadata.audio; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.audio.tts.TextToSpeechResponseMetadata; import org.springframework.ai.chat.metadata.EmptyRateLimit; import org.springframework.ai.chat.metadata.RateLimit; import org.springframework.ai.openai.api.OpenAiAudioApi; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java index 005bbb5c422..536e771bcb8 100644 --- a/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java +++ b/models/spring-ai-openai/src/main/java/org/springframework/ai/openai/metadata/audio/OpenAiAudioTranscriptionResponseMetadata.java @@ -16,12 +16,13 @@ package org.springframework.ai.openai.metadata.audio; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.audio.transcription.AudioTranscriptionResponseMetadata; import org.springframework.ai.chat.metadata.EmptyRateLimit; import org.springframework.ai.chat.metadata.RateLimit; import org.springframework.ai.openai.api.OpenAiAudioApi; import org.springframework.ai.openai.metadata.OpenAiRateLimit; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java index d8b96c13d00..74b49431419 100644 --- a/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java +++ b/models/spring-ai-vertex-ai-gemini/src/main/java/org/springframework/ai/vertexai/gemini/VertexAiGeminiChatOptions.java @@ -30,6 +30,7 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.node.ObjectNode; +import org.jspecify.annotations.Nullable; import org.springframework.ai.model.tool.StructuredOutputChatOptions; import org.springframework.ai.model.tool.ToolCallingChatOptions; @@ -38,7 +39,6 @@ import org.springframework.ai.vertexai.gemini.VertexAiGeminiChatModel.ChatModel; import org.springframework.ai.vertexai.gemini.common.VertexAiGeminiSafetySetting; import org.springframework.ai.vertexai.gemini.schema.JsonSchemaConverter; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/ZhiPuAiChatOptions.java b/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/ZhiPuAiChatOptions.java index a5389214a67..c73239816f6 100644 --- a/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/ZhiPuAiChatOptions.java +++ b/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/ZhiPuAiChatOptions.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.ai.model.ModelOptionsUtils; @@ -36,7 +37,6 @@ import org.springframework.ai.tool.ToolCallback; import org.springframework.ai.zhipuai.api.ZhiPuAiApi; import org.springframework.ai.zhipuai.api.ZhiPuAiApi.ChatCompletionRequest; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/aot/ZhiPuAiRuntimeHints.java b/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/aot/ZhiPuAiRuntimeHints.java index 6773bec4eeb..d79eb0cd209 100644 --- a/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/aot/ZhiPuAiRuntimeHints.java +++ b/models/spring-ai-zhipuai/src/main/java/org/springframework/ai/zhipuai/aot/ZhiPuAiRuntimeHints.java @@ -16,11 +16,12 @@ package org.springframework.ai.zhipuai.aot; +import org.jspecify.annotations.Nullable; + import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import static org.springframework.ai.aot.AiRuntimeHints.findJsonAnnotatedClassesInPackage; diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ChatClient.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ChatClient.java index 4dab93683a3..ef2bed7652c 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ChatClient.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ChatClient.java @@ -23,6 +23,7 @@ import java.util.function.Consumer; import io.micrometer.observation.ObservationRegistry; +import org.jspecify.annotations.Nullable; import reactor.core.publisher.Flux; import org.springframework.ai.chat.client.advisor.api.Advisor; @@ -40,7 +41,6 @@ import org.springframework.ai.tool.ToolCallbackProvider; import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.io.Resource; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.MimeType; diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ChatClientResponse.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ChatClientResponse.java index a069702356b..13da785bb88 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ChatClientResponse.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ChatClientResponse.java @@ -19,8 +19,9 @@ import java.util.HashMap; import java.util.Map; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.chat.model.ChatResponse; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClient.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClient.java index 47b305c8dda..2292b90f164 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClient.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClient.java @@ -31,6 +31,7 @@ import io.micrometer.observation.Observation; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.contextpropagation.ObservationThreadLocalAccessor; +import org.jspecify.annotations.Nullable; import reactor.core.publisher.Flux; import org.springframework.ai.chat.client.advisor.ChatModelCallAdvisor; @@ -60,7 +61,6 @@ import org.springframework.ai.tool.ToolCallbackProvider; import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.io.Resource; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.MimeType; diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClientBuilder.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClientBuilder.java index 0e667f6f380..b2e4e31356a 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClientBuilder.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/DefaultChatClientBuilder.java @@ -23,6 +23,7 @@ import java.util.function.Consumer; import io.micrometer.observation.ObservationRegistry; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.client.ChatClient.Builder; import org.springframework.ai.chat.client.ChatClient.PromptSystemSpec; @@ -38,7 +39,6 @@ import org.springframework.ai.tool.ToolCallback; import org.springframework.ai.tool.ToolCallbackProvider; import org.springframework.core.io.Resource; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ResponseEntity.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ResponseEntity.java index bd454d55999..bc0ddfe53c0 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ResponseEntity.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/ResponseEntity.java @@ -16,7 +16,7 @@ package org.springframework.ai.chat.client; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Represents a {@link org.springframework.ai.model.Model} response that includes the diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/DefaultAroundAdvisorChain.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/DefaultAroundAdvisorChain.java index 01e8dc248f5..65750754779 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/DefaultAroundAdvisorChain.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/DefaultAroundAdvisorChain.java @@ -23,6 +23,7 @@ import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.contextpropagation.ObservationThreadLocalAccessor; +import org.jspecify.annotations.Nullable; import reactor.core.publisher.Flux; import org.springframework.ai.chat.client.ChatClient; @@ -39,7 +40,6 @@ import org.springframework.ai.chat.client.advisor.observation.AdvisorObservationDocumentation; import org.springframework.ai.chat.client.advisor.observation.DefaultAdvisorObservationConvention; import org.springframework.core.OrderComparator; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/SimpleLoggerAdvisor.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/SimpleLoggerAdvisor.java index f63df8e5bd6..0975c195a27 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/SimpleLoggerAdvisor.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/SimpleLoggerAdvisor.java @@ -18,6 +18,7 @@ import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; @@ -31,7 +32,6 @@ import org.springframework.ai.chat.client.advisor.api.StreamAdvisorChain; import org.springframework.ai.chat.model.ChatResponse; import org.springframework.ai.model.ModelOptionsUtils; -import org.springframework.lang.Nullable; /** * A simple logger advisor that logs the request and response messages. diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java index dc9a3735e19..03e9192f1b4 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/observation/AdvisorObservationContext.java @@ -17,10 +17,10 @@ package org.springframework.ai.chat.client.advisor.observation; import io.micrometer.observation.Observation; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.client.ChatClientRequest; import org.springframework.ai.chat.client.ChatClientResponse; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConvention.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConvention.java index ddfb110e4a1..1a9fcbfbaf6 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConvention.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/advisor/observation/DefaultAdvisorObservationConvention.java @@ -18,6 +18,7 @@ import io.micrometer.common.KeyValue; import io.micrometer.common.KeyValues; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.client.advisor.observation.AdvisorObservationDocumentation.HighCardinalityKeyNames; import org.springframework.ai.chat.client.advisor.observation.AdvisorObservationDocumentation.LowCardinalityKeyNames; @@ -25,7 +26,6 @@ import org.springframework.ai.observation.conventions.AiProvider; import org.springframework.ai.observation.conventions.SpringAiKind; import org.springframework.ai.util.ParsingUtils; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/ChatClientObservationContext.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/ChatClientObservationContext.java index c056904df58..4b2f08f0187 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/ChatClientObservationContext.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/ChatClientObservationContext.java @@ -19,6 +19,7 @@ import java.util.List; import io.micrometer.observation.Observation; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.client.ChatClientAttributes; import org.springframework.ai.chat.client.ChatClientRequest; @@ -27,7 +28,6 @@ import org.springframework.ai.observation.AiOperationMetadata; import org.springframework.ai.observation.conventions.AiOperationType; import org.springframework.ai.observation.conventions.AiProvider; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/DefaultChatClientObservationConvention.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/DefaultChatClientObservationConvention.java index cfbe797b4d5..ea887e95b12 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/DefaultChatClientObservationConvention.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/DefaultChatClientObservationConvention.java @@ -20,6 +20,7 @@ import io.micrometer.common.KeyValue; import io.micrometer.common.KeyValues; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.client.advisor.api.Advisor; import org.springframework.ai.chat.client.observation.ChatClientObservationDocumentation.LowCardinalityKeyNames; @@ -28,7 +29,6 @@ import org.springframework.ai.model.tool.ToolCallingChatOptions; import org.springframework.ai.observation.ObservabilityHelper; import org.springframework.ai.observation.conventions.SpringAiKind; -import org.springframework.lang.Nullable; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java index 103e5d03796..61ca15a64b0 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/FactCheckingEvaluator.java @@ -18,11 +18,12 @@ import java.util.Collections; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.evaluation.EvaluationRequest; import org.springframework.ai.evaluation.EvaluationResponse; import org.springframework.ai.evaluation.Evaluator; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/RelevancyEvaluator.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/RelevancyEvaluator.java index 9de2c181fe0..990cba76ab7 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/RelevancyEvaluator.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/evaluation/RelevancyEvaluator.java @@ -19,12 +19,13 @@ import java.util.Collections; import java.util.Map; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.ai.evaluation.EvaluationRequest; import org.springframework.ai.evaluation.EvaluationResponse; import org.springframework.ai.evaluation.Evaluator; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-commons/src/main/java/org/springframework/ai/content/Media.java b/spring-ai-commons/src/main/java/org/springframework/ai/content/Media.java index ea895659606..775467358f9 100644 --- a/spring-ai-commons/src/main/java/org/springframework/ai/content/Media.java +++ b/spring-ai-commons/src/main/java/org/springframework/ai/content/Media.java @@ -19,8 +19,9 @@ import java.io.IOException; import java.net.URI; +import org.jspecify.annotations.Nullable; + import org.springframework.core.io.Resource; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.MimeType; diff --git a/spring-ai-commons/src/main/java/org/springframework/ai/document/Document.java b/spring-ai-commons/src/main/java/org/springframework/ai/document/Document.java index ee419f81d69..76d1dfa8e17 100644 --- a/spring-ai-commons/src/main/java/org/springframework/ai/document/Document.java +++ b/spring-ai-commons/src/main/java/org/springframework/ai/document/Document.java @@ -24,11 +24,11 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import org.jspecify.annotations.Nullable; import org.springframework.ai.content.Media; import org.springframework.ai.document.id.IdGenerator; import org.springframework.ai.document.id.RandomIdGenerator; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java index 31488d297d5..322ddfe6770 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/aot/SpringAiCoreRuntimeHints.java @@ -18,6 +18,7 @@ import java.util.Set; +import org.jspecify.annotations.Nullable; import org.slf4j.LoggerFactory; import org.slf4j.helpers.NOP_FallbackServiceProvider; import org.slf4j.helpers.SubstituteServiceProvider; @@ -38,7 +39,6 @@ import org.springframework.aot.hint.TypeReference; import org.springframework.core.io.ClassPathResource; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; public class SpringAiCoreRuntimeHints implements RuntimeHintsRegistrar { diff --git a/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java index 069aa471517..f590dc5e621 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessor.java @@ -18,6 +18,8 @@ import java.util.stream.Stream; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.tool.annotation.Tool; import org.springframework.aot.generate.GenerationContext; import org.springframework.aot.hint.MemberCategory; @@ -27,7 +29,6 @@ import org.springframework.beans.factory.aot.BeanRegistrationCode; import org.springframework.beans.factory.support.RegisteredBean; import org.springframework.core.annotation.MergedAnnotations; -import org.springframework.lang.Nullable; import org.springframework.util.ReflectionUtils; /** diff --git a/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java b/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java index 5509813ba53..1d5a9aa5e0d 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/aot/ToolRuntimeHints.java @@ -16,12 +16,13 @@ package org.springframework.ai.aot; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.tool.execution.DefaultToolCallResultConverter; import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; /** * Registers runtime hints for the tool calling APIs. diff --git a/spring-ai-model/src/main/java/org/springframework/ai/audio/transcription/AudioTranscription.java b/spring-ai-model/src/main/java/org/springframework/ai/audio/transcription/AudioTranscription.java index ae89587fbc3..946da637dfc 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/audio/transcription/AudioTranscription.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/audio/transcription/AudioTranscription.java @@ -18,8 +18,9 @@ import java.util.Objects; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.model.ModelResult; -import org.springframework.lang.Nullable; /** * Represents a response returned by the AI. diff --git a/spring-ai-model/src/main/java/org/springframework/ai/audio/tts/TextToSpeechOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/audio/tts/TextToSpeechOptions.java index 9a3e8de1a1b..b045bfdbbb4 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/audio/tts/TextToSpeechOptions.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/audio/tts/TextToSpeechOptions.java @@ -16,8 +16,9 @@ package org.springframework.ai.audio.tts; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.model.ModelOptions; -import org.springframework.lang.Nullable; /** * Interface for text-to-speech model options. Defines the common, portable options that diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java index 6e37fd7548b..d2cb2b25c31 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/AbstractMessage.java @@ -23,8 +23,9 @@ import java.util.Map; import java.util.Objects; +import org.jspecify.annotations.Nullable; + import org.springframework.core.io.Resource; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StreamUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java index 91d80fc7999..8679d90e05a 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/SystemMessage.java @@ -20,9 +20,10 @@ import java.util.Map; import java.util.Objects; +import org.jspecify.annotations.Nullable; + import org.springframework.core.io.Resource; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/UserMessage.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/UserMessage.java index a75bec61472..989c4644085 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/UserMessage.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/messages/UserMessage.java @@ -23,11 +23,12 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.content.Media; import org.springframework.ai.content.MediaContent; import org.springframework.core.io.Resource; import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java index 9f051ac0597..3be0787c4f7 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/ChatOptions.java @@ -18,8 +18,9 @@ import java.util.List; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.model.ModelOptions; -import org.springframework.lang.Nullable; /** * {@link ModelOptions} representing the common options that are portable across different diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/Prompt.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/Prompt.java index c1cbc829df3..52abeee4d0d 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/Prompt.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/prompt/Prompt.java @@ -24,13 +24,14 @@ import java.util.Objects; import java.util.function.Function; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.SystemMessage; import org.springframework.ai.chat.messages.ToolResponseMessage; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.model.ModelRequest; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/embedding/EmbeddingOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/embedding/EmbeddingOptions.java index aa9dbf18903..cbf7fd809ac 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/embedding/EmbeddingOptions.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/embedding/EmbeddingOptions.java @@ -16,8 +16,9 @@ package org.springframework.ai.embedding; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.model.ModelOptions; -import org.springframework.lang.Nullable; /** * Options for embedding models. diff --git a/spring-ai-model/src/main/java/org/springframework/ai/embedding/EmbeddingRequest.java b/spring-ai-model/src/main/java/org/springframework/ai/embedding/EmbeddingRequest.java index d6e743e3cd7..896c96e9842 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/embedding/EmbeddingRequest.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/embedding/EmbeddingRequest.java @@ -18,8 +18,9 @@ import java.util.List; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.model.ModelRequest; -import org.springframework.lang.Nullable; /** * Request to embed a list of input instructions. diff --git a/spring-ai-model/src/main/java/org/springframework/ai/image/ImageOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/image/ImageOptions.java index 435f6fc62df..15d97844083 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/image/ImageOptions.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/image/ImageOptions.java @@ -16,8 +16,9 @@ package org.springframework.ai.image; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.model.ModelOptions; -import org.springframework.lang.Nullable; /** * ImageOptions represent the common options, portable across different image generation diff --git a/spring-ai-model/src/main/java/org/springframework/ai/model/AbstractResponseMetadata.java b/spring-ai-model/src/main/java/org/springframework/ai/model/AbstractResponseMetadata.java index 33ece56b416..9f12e5defdc 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/model/AbstractResponseMetadata.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/model/AbstractResponseMetadata.java @@ -21,8 +21,9 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import org.jspecify.annotations.Nullable; + import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; public class AbstractResponseMetadata { diff --git a/spring-ai-model/src/main/java/org/springframework/ai/model/MutableResponseMetadata.java b/spring-ai-model/src/main/java/org/springframework/ai/model/MutableResponseMetadata.java index e84d6c746e1..c47fc7f1ce3 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/model/MutableResponseMetadata.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/model/MutableResponseMetadata.java @@ -22,8 +22,9 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; +import org.jspecify.annotations.Nullable; + import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; public class MutableResponseMetadata implements ResponseMetadata { diff --git a/spring-ai-model/src/main/java/org/springframework/ai/model/ResponseMetadata.java b/spring-ai-model/src/main/java/org/springframework/ai/model/ResponseMetadata.java index cda2723d61e..a4774d45081 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/model/ResponseMetadata.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/model/ResponseMetadata.java @@ -20,8 +20,9 @@ import java.util.Set; import java.util.function.Supplier; +import org.jspecify.annotations.Nullable; + import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; /** * Interface representing metadata associated with an AI model's response. diff --git a/spring-ai-model/src/main/java/org/springframework/ai/model/observation/ModelObservationContext.java b/spring-ai-model/src/main/java/org/springframework/ai/model/observation/ModelObservationContext.java index 931fdf976ac..1353613d387 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/model/observation/ModelObservationContext.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/model/observation/ModelObservationContext.java @@ -17,9 +17,9 @@ package org.springframework.ai.model.observation; import io.micrometer.observation.Observation; +import org.jspecify.annotations.Nullable; import org.springframework.ai.observation.AiOperationMetadata; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java index e088994139b..f3074943db4 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/DefaultToolCallingChatOptions.java @@ -24,9 +24,10 @@ import java.util.Map; import java.util.Set; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java index f06e71aa869..c3ee95bf3d6 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/model/tool/ToolCallingChatOptions.java @@ -23,11 +23,12 @@ import java.util.Map; import java.util.Set; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.chat.prompt.ChatOptions; import org.springframework.ai.tool.ToolCallback; import org.springframework.ai.tool.support.ToolUtils; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/moderation/Generation.java b/spring-ai-model/src/main/java/org/springframework/ai/moderation/Generation.java index 804de3b851f..12aed48a6c3 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/moderation/Generation.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/moderation/Generation.java @@ -16,8 +16,9 @@ package org.springframework.ai.moderation; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.model.ModelResult; -import org.springframework.lang.Nullable; /** * The Generation class represents a response from a moderation process. It encapsulates diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java index 73a672b49e1..85aaaf1595b 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/ToolCallback.java @@ -16,13 +16,13 @@ package org.springframework.ai.tool; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ai.chat.model.ToolContext; import org.springframework.ai.tool.definition.ToolDefinition; import org.springframework.ai.tool.metadata.ToolMetadata; -import org.springframework.lang.Nullable; /** * Represents a tool whose execution can be triggered by an AI model. diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java index dcbc5fcab97..80ffa71deb5 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java @@ -25,11 +25,11 @@ import javax.imageio.ImageIO; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ai.util.json.JsonParser; -import org.springframework.lang.Nullable; /** * A default implementation of {@link ToolCallResultConverter}. diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java index d9d1343321e..0a7caf0206b 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/execution/ToolCallResultConverter.java @@ -18,7 +18,7 @@ import java.lang.reflect.Type; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * A functional interface to convert tool call results to a String that can be sent back diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/function/FunctionToolCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/function/FunctionToolCallback.java index 4892a803bfe..c28e3d066d8 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/function/FunctionToolCallback.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/function/FunctionToolCallback.java @@ -22,6 +22,7 @@ import java.util.function.Function; import java.util.function.Supplier; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,7 +38,6 @@ import org.springframework.ai.util.json.JsonParser; import org.springframework.ai.util.json.schema.JsonSchemaGenerator; import org.springframework.core.ParameterizedTypeReference; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java index 45143977b39..c0908b2a760 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/method/MethodToolCallback.java @@ -25,6 +25,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,7 +37,6 @@ import org.springframework.ai.tool.execution.ToolExecutionException; import org.springframework.ai.tool.metadata.ToolMetadata; import org.springframework.ai.util.json.JsonParser; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.CollectionUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/observation/DefaultToolCallingObservationConvention.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/observation/DefaultToolCallingObservationConvention.java index c12ea52555f..ae3189f8636 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/observation/DefaultToolCallingObservationConvention.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/observation/DefaultToolCallingObservationConvention.java @@ -18,9 +18,9 @@ import io.micrometer.common.KeyValue; import io.micrometer.common.KeyValues; +import org.jspecify.annotations.Nullable; import org.springframework.ai.observation.conventions.SpringAiKind; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/observation/ToolCallingObservationContext.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/observation/ToolCallingObservationContext.java index edb22de8cfa..6b10e8b6d3e 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/observation/ToolCallingObservationContext.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/observation/ToolCallingObservationContext.java @@ -17,13 +17,13 @@ package org.springframework.ai.tool.observation; import io.micrometer.observation.Observation; +import org.jspecify.annotations.Nullable; import org.springframework.ai.observation.AiOperationMetadata; import org.springframework.ai.observation.conventions.AiOperationType; import org.springframework.ai.observation.conventions.AiProvider; import org.springframework.ai.tool.definition.ToolDefinition; import org.springframework.ai.tool.metadata.ToolMetadata; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java index dcb1249289c..ee2332e0fd2 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/DelegatingToolCallbackResolver.java @@ -18,8 +18,9 @@ import java.util.List; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java index e58a2180721..d5345ca4448 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/SpringBeanToolCallbackResolver.java @@ -27,6 +27,7 @@ import kotlin.jvm.functions.Function0; import kotlin.jvm.functions.Function1; import kotlin.jvm.functions.Function2; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +43,6 @@ import org.springframework.core.KotlinDetector; import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.ResolvableType; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/ToolCallbackResolver.java b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/ToolCallbackResolver.java index 8efa01e9ccd..0622c160057 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/ToolCallbackResolver.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/tool/resolution/ToolCallbackResolver.java @@ -16,8 +16,9 @@ package org.springframework.ai.tool.resolution; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.tool.ToolCallback; -import org.springframework.lang.Nullable; /** * A resolver for {@link ToolCallback} instances. diff --git a/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java index 7b155e58c3c..25158ed5311 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java @@ -25,9 +25,9 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.json.JsonMapper; +import org.jspecify.annotations.Nullable; import org.springframework.ai.util.JacksonUtils; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java index 6131d40436e..1d374f36372 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/JsonSchemaGenerator.java @@ -38,11 +38,11 @@ import com.github.victools.jsonschema.module.jackson.JacksonOption; import com.github.victools.jsonschema.module.swagger2.Swagger2Module; import io.swagger.v3.oas.annotations.media.Schema; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chat.model.ToolContext; import org.springframework.ai.tool.annotation.ToolParam; import org.springframework.ai.util.json.JsonParser; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; diff --git a/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java index 2182fc6b25b..b7b738d98c9 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/util/json/schema/SpringAiSchemaModule.java @@ -25,9 +25,9 @@ import com.github.victools.jsonschema.generator.SchemaGeneratorConfigBuilder; import com.github.victools.jsonschema.generator.SchemaGeneratorConfigPart; import io.swagger.v3.oas.annotations.media.Schema; +import org.jspecify.annotations.Nullable; import org.springframework.ai.tool.annotation.ToolParam; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/spring-ai-model/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java b/spring-ai-model/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java index 58d19777aa8..eaca91a1465 100644 --- a/spring-ai-model/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java +++ b/spring-ai-model/src/test/java/org/springframework/ai/aot/ToolBeanRegistrationAotProcessorTests.java @@ -23,6 +23,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.springframework.ai.tool.annotation.Tool; @@ -35,7 +36,6 @@ import org.springframework.beans.factory.support.RegisteredBean; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.core.annotation.AliasFor; -import org.springframework.lang.Nullable; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; diff --git a/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java b/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java index f59de021aa6..d935fbd04cd 100644 --- a/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java +++ b/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonSchemaGeneratorTests.java @@ -29,12 +29,12 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import io.swagger.v3.oas.annotations.media.Schema; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.springframework.ai.chat.model.ToolContext; import org.springframework.ai.tool.annotation.ToolParam; import org.springframework.ai.util.json.schema.JsonSchemaGenerator; -import org.springframework.lang.Nullable; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; diff --git a/spring-ai-rag/src/main/java/org/springframework/ai/rag/advisor/RetrievalAugmentationAdvisor.java b/spring-ai-rag/src/main/java/org/springframework/ai/rag/advisor/RetrievalAugmentationAdvisor.java index 10cfea33584..5ea445b7254 100644 --- a/spring-ai-rag/src/main/java/org/springframework/ai/rag/advisor/RetrievalAugmentationAdvisor.java +++ b/spring-ai-rag/src/main/java/org/springframework/ai/rag/advisor/RetrievalAugmentationAdvisor.java @@ -23,6 +23,7 @@ import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import reactor.core.scheduler.Scheduler; import org.springframework.ai.chat.client.ChatClientRequest; @@ -42,7 +43,6 @@ import org.springframework.ai.rag.retrieval.search.DocumentRetriever; import org.springframework.core.task.TaskExecutor; import org.springframework.core.task.support.ContextPropagatingTaskDecorator; -import org.springframework.lang.Nullable; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.util.Assert; diff --git a/spring-ai-rag/src/main/java/org/springframework/ai/rag/generation/augmentation/ContextualQueryAugmenter.java b/spring-ai-rag/src/main/java/org/springframework/ai/rag/generation/augmentation/ContextualQueryAugmenter.java index 6cf814583d0..d95ebb1ce2f 100644 --- a/spring-ai-rag/src/main/java/org/springframework/ai/rag/generation/augmentation/ContextualQueryAugmenter.java +++ b/spring-ai-rag/src/main/java/org/springframework/ai/rag/generation/augmentation/ContextualQueryAugmenter.java @@ -21,6 +21,7 @@ import java.util.function.Function; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,7 +29,6 @@ import org.springframework.ai.document.Document; import org.springframework.ai.rag.Query; import org.springframework.ai.rag.util.PromptAssert; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpander.java b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpander.java index 314a455ba25..d0a2feb2968 100644 --- a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpander.java +++ b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpander.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,7 +28,6 @@ import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.ai.rag.Query; import org.springframework.ai.rag.util.PromptAssert; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; diff --git a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/CompressionQueryTransformer.java b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/CompressionQueryTransformer.java index 071c2378242..b553aeb9cd0 100644 --- a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/CompressionQueryTransformer.java +++ b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/CompressionQueryTransformer.java @@ -19,6 +19,7 @@ import java.util.List; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,7 +29,6 @@ import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.ai.rag.Query; import org.springframework.ai.rag.util.PromptAssert; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/RewriteQueryTransformer.java b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/RewriteQueryTransformer.java index 5955cc6ac58..97f1a46824e 100644 --- a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/RewriteQueryTransformer.java +++ b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/RewriteQueryTransformer.java @@ -16,6 +16,7 @@ package org.springframework.ai.rag.preretrieval.query.transformation; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,7 +24,6 @@ import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.ai.rag.Query; import org.springframework.ai.rag.util.PromptAssert; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/TranslationQueryTransformer.java b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/TranslationQueryTransformer.java index 359d3e9383e..9680985b463 100644 --- a/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/TranslationQueryTransformer.java +++ b/spring-ai-rag/src/main/java/org/springframework/ai/rag/preretrieval/query/transformation/TranslationQueryTransformer.java @@ -16,6 +16,7 @@ package org.springframework.ai.rag.preretrieval.query.transformation; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -23,7 +24,6 @@ import org.springframework.ai.chat.prompt.PromptTemplate; import org.springframework.ai.rag.Query; import org.springframework.ai.rag.util.PromptAssert; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-rag/src/main/java/org/springframework/ai/rag/retrieval/search/VectorStoreDocumentRetriever.java b/spring-ai-rag/src/main/java/org/springframework/ai/rag/retrieval/search/VectorStoreDocumentRetriever.java index cc0cf17e649..8732fa99edd 100644 --- a/spring-ai-rag/src/main/java/org/springframework/ai/rag/retrieval/search/VectorStoreDocumentRetriever.java +++ b/spring-ai-rag/src/main/java/org/springframework/ai/rag/retrieval/search/VectorStoreDocumentRetriever.java @@ -19,13 +19,14 @@ import java.util.List; import java.util.function.Supplier; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.document.Document; import org.springframework.ai.rag.Query; import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.filter.Filter; import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/AbstractVectorStoreBuilder.java b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/AbstractVectorStoreBuilder.java index 64ffa204369..34e47df9e3b 100644 --- a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/AbstractVectorStoreBuilder.java +++ b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/AbstractVectorStoreBuilder.java @@ -17,12 +17,12 @@ package org.springframework.ai.vectorstore; import io.micrometer.observation.ObservationRegistry; +import org.jspecify.annotations.Nullable; import org.springframework.ai.embedding.BatchingStrategy; import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.embedding.TokenCountBatchingStrategy; import org.springframework.ai.vectorstore.observation.VectorStoreObservationConvention; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/SearchRequest.java b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/SearchRequest.java index 7ed36eeff24..f4b1e90aa6d 100644 --- a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/SearchRequest.java +++ b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/SearchRequest.java @@ -18,11 +18,12 @@ import java.util.Objects; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.document.Document; import org.springframework.ai.vectorstore.filter.Filter; import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder; import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -56,8 +57,7 @@ public class SearchRequest { private double similarityThreshold = SIMILARITY_THRESHOLD_ACCEPT_ALL; - @Nullable - private Filter.Expression filterExpression; + private Filter.@Nullable Expression filterExpression; /** * Copy an existing {@link SearchRequest.Builder} instance. @@ -93,8 +93,7 @@ public double getSimilarityThreshold() { return this.similarityThreshold; } - @Nullable - public Filter.Expression getFilterExpression() { + public Filter.@Nullable Expression getFilterExpression() { return this.filterExpression; } @@ -242,7 +241,7 @@ public Builder similarityThresholdAll() { * metadata filter criteria. The 'null' value stands for no expression filters. * @return this builder. */ - public Builder filterExpression(@Nullable Filter.Expression expression) { + public Builder filterExpression(Filter.@Nullable Expression expression) { this.searchRequest.filterExpression = expression; return this; } 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 index 04f98da8499..7aa91fafb59 100644 --- 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 @@ -18,11 +18,12 @@ import java.util.Set; +import org.jspecify.annotations.Nullable; + 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 { diff --git a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/AbstractObservationVectorStore.java b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/AbstractObservationVectorStore.java index 1c8d91957af..9dc2fe1b201 100644 --- a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/AbstractObservationVectorStore.java +++ b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/AbstractObservationVectorStore.java @@ -19,6 +19,7 @@ import java.util.List; import io.micrometer.observation.ObservationRegistry; +import org.jspecify.annotations.Nullable; import org.springframework.ai.document.Document; import org.springframework.ai.embedding.BatchingStrategy; @@ -27,7 +28,6 @@ import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.filter.Filter; -import org.springframework.lang.Nullable; /** * Abstract base class for {@link VectorStore} implementations that provides observation diff --git a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/DefaultVectorStoreObservationConvention.java b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/DefaultVectorStoreObservationConvention.java index 15700d35723..c9a618fac5a 100644 --- a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/DefaultVectorStoreObservationConvention.java +++ b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/DefaultVectorStoreObservationConvention.java @@ -18,11 +18,11 @@ import io.micrometer.common.KeyValue; import io.micrometer.common.KeyValues; +import org.jspecify.annotations.Nullable; import org.springframework.ai.observation.conventions.SpringAiKind; import org.springframework.ai.vectorstore.observation.VectorStoreObservationDocumentation.HighCardinalityKeyNames; import org.springframework.ai.vectorstore.observation.VectorStoreObservationDocumentation.LowCardinalityKeyNames; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/VectorStoreObservationContext.java b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/VectorStoreObservationContext.java index 5a8c3854543..ae29d311fcd 100644 --- a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/VectorStoreObservationContext.java +++ b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/VectorStoreObservationContext.java @@ -19,10 +19,10 @@ import java.util.List; import io.micrometer.observation.Observation; +import org.jspecify.annotations.Nullable; import org.springframework.ai.document.Document; import org.springframework.ai.vectorstore.SearchRequest; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/vector-stores/spring-ai-azure-cosmos-db-store/src/main/java/org/springframework/ai/vectorstore/cosmosdb/CosmosDBVectorStore.java b/vector-stores/spring-ai-azure-cosmos-db-store/src/main/java/org/springframework/ai/vectorstore/cosmosdb/CosmosDBVectorStore.java index c542d43aa7d..27649dc5619 100644 --- a/vector-stores/spring-ai-azure-cosmos-db-store/src/main/java/org/springframework/ai/vectorstore/cosmosdb/CosmosDBVectorStore.java +++ b/vector-stores/spring-ai-azure-cosmos-db-store/src/main/java/org/springframework/ai/vectorstore/cosmosdb/CosmosDBVectorStore.java @@ -54,6 +54,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import reactor.core.publisher.Flux; @@ -67,7 +68,6 @@ import org.springframework.ai.vectorstore.filter.Filter; import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore; import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/vector-stores/spring-ai-azure-store/src/main/java/org/springframework/ai/vectorstore/azure/AzureVectorStore.java b/vector-stores/spring-ai-azure-store/src/main/java/org/springframework/ai/vectorstore/azure/AzureVectorStore.java index b25ecd7c4cc..a5eb769ac81 100644 --- a/vector-stores/spring-ai-azure-store/src/main/java/org/springframework/ai/vectorstore/azure/AzureVectorStore.java +++ b/vector-stores/spring-ai-azure-store/src/main/java/org/springframework/ai/vectorstore/azure/AzureVectorStore.java @@ -43,6 +43,7 @@ import com.azure.search.documents.models.SearchOptions; import com.azure.search.documents.models.VectorSearchOptions; import com.azure.search.documents.models.VectorizedQuery; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -59,7 +60,6 @@ import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore; import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext; import org.springframework.beans.factory.InitializingBean; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; diff --git a/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaApi.java b/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaApi.java index 7f55ab62d4a..d6f487222b1 100644 --- a/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaApi.java +++ b/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaApi.java @@ -27,6 +27,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import org.jspecify.annotations.Nullable; import org.springframework.ai.chroma.vectorstore.ChromaApi.QueryRequest.Include; import org.springframework.ai.chroma.vectorstore.common.ChromaApiConstants; @@ -34,7 +35,6 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.client.support.BasicAuthenticationInterceptor; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; diff --git a/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java b/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java index c34a785d422..3e7928b5182 100644 --- a/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java +++ b/vector-stores/spring-ai-chroma-store/src/main/java/org/springframework/ai/chroma/vectorstore/ChromaVectorStore.java @@ -24,6 +24,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.json.JsonMapper; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,7 +46,6 @@ import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore; import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext; import org.springframework.beans.factory.InitializingBean; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; diff --git a/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/gemfire/GemFireVectorStore.java b/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/gemfire/GemFireVectorStore.java index 3b485c6ba42..de1a9a18b75 100644 --- a/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/gemfire/GemFireVectorStore.java +++ b/vector-stores/spring-ai-gemfire-store/src/main/java/org/springframework/ai/vectorstore/gemfire/GemFireVectorStore.java @@ -26,6 +26,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.json.JsonMapper; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,7 +44,6 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.ExchangeFilterFunction; diff --git a/vector-stores/spring-ai-hanadb-store/src/main/java/org/springframework/ai/vectorstore/hanadb/HanaCloudVectorStore.java b/vector-stores/spring-ai-hanadb-store/src/main/java/org/springframework/ai/vectorstore/hanadb/HanaCloudVectorStore.java index 3efdd517ff4..74a5f05e99b 100644 --- a/vector-stores/spring-ai-hanadb-store/src/main/java/org/springframework/ai/vectorstore/hanadb/HanaCloudVectorStore.java +++ b/vector-stores/spring-ai-hanadb-store/src/main/java/org/springframework/ai/vectorstore/hanadb/HanaCloudVectorStore.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.json.JsonMapper; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,7 +37,6 @@ import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore; import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/vector-stores/spring-ai-mariadb-store/src/main/java/org/springframework/ai/vectorstore/mariadb/MariaDBVectorStore.java b/vector-stores/spring-ai-mariadb-store/src/main/java/org/springframework/ai/vectorstore/mariadb/MariaDBVectorStore.java index dfe737f5791..6849f0c7cfb 100644 --- a/vector-stores/spring-ai-mariadb-store/src/main/java/org/springframework/ai/vectorstore/mariadb/MariaDBVectorStore.java +++ b/vector-stores/spring-ai-mariadb-store/src/main/java/org/springframework/ai/vectorstore/mariadb/MariaDBVectorStore.java @@ -28,6 +28,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.json.JsonMapper; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +48,6 @@ import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/milvus/MilvusSearchRequest.java b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/milvus/MilvusSearchRequest.java index 78ab382b969..a92c1bc7495 100755 --- a/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/milvus/MilvusSearchRequest.java +++ b/vector-stores/spring-ai-milvus-store/src/main/java/org/springframework/ai/vectorstore/milvus/MilvusSearchRequest.java @@ -16,9 +16,10 @@ package org.springframework.ai.vectorstore.milvus; +import org.jspecify.annotations.Nullable; + import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.filter.Filter; -import org.springframework.lang.Nullable; /** * A specialized {@link SearchRequest} for Milvus vector search, extending the base diff --git a/vector-stores/spring-ai-pinecone-store/src/main/java/org/springframework/ai/vectorstore/pinecone/PineconeVectorStore.java b/vector-stores/spring-ai-pinecone-store/src/main/java/org/springframework/ai/vectorstore/pinecone/PineconeVectorStore.java index 8c26acdede3..2b851a79b9a 100644 --- a/vector-stores/spring-ai-pinecone-store/src/main/java/org/springframework/ai/vectorstore/pinecone/PineconeVectorStore.java +++ b/vector-stores/spring-ai-pinecone-store/src/main/java/org/springframework/ai/vectorstore/pinecone/PineconeVectorStore.java @@ -31,6 +31,7 @@ import io.pinecone.proto.QueryRequest; import io.pinecone.unsigned_indices_model.QueryResponseWithUnsignedIndices; import io.pinecone.unsigned_indices_model.VectorWithUnsignedIndices; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +48,6 @@ import org.springframework.ai.vectorstore.filter.converter.PineconeFilterExpressionConverter; import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore; import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/vector-stores/spring-ai-redis-store/src/main/java/org/springframework/ai/vectorstore/redis/RedisVectorStore.java b/vector-stores/spring-ai-redis-store/src/main/java/org/springframework/ai/vectorstore/redis/RedisVectorStore.java index 7ce1ff474be..5ff05494acf 100644 --- a/vector-stores/spring-ai-redis-store/src/main/java/org/springframework/ai/vectorstore/redis/RedisVectorStore.java +++ b/vector-stores/spring-ai-redis-store/src/main/java/org/springframework/ai/vectorstore/redis/RedisVectorStore.java @@ -27,6 +27,7 @@ import java.util.function.Predicate; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import redis.clients.jedis.JedisPooled; @@ -59,7 +60,6 @@ import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore; import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext; import org.springframework.beans.factory.InitializingBean; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; diff --git a/vector-stores/spring-ai-typesense-store/src/main/java/org/springframework/ai/vectorstore/typesense/TypesenseVectorStore.java b/vector-stores/spring-ai-typesense-store/src/main/java/org/springframework/ai/vectorstore/typesense/TypesenseVectorStore.java index 46794ea60a7..f5040261b4e 100644 --- a/vector-stores/spring-ai-typesense-store/src/main/java/org/springframework/ai/vectorstore/typesense/TypesenseVectorStore.java +++ b/vector-stores/spring-ai-typesense-store/src/main/java/org/springframework/ai/vectorstore/typesense/TypesenseVectorStore.java @@ -23,6 +23,7 @@ import java.util.stream.IntStream; import java.util.stream.Stream; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.typesense.api.Client; @@ -50,7 +51,6 @@ import org.springframework.ai.vectorstore.observation.AbstractObservationVectorStore; import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext; import org.springframework.beans.factory.InitializingBean; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /**