From 08a1ef3a2857d816e34f801df176e861a583f724 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 16 May 2025 11:31:15 +0200 Subject: [PATCH 01/25] Prepare next development iteration. See #3096 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 51f60ff7b..aa0a10c36 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-elasticsearch - 5.5.0 + 5.6.0-SNAPSHOT org.springframework.data.build From df6a127629aca8cb1a25fbc0af9d22f89e834727 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 16 May 2025 11:31:17 +0200 Subject: [PATCH 02/25] After release cleanups. See #3096 --- pom.xml | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index aa0a10c36..924646d62 100644 --- a/pom.xml +++ b/pom.xml @@ -5,12 +5,12 @@ org.springframework.data spring-data-elasticsearch - 5.6.0-SNAPSHOT + 6.0.0-SNAPSHOT org.springframework.data.build spring-data-parent - 3.5.0 + 4.0.0-SNAPSHOT Spring Data Elasticsearch @@ -18,7 +18,7 @@ https://github.com/spring-projects/spring-data-elasticsearch - 3.5.0 + 4.0.0-SNAPSHOT 8.18.1 @@ -462,8 +462,20 @@ - - + + spring-snapshot + https://repo.spring.io/snapshot + + true + + + false + + + + spring-milestone + https://repo.spring.io/milestone + From 49d5dee5aa9038c054de74660eb98373ea588dad Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Sun, 24 Nov 2024 11:08:40 +0100 Subject: [PATCH 03/25] Update versions documentation Signed-off-by: Peter-Josef Meisch --- src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc index 72ad88a0e..b626405a8 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc @@ -6,7 +6,8 @@ The following table shows the Elasticsearch and Spring versions that are used by [cols="^,^,^,^",options="header"] |=== | Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework -| 2025.0 | 5.5.x | 8.18.1 | 6.2.x +| 2025.1 (in development) | 6.0.x | 8.17.2 | 6.2.x +| 2025.0 | 5.5.x | 8.17.2 | 6.2.x | 2024.1 | 5.4.x | 8.15.5 | 6.1.x | 2024.0 | 5.3.xfootnote:oom[Out of maintenance] | 8.13.4 | 6.1.x | 2023.1 (Vaughan) | 5.2.xfootnote:oom[] | 8.11.1 | 6.1.x From e298bc9f7a7f9d9b6f79617ca583b38e7802e521 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 8 Jan 2025 15:11:09 +0100 Subject: [PATCH 04/25] Adopt to changes in Spring Framework 7. See #3038 --- .../data/elasticsearch/support/HttpHeadersTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/springframework/data/elasticsearch/support/HttpHeadersTest.java b/src/test/java/org/springframework/data/elasticsearch/support/HttpHeadersTest.java index e9a0a0452..c72fb1b3f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/support/HttpHeadersTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/support/HttpHeadersTest.java @@ -78,7 +78,8 @@ void shouldInitializeFromSpringHttpHeaders() { springHttpHeaders.add(headerName, "true"); var httpHeaders = new HttpHeaders(); - httpHeaders.addAll(springHttpHeaders); + + springHttpHeaders.forEach(httpHeaders::addAll); assertThat(httpHeaders.get(X_TEST_HEADER)).containsExactly("foo", "bar"); assertThat(httpHeaders.get(headerName)).containsExactly("true"); From 76fe240a243411cdd97a5bb7589f7fc9fd9d27c3 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Fri, 24 Jan 2025 10:48:00 +0100 Subject: [PATCH 05/25] Prepare 6.0 M1 (2025.1.0). See #3006 --- pom.xml | 20 ++++---------------- src/main/resources/notice.txt | 23 +---------------------- 2 files changed, 5 insertions(+), 38 deletions(-) diff --git a/pom.xml b/pom.xml index 924646d62..0ae6342c5 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.springframework.data.build spring-data-parent - 4.0.0-SNAPSHOT + 4.0.0-M1 Spring Data Elasticsearch @@ -18,7 +18,7 @@ https://github.com/spring-projects/spring-data-elasticsearch - 4.0.0-SNAPSHOT + 4.0.0-M1 8.18.1 @@ -462,20 +462,8 @@ - - spring-snapshot - https://repo.spring.io/snapshot - - true - - - false - - - - spring-milestone - https://repo.spring.io/milestone - + + diff --git a/src/main/resources/notice.txt b/src/main/resources/notice.txt index 7f6d7c582..c9ad4c05b 100644 --- a/src/main/resources/notice.txt +++ b/src/main/resources/notice.txt @@ -1,4 +1,4 @@ -Spring Data Elasticsearch 5.5 GA (2025.0.0) +Spring Data Elasticsearch 6.0 M1 (2025.1.0) Copyright (c) [2013-2022] Pivotal Software, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). @@ -8,24 +8,3 @@ This product may include a number of subcomponents with separate copyright notices and license terms. Your use of the source code for the these subcomponents is subject to the terms and conditions of the subcomponent's license, as noted in the LICENSE file. - - - - - - - - - - - - - - - - - - - - - From 1acd392af7f397fa305d7a8d65ad31b0a10d648e Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Fri, 24 Jan 2025 10:48:55 +0100 Subject: [PATCH 06/25] Release version 6.0 M1 (2025.1.0). See #3006 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0ae6342c5..7edfc4638 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-elasticsearch - 6.0.0-SNAPSHOT + 6.0.0-M1 org.springframework.data.build From 710526c5f632a7e2b1e1967d319e386d6e042341 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Fri, 24 Jan 2025 10:53:10 +0100 Subject: [PATCH 07/25] Prepare next development iteration. See #3006 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7edfc4638..0ae6342c5 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-elasticsearch - 6.0.0-M1 + 6.0.0-SNAPSHOT org.springframework.data.build From 09984f86e6a944e517eeb4810f2c8076f8be14c4 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Fri, 24 Jan 2025 10:53:12 +0100 Subject: [PATCH 08/25] After release cleanups. See #3006 --- pom.xml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 0ae6342c5..924646d62 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.springframework.data.build spring-data-parent - 4.0.0-M1 + 4.0.0-SNAPSHOT Spring Data Elasticsearch @@ -18,7 +18,7 @@ https://github.com/spring-projects/spring-data-elasticsearch - 4.0.0-M1 + 4.0.0-SNAPSHOT 8.18.1 @@ -462,8 +462,20 @@ - - + + spring-snapshot + https://repo.spring.io/snapshot + + true + + + false + + + + spring-milestone + https://repo.spring.io/milestone + From 3a4425053e0b523276e2f2c58804932cea0535bc Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Mon, 10 Feb 2025 12:00:32 +0100 Subject: [PATCH 09/25] Cleanup unneeded imports after deprecation removal Signed-off-by: Peter-Josef Meisch --- .../query/AbstractReactiveElasticsearchRepositoryQuery.java | 1 - .../elasticsearch/repository/query/ElasticsearchQueryMethod.java | 1 - .../repository/query/ReactiveRepositoryStringQuery.java | 1 - .../elasticsearch/repository/support/QueryStringProcessor.java | 1 - .../repository/query/ReactiveRepositoryStringQueryUnitTests.java | 1 - 5 files changed, 5 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractReactiveElasticsearchRepositoryQuery.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractReactiveElasticsearchRepositoryQuery.java index 6bd79fb90..7b149141e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractReactiveElasticsearchRepositoryQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractReactiveElasticsearchRepositoryQuery.java @@ -36,7 +36,6 @@ import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.repository.query.ParameterAccessor; import org.springframework.data.repository.query.QueryMethod; -import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.ResultProcessor; import org.springframework.util.Assert; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java index 5433a3bd6..e6d995846 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java @@ -51,7 +51,6 @@ import org.springframework.data.repository.query.Parameters; import org.springframework.data.repository.query.ParametersSource; import org.springframework.data.repository.query.QueryMethod; -import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.data.repository.util.QueryExecutionConverters; import org.springframework.data.repository.util.ReactiveWrapperConverters; import org.springframework.data.util.TypeInformation; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQuery.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQuery.java index 11e3b81ec..45b9e66e5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQuery.java @@ -20,7 +20,6 @@ import org.springframework.data.elasticsearch.core.query.BaseQuery; import org.springframework.data.elasticsearch.core.query.StringQuery; import org.springframework.data.elasticsearch.repository.support.QueryStringProcessor; -import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.data.repository.query.ValueExpressionDelegate; import org.springframework.util.Assert; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/QueryStringProcessor.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/QueryStringProcessor.java index b8cfa930b..a32b503b0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/QueryStringProcessor.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/QueryStringProcessor.java @@ -20,7 +20,6 @@ import org.springframework.data.elasticsearch.repository.support.spel.QueryStringSpELEvaluator; import org.springframework.data.expression.ValueEvaluationContextProvider; import org.springframework.data.repository.query.QueryMethod; -import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.util.Assert; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQueryUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQueryUnitTests.java index 536dde273..345f9816e 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQueryUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQueryUnitTests.java @@ -49,7 +49,6 @@ import org.springframework.data.elasticsearch.core.query.StringQuery; import org.springframework.data.elasticsearch.repositories.custommethod.QueryParameter; import org.springframework.data.repository.Repository; -import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.lang.Nullable; /** From e9c7c0ee95a989bbd1b63bf96461aee1f3c2ebca Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Sun, 23 Feb 2025 16:19:05 +0100 Subject: [PATCH 10/25] Switch to jspecify nullability annotations. Original Pull Request #3065 Closes #2984 Signed-off-by: Peter-Josef Meisch --- .../ROOT/pages/elasticsearch/auditing.adoc | 6 +- .../scripted-and-runtime-fields.adoc | 2 +- .../ElasticsearchErrorCause.java | 7 +- .../UncategorizedElasticsearchException.java | 2 +- .../annotations/package-info.java | 3 +- .../SpringDataElasticsearchRuntimeHints.java | 2 +- .../data/elasticsearch/aot/package-info.java | 3 +- .../client/ClientConfiguration.java | 2 +- .../client/ClientConfigurationBuilder.java | 2 +- .../client/DefaultClientConfiguration.java | 3 +- .../client/elc/AbstractQueryProcessor.java | 6 +- .../client/elc/CriteriaQueryProcessor.java | 2 +- .../client/elc/DocumentAdapters.java | 4 +- .../client/elc/ElasticsearchAggregations.java | 2 +- .../elc/ElasticsearchClientFactoryBean.java | 2 +- .../client/elc/ElasticsearchClients.java | 2 +- .../client/elc/ElasticsearchTemplate.java | 2 +- .../client/elc/HighlightQueryBuilder.java | 5 +- .../client/elc/IndicesTemplate.java | 2 +- .../elasticsearch/client/elc/JsonUtils.java | 4 +- .../elasticsearch/client/elc/NativeQuery.java | 9 +- .../client/elc/NativeQueryBuilder.java | 7 +- .../elasticsearch/client/elc/Queries.java | 2 +- .../elc/ReactiveElasticsearchClient.java | 2 +- .../ReactiveElasticsearchClusterClient.java | 12 +- .../ReactiveElasticsearchIndicesClient.java | 2 +- .../elc/ReactiveElasticsearchTemplate.java | 2 +- .../client/elc/ReactiveIndicesTemplate.java | 2 +- .../client/elc/RequestConverter.java | 10 +- .../client/elc/ResponseConverter.java | 5 +- .../elc/SearchDocumentResponseBuilder.java | 8 +- .../elasticsearch/client/elc/TypeUtils.java | 17 +- .../aot/ElasticsearchClientRuntimeHints.java | 4 +- .../client/elc/aot/package-info.java | 3 +- .../client/elc/package-info.java | 3 +- .../elasticsearch/client/package-info.java | 3 +- .../client/util/ScrollState.java | 2 +- .../client/util/package-info.java | 3 +- ...ticsearchAuditingBeanDefinitionParser.java | 2 +- .../ElasticsearchConfigurationSupport.java | 2 +- .../elasticsearch/config/package-info.java | 3 +- .../core/AbstractElasticsearchTemplate.java | 2 +- ...AbstractReactiveElasticsearchTemplate.java | 2 +- .../core/DocumentOperations.java | 2 +- .../core/ElasticsearchOperations.java | 2 +- .../elasticsearch/core/EntityOperations.java | 4 +- .../elasticsearch/core/IndexInformation.java | 2 +- .../elasticsearch/core/IndexOperations.java | 2 +- .../core/IndexOperationsAdapter.java | 2 +- .../core/IndexedObjectInformation.java | 2 +- .../data/elasticsearch/core/MultiGetItem.java | 2 +- .../core/ReactiveElasticsearchOperations.java | 2 +- .../core/ReactiveSearchHits.java | 2 +- .../core/ReactiveSearchHitsImpl.java | 2 +- .../data/elasticsearch/core/SearchHit.java | 2 +- .../elasticsearch/core/SearchHitMapping.java | 2 +- .../elasticsearch/core/SearchHitSupport.java | 2 +- .../data/elasticsearch/core/SearchHits.java | 2 +- .../elasticsearch/core/SearchHitsImpl.java | 2 +- .../core/SearchHitsIterator.java | 2 +- .../elasticsearch/core/SearchOperations.java | 5 +- .../elasticsearch/core/SearchScrollHits.java | 2 +- .../core/SearchShardStatistics.java | 2 +- .../elasticsearch/core/StreamQueries.java | 2 +- .../core/cluster/package-info.java | 3 +- .../DefaultElasticsearchTypeMapper.java | 2 +- .../core/convert/ElasticsearchConverter.java | 2 +- .../core/convert/ElasticsearchTypeMapper.java | 2 +- .../convert/MappingConversionException.java | 2 +- .../MappingElasticsearchConverter.java | 2 +- .../core/convert/package-info.java | 3 +- .../elasticsearch/core/document/Document.java | 2 +- .../core/document/Explanation.java | 2 +- .../core/document/MapDocument.java | 3 +- .../core/document/NestedMetaData.java | 2 +- .../core/document/SearchDocument.java | 2 +- .../core/document/SearchDocumentAdapter.java | 2 +- .../core/document/SearchDocumentResponse.java | 2 +- .../core/document/package-info.java | 3 +- .../core/event/package-info.java | 3 +- .../elasticsearch/core/geo/package-info.java | 3 +- .../core/index/AliasActionParameters.java | 2 +- .../core/index/AliasActions.java | 2 +- .../elasticsearch/core/index/AliasData.java | 2 +- .../index/ComponentTemplateRequestData.java | 2 +- .../core/index/GeoShapeMappingParameters.java | 2 +- .../core/index/MappingBuilder.java | 9 +- .../core/index/MappingParameters.java | 2 +- .../index/PutComponentTemplateRequest.java | 3 +- .../core/index/PutIndexTemplateRequest.java | 2 +- .../core/index/PutTemplateRequest.java | 6 +- .../core/index/ReactiveMappingBuilder.java | 2 +- .../core/index/TemplateData.java | 2 +- .../core/index/TemplateResponse.java | 3 +- .../core/index/TemplateResponseData.java | 2 +- .../core/index/package-info.java | 3 +- .../elasticsearch/core/join/JoinField.java | 2 +- .../elasticsearch/core/mapping/Alias.java | 2 +- .../core/mapping/CreateIndexSettings.java | 2 +- .../ElasticsearchPersistentEntity.java | 5 +- .../ElasticsearchPersistentProperty.java | 2 +- .../SimpleElasticsearchMappingContext.java | 2 +- .../SimpleElasticsearchPersistentEntity.java | 13 +- ...SimpleElasticsearchPersistentProperty.java | 2 +- .../core/mapping/package-info.java | 3 +- .../data/elasticsearch/core/package-info.java | 3 +- .../elasticsearch/core/query/BaseQuery.java | 2 +- .../core/query/BaseQueryBuilder.java | 17 +- .../elasticsearch/core/query/BulkOptions.java | 2 +- .../core/query/ByQueryResponse.java | 2 +- .../elasticsearch/core/query/Criteria.java | 2 +- .../elasticsearch/core/query/DeleteQuery.java | 2 +- .../core/query/DocValueField.java | 2 +- .../core/query/FetchSourceFilter.java | 2 +- .../core/query/FetchSourceFilterBuilder.java | 2 +- .../data/elasticsearch/core/query/Field.java | 2 +- .../core/query/HasChildQuery.java | 2 +- .../core/query/HasParentQuery.java | 2 +- .../core/query/HighlightQuery.java | 2 +- .../elasticsearch/core/query/IndexQuery.java | 2 +- .../core/query/IndexQueryBuilder.java | 4 +- .../core/query/InnerHitsQuery.java | 2 +- .../core/query/MoreLikeThisQuery.java | 2 +- .../data/elasticsearch/core/query/Order.java | 2 +- .../data/elasticsearch/core/query/Query.java | 2 +- .../core/query/RescorerQuery.java | 2 +- .../core/query/RuntimeField.java | 2 +- .../elasticsearch/core/query/ScriptData.java | 2 +- .../core/query/SearchTemplateQuery.java | 2 +- .../query/SearchTemplateQueryBuilder.java | 2 +- .../elasticsearch/core/query/SimpleField.java | 15 +- .../core/query/SourceFilter.java | 2 +- .../elasticsearch/core/query/SqlQuery.java | 2 +- .../elasticsearch/core/query/UpdateQuery.java | 2 +- .../highlight/HighlightCommonParameters.java | 2 +- .../core/query/highlight/package-info.java | 3 +- .../core/query/package-info.java | 3 +- .../core/query/types/package-info.java | 3 +- .../core/reindex/ReindexRequest.java | 12 +- .../core/reindex/ReindexResponse.java | 2 +- .../elasticsearch/core/reindex/Remote.java | 2 +- .../core/reindex/package-info.java | 3 +- .../core/routing/DefaultRoutingResolver.java | 2 +- .../core/routing/RoutingResolver.java | 2 +- .../core/routing/package-info.java | 3 +- .../elasticsearch/core/script/Script.java | 3 +- .../core/script/ScriptOperations.java | 2 +- .../core/script/package-info.java | 6 +- .../elasticsearch/core/sql/SqlResponse.java | 4 +- .../elasticsearch/core/sql/package-info.java | 3 +- .../core/suggest/Completion.java | 2 +- .../core/suggest/package-info.java | 3 +- .../response/CompletionSuggestion.java | 2 +- .../suggest/response/PhraseSuggestion.java | 4 +- .../core/suggest/response/Suggest.java | 2 +- .../core/suggest/response/TermSuggestion.java | 2 +- .../core/suggest/response/package-info.java | 3 +- .../data/elasticsearch/package-info.java | 3 +- .../repository/ElasticsearchRepository.java | 2 +- .../ReactiveElasticsearchRepository.java | 2 +- .../aot/RepositoryRuntimeHints.java | 2 +- .../repository/aot/package-info.java | 3 +- .../repository/cdi/package-info.java | 3 +- .../repository/config/package-info.java | 3 +- .../repository/package-info.java | 2 +- .../AbstractElasticsearchRepositoryQuery.java | 2 +- ...tReactiveElasticsearchRepositoryQuery.java | 7 +- .../query/ElasticsearchQueryMethod.java | 6 +- .../ReactiveElasticsearchQueryExecution.java | 2 +- .../repository/query/package-info.java | 3 +- .../parser/ElasticsearchQueryCreator.java | 318 +++++++++--------- .../repository/query/parser/package-info.java | 3 +- .../ElasticsearchEntityInformation.java | 5 +- .../ElasticsearchRepositoryFactory.java | 2 +- .../ElasticsearchRepositoryFactoryBean.java | 2 +- .../support/QueryStringProcessor.java | 2 +- ...eactiveElasticsearchRepositoryFactory.java | 2 +- ...iveElasticsearchRepositoryFactoryBean.java | 2 +- .../SimpleElasticsearchRepository.java | 4 +- ...SimpleReactiveElasticsearchRepository.java | 2 +- .../repository/support/package-info.java | 3 +- .../querybyexample/ExampleCriteriaMapper.java | 2 +- .../support/querybyexample/package-info.java | 3 +- .../spel/QueryStringSpELEvaluator.java | 2 +- .../repository/support/spel/package-info.java | 3 +- ...earchCollectionValueToStringConverter.java | 2 +- ...sticsearchQueryValueConversionService.java | 2 +- ...ticsearchStringValueToStringConverter.java | 2 +- .../support/value/package-info.java | 3 +- .../support/DefaultStringObjectMap.java | 2 +- .../elasticsearch/support/HttpHeaders.java | 2 +- .../data/elasticsearch/support/ScoreDoc.java | 2 +- .../support/StringObjectMap.java | 2 +- .../elasticsearch/support/VersionInfo.java | 2 +- .../elasticsearch/support/package-info.java | 3 +- .../NestedObjectIntegrationTests.java | 2 +- .../NullabilityArchitectureTests.java | 21 ++ .../ComposableAnnotationsUnitTest.java | 2 +- .../elc/CriteriaQueryMappingUnitTests.java | 2 +- .../elasticsearch/client/elc/DevTests.java | 2 +- .../client/elc/ELCWiremockTests.java | 3 +- .../client/elc/RequestConverterTest.java | 6 +- .../client/util/package-info.java | 3 +- .../config/AuditingIntegrationTests.java | 2 +- .../AuditingReactiveIntegrationTest.java | 2 +- .../ElasticsearchConfigurationELCTests.java | 2 +- ...iveElasticsearchConfigurationELCTests.java | 2 +- ...bleNestedRepositoriesIntegrationTests.java | 5 +- .../EnableRepositoriesIntegrationTests.java | 22 +- .../config/notnested/package-info.java | 3 +- .../ElasticsearchELCIntegrationTests.java | 2 +- .../core/ElasticsearchIntegrationTests.java | 59 ++-- .../core/EntityOperationsUnitTests.java | 2 +- .../core/InnerHitsIntegrationTests.java | 2 +- .../core/LogEntityIntegrationTests.java | 5 +- .../core/PointInTimeIntegrationTests.java | 2 +- ...ctiveElasticsearchELCIntegrationTests.java | 2 +- ...ReactiveElasticsearchIntegrationTests.java | 17 +- .../ReactivePointInTimeIntegrationTests.java | 2 +- .../core/ReactiveReindexIntegrationTests.java | 2 +- ...eactiveSearchTemplateIntegrationTests.java | 2 +- .../core/ReindexIntegrationTests.java | 2 +- .../core/SearchAsYouTypeIntegrationTests.java | 2 +- .../core/SearchTemplateIntegrationTests.java | 2 +- .../core/SourceFilterIntegrationTests.java | 4 +- .../AggregationIntegrationTests.java | 4 +- ...appingElasticsearchConverterUnitTests.java | 22 +- .../PropertyValueConvertersUnitTests.java | 2 +- .../event/AuditingEntityCallbackTests.java | 2 +- .../core/event/CallbackIntegrationTests.java | 4 +- .../ReactiveAuditingEntityCallbackTests.java | 2 +- .../ReactiveCallbackIntegrationTests.java | 2 +- .../core/geo/GeoIntegrationTests.java | 2 +- .../elasticsearch/core/geo/GeoJsonEntity.java | 2 +- .../core/geo/GeoJsonIntegrationTests.java | 2 +- .../IndexOperationsIntegrationTests.java | 2 +- .../index/IndexTemplateIntegrationTests.java | 2 +- .../index/MappingBuilderIntegrationTests.java | 7 +- .../core/index/MappingBuilderUnitTests.java | 99 +++--- .../core/index/MappingParametersTest.java | 3 +- ...activeIndexOperationsIntegrationTests.java | 2 +- ...ReactiveIndexTemplateIntegrationTests.java | 2 +- .../ReactiveMappingBuilderUnitTests.java | 2 +- .../SimpleDynamicTemplatesMappingTests.java | 2 +- .../SimpleElasticsearchDateMappingTests.java | 2 +- ...ntityCustomConversionIntegrationTests.java | 2 +- .../FieldNamingStrategyIntegrationTests.java | 2 +- ...veFieldNamingStrategyIntegrationTests.java | 2 +- ...pleElasticsearchPersistentEntityTests.java | 4 +- ...sticsearchPersistentPropertyUnitTests.java | 2 +- .../ReactiveSearchAfterIntegrationTests.java | 2 +- .../SearchAfterIntegrationTests.java | 2 +- .../core/paginating/package-info.java | 3 +- .../query/CriteriaQueryIntegrationTests.java | 8 +- .../query/NativeQueryIntegrationTests.java | 2 +- .../RepositoryPartQueryIntegrationTests.java | 2 +- ...iptedAndRuntimeFieldsIntegrationTests.java | 2 +- ...iptedAndRuntimeFieldsIntegrationTests.java | 2 +- .../sort/NestedSortIntegrationTests.java | 2 +- .../DefaultRoutingResolverUnitTest.java | 15 +- .../core/routing/ReactiveRoutingTests.java | 2 +- .../core/routing/RoutingIntegrationTests.java | 2 +- ...ReactiveSqlOperationsIntegrationTests.java | 2 +- .../sql/SqlOperationsIntegrationTests.java | 2 +- .../suggest/CompletionIntegrationTests.java | 2 +- ...ompletionWithContextsIntegrationTests.java | 2 +- .../ReactiveSuggestIntegrationTests.java | 2 +- .../ImmutableRepositoryIntegrationTests.java | 2 +- .../junit/jupiter/ClusterConnection.java | 3 +- .../junit/jupiter/ClusterConnectionInfo.java | 2 +- .../junit/jupiter/package-info.java | 2 +- .../repositories/cdi/CdiRepositoryClient.java | 2 +- .../repositories/cdi/CdiRepositoryTests.java | 8 +- .../repositories/cdi/package-info.java | 3 +- ...ustomMethodRepositoryIntegrationTests.java | 2 +- ...epositoryManualWiringIntegrationTests.java | 2 +- ...ustomMethodRepositoryIntegrationTests.java | 7 +- .../geo/GeoRepositoryIntegrationTests.java | 2 +- .../knn/KnnSearchIntegrationTests.java | 2 +- .../InnerObjectIntegrationTests.java | 2 +- .../SynonymRepositoryIntegrationTests.java | 2 +- ...asticsearchRepositoryIntegrationTests.java | 7 +- ...asticsearchRepositoriesRegistrarTests.java | 2 +- .../ElasticsearchQueryMethodUnitTests.java | 2 +- ...tiveElasticsearchQueryMethodUnitTests.java | 4 +- ...epositorySearchTemplateQueryUnitTests.java | 2 +- ...eactiveRepositoryStringQueryUnitTests.java | 4 +- ...epositorySearchTemplateQueryUnitTests.java | 2 +- .../query/RepositoryStringQueryUnitTests.java | 2 +- .../QueryKeywordsIntegrationTests.java | 2 +- ...ReactiveQueryKeywordsIntegrationTests.java | 2 +- ...eactiveValueConverterIntegrationTests.java | 31 +- .../ValueConverterIntegrationTests.java | 2 +- ...asticsearchRepositoryIntegrationTests.java | 7 +- ...activeRepositoryQueryIntegrationTests.java | 2 +- .../RepositoryQueryIntegrationTests.java | 2 +- ...asticsearchRepositoryIntegrationTests.java | 7 +- ...ElasticsearchExecutorIntegrationTests.java | 7 +- ...ElasticsearchExecutorIntegrationTests.java | 14 +- 299 files changed, 707 insertions(+), 767 deletions(-) create mode 100644 src/test/java/org/springframework/data/elasticsearch/NullabilityArchitectureTests.java diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/auditing.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/auditing.adoc index d02373f82..f9633dec4 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/auditing.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/auditing.adoc @@ -10,7 +10,7 @@ In order for the auditing code to be able to decide whether an entity instance i ---- package org.springframework.data.domain; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; public interface Persistable { @Nullable @@ -81,5 +81,5 @@ class MyConfiguration { } ---- -If your code contains more than one `AuditorAware` bean for different types, you must provide the name of the bean to use as an argument to the `auditorAwareRef` parameter of the - `@EnableElasticsearchAuditing` annotation. +If your code contains more than one `AuditorAware` bean for different types, you must provide the name of the bean to use as an argument to the `auditorAwareRef` parameter of the + `@EnableElasticsearchAuditing` annotation. diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/scripted-and-runtime-fields.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/scripted-and-runtime-fields.adoc index 38345d424..64d4a0c00 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/scripted-and-runtime-fields.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/scripted-and-runtime-fields.adoc @@ -20,12 +20,12 @@ Whereas the birthdate is fix, the age depends on the time when a query is issued ==== [source,java] ---- +import org.jspecify.annotations.Nullable; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.DateFormat; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.ScriptedField; -import org.springframework.lang.Nullable; import java.time.LocalDate; import java.time.format.DateTimeFormatter; diff --git a/src/main/java/org/springframework/data/elasticsearch/ElasticsearchErrorCause.java b/src/main/java/org/springframework/data/elasticsearch/ElasticsearchErrorCause.java index d0622bfa5..22dbbfd7c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/ElasticsearchErrorCause.java +++ b/src/main/java/org/springframework/data/elasticsearch/ElasticsearchErrorCause.java @@ -15,10 +15,10 @@ */ package org.springframework.data.elasticsearch; -import org.springframework.lang.Nullable; - import java.util.List; +import org.jspecify.annotations.Nullable; + /** * Object describing an Elasticsearch error * @@ -26,8 +26,7 @@ * @since 4.4 */ public class ElasticsearchErrorCause { - @Nullable - private final String type; + @Nullable private final String type; private final String reason; diff --git a/src/main/java/org/springframework/data/elasticsearch/UncategorizedElasticsearchException.java b/src/main/java/org/springframework/data/elasticsearch/UncategorizedElasticsearchException.java index ca70b022b..ffc71ef7b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/UncategorizedElasticsearchException.java +++ b/src/main/java/org/springframework/data/elasticsearch/UncategorizedElasticsearchException.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch; +import org.jspecify.annotations.Nullable; import org.springframework.dao.UncategorizedDataAccessException; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/main/java/org/springframework/data/elasticsearch/annotations/package-info.java b/src/main/java/org/springframework/data/elasticsearch/annotations/package-info.java index 60fe25267..4b8ccdf64 100644 --- a/src/main/java/org/springframework/data/elasticsearch/annotations/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/annotations/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.annotations; diff --git a/src/main/java/org/springframework/data/elasticsearch/aot/SpringDataElasticsearchRuntimeHints.java b/src/main/java/org/springframework/data/elasticsearch/aot/SpringDataElasticsearchRuntimeHints.java index f135eaddd..100b2ae44 100644 --- a/src/main/java/org/springframework/data/elasticsearch/aot/SpringDataElasticsearchRuntimeHints.java +++ b/src/main/java/org/springframework/data/elasticsearch/aot/SpringDataElasticsearchRuntimeHints.java @@ -19,6 +19,7 @@ import java.util.Arrays; +import org.jspecify.annotations.Nullable; import org.springframework.aot.hint.MemberCategory; import org.springframework.aot.hint.RuntimeHints; import org.springframework.aot.hint.RuntimeHintsRegistrar; @@ -32,7 +33,6 @@ import org.springframework.data.elasticsearch.core.event.ReactiveAfterLoadCallback; import org.springframework.data.elasticsearch.core.event.ReactiveAfterSaveCallback; import org.springframework.data.elasticsearch.core.event.ReactiveBeforeConvertCallback; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/main/java/org/springframework/data/elasticsearch/aot/package-info.java b/src/main/java/org/springframework/data/elasticsearch/aot/package-info.java index 292bf8a1a..56697c102 100644 --- a/src/main/java/org/springframework/data/elasticsearch/aot/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/aot/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.aot; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/ClientConfiguration.java b/src/main/java/org/springframework/data/elasticsearch/client/ClientConfiguration.java index bbd7e360b..f092e2bf6 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/ClientConfiguration.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/ClientConfiguration.java @@ -25,8 +25,8 @@ import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.support.HttpHeaders; -import org.springframework.lang.Nullable; /** * Configuration interface exposing common client configuration properties for Elasticsearch clients. diff --git a/src/main/java/org/springframework/data/elasticsearch/client/ClientConfigurationBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/ClientConfigurationBuilder.java index 247bc9be9..71af99212 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/ClientConfigurationBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/ClientConfigurationBuilder.java @@ -25,11 +25,11 @@ import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.client.ClientConfiguration.ClientConfigurationBuilderWithRequiredEndpoint; import org.springframework.data.elasticsearch.client.ClientConfiguration.MaybeSecureClientConfigurationBuilder; import org.springframework.data.elasticsearch.client.ClientConfiguration.TerminalClientConfigurationBuilder; import org.springframework.data.elasticsearch.support.HttpHeaders; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/DefaultClientConfiguration.java b/src/main/java/org/springframework/data/elasticsearch/client/DefaultClientConfiguration.java index d13f556c7..ea097bbb5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/DefaultClientConfiguration.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/DefaultClientConfiguration.java @@ -24,9 +24,8 @@ import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; -import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.support.HttpHeaders; -import org.springframework.lang.Nullable; /** * Default {@link ClientConfiguration} implementation. diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/AbstractQueryProcessor.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/AbstractQueryProcessor.java index d882ddb1f..ff0e1bd3a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/AbstractQueryProcessor.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/AbstractQueryProcessor.java @@ -17,10 +17,10 @@ import java.util.function.Consumer; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.query.CriteriaQuery; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.StringQuery; -import org.springframework.lang.Nullable; /** * An abstract class that serves as a base for query processors. It provides a common interface and basic functionality @@ -38,8 +38,8 @@ public abstract class AbstractQueryProcessor { * @param queryConverter correct mapped field names and the values to the converted values. * @return an Elasticsearch {@literal query}. */ - @Nullable - static co.elastic.clients.elasticsearch._types.query_dsl.Query getEsQuery(@Nullable Query query, + + static co.elastic.clients.elasticsearch._types.query_dsl.@Nullable Query getEsQuery(@Nullable Query query, @Nullable Consumer queryConverter) { if (query == null) { return null; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryProcessor.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryProcessor.java index 51bc9bccd..1c9c9ef53 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryProcessor.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryProcessor.java @@ -31,13 +31,13 @@ import java.util.List; import java.util.Objects; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.data.elasticsearch.core.query.Criteria; import org.springframework.data.elasticsearch.core.query.Field; import org.springframework.data.elasticsearch.core.query.HasChildQuery; import org.springframework.data.elasticsearch.core.query.HasParentQuery; import org.springframework.data.elasticsearch.core.query.InnerHitsQuery; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java index 5996bada3..ccb937bf7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java @@ -34,6 +34,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.MultiGetItem; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.document.Explanation; @@ -41,7 +42,6 @@ import org.springframework.data.elasticsearch.core.document.SearchDocument; import org.springframework.data.elasticsearch.core.document.SearchDocumentAdapter; import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -160,7 +160,7 @@ public static SearchDocument from(CompletionSuggestOption completio } @Nullable - private static Explanation from(@Nullable co.elastic.clients.elasticsearch.core.explain.Explanation explanation) { + private static Explanation from(co.elastic.clients.elasticsearch.core.explain.@Nullable Explanation explanation) { if (explanation == null) { return null; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchAggregations.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchAggregations.java index 4f257c3e3..95e778802 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchAggregations.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchAggregations.java @@ -22,8 +22,8 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.AggregationsContainer; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchClientFactoryBean.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchClientFactoryBean.java index dcb92f5cf..2ca7fcbb8 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchClientFactoryBean.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchClientFactoryBean.java @@ -19,12 +19,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.FactoryBeanNotInitializedException; import org.springframework.beans.factory.InitializingBean; import org.springframework.data.elasticsearch.client.ClientConfiguration; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchClients.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchClients.java index 286d6a9dc..c4f6452cc 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchClients.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchClients.java @@ -46,9 +46,9 @@ import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.support.HttpHeaders; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java index 70b76bc5b..3e0d6235d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ElasticsearchTemplate.java @@ -40,6 +40,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.BulkFailureException; import org.springframework.data.elasticsearch.client.UnsupportedBackendOperation; import org.springframework.data.elasticsearch.core.AbstractElasticsearchTemplate; @@ -59,7 +60,6 @@ import org.springframework.data.elasticsearch.core.reindex.ReindexResponse; import org.springframework.data.elasticsearch.core.script.Script; import org.springframework.data.elasticsearch.core.sql.SqlResponse; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/HighlightQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/HighlightQueryBuilder.java index 6ef0ea506..dfe850e4d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/HighlightQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/HighlightQueryBuilder.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty; import org.springframework.data.elasticsearch.core.query.highlight.Highlight; @@ -27,7 +28,6 @@ import org.springframework.data.elasticsearch.core.query.highlight.HighlightFieldParameters; import org.springframework.data.elasticsearch.core.query.highlight.HighlightParameters; import org.springframework.data.mapping.context.MappingContext; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** @@ -43,7 +43,8 @@ class HighlightQueryBuilder { private final RequestConverter requestConverter; HighlightQueryBuilder( - MappingContext, ElasticsearchPersistentProperty> mappingContext, RequestConverter requestConverter) { + MappingContext, ElasticsearchPersistentProperty> mappingContext, + RequestConverter requestConverter) { this.mappingContext = mappingContext; this.requestConverter = requestConverter; } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/IndicesTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/IndicesTemplate.java index d4c087455..5a735a724 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/IndicesTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/IndicesTemplate.java @@ -27,6 +27,7 @@ import java.util.Objects; import java.util.Set; +import org.jspecify.annotations.Nullable; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.elasticsearch.UncategorizedElasticsearchException; @@ -49,7 +50,6 @@ import org.springframework.data.elasticsearch.core.mapping.CreateIndexSettings; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/JsonUtils.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/JsonUtils.java index 3260b5a79..5a927774f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/JsonUtils.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/JsonUtils.java @@ -23,7 +23,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * @author Peter-Josef Meisch @@ -48,7 +48,7 @@ public static String toJson(Object object, JsonpMapper mapper) { } @Nullable - public static String queryToJson(@Nullable co.elastic.clients.elasticsearch._types.query_dsl.Query query, + public static String queryToJson(co.elastic.clients.elasticsearch._types.query_dsl.@Nullable Query query, JsonpMapper mapper) { if (query == null) { diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java index 44540494b..d8d2d21ae 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQuery.java @@ -28,8 +28,8 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.query.BaseQuery; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -44,7 +44,7 @@ public class NativeQuery extends BaseQuery { @Nullable private final Query query; - @Nullable private org.springframework.data.elasticsearch.core.query.Query springDataQuery; + private org.springframework.data.elasticsearch.core.query.@Nullable Query springDataQuery; @Nullable private Query filter; // note: the new client does not have pipeline aggs, these are just set up as normal aggs private final Map aggregations = new LinkedHashMap<>(); @@ -117,7 +117,7 @@ public Map getSearchExtensions() { * @see NativeQueryBuilder#withQuery(org.springframework.data.elasticsearch.core.query.Query). * @since 5.1 */ - public void setSpringDataQuery(@Nullable org.springframework.data.elasticsearch.core.query.Query springDataQuery) { + public void setSpringDataQuery(org.springframework.data.elasticsearch.core.query.@Nullable Query springDataQuery) { this.springDataQuery = springDataQuery; } @@ -129,8 +129,7 @@ public List getKnnSearches() { return knnSearches; } - @Nullable - public org.springframework.data.elasticsearch.core.query.Query getSpringDataQuery() { + public org.springframework.data.elasticsearch.core.query.@Nullable Query getSpringDataQuery() { return springDataQuery; } } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java index 1cdd15c04..e8a1e748a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/NativeQueryBuilder.java @@ -33,8 +33,8 @@ import java.util.Map; import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -53,7 +53,7 @@ public class NativeQueryBuilder extends BaseQueryBuilder sortOptions = new ArrayList<>(); private final Map searchExtensions = new LinkedHashMap<>(); - @Nullable private org.springframework.data.elasticsearch.core.query.Query springDataQuery; + private org.springframework.data.elasticsearch.core.query.@Nullable Query springDataQuery; @Nullable private KnnQuery knnQuery; @Nullable private List knnSearches = Collections.emptyList(); @@ -104,8 +104,7 @@ public List getKnnSearches() { return knnSearches; } - @Nullable - public org.springframework.data.elasticsearch.core.query.Query getSpringDataQuery() { + public org.springframework.data.elasticsearch.core.query.@Nullable Query getSpringDataQuery() { return springDataQuery; } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/Queries.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/Queries.java index 1d254cb27..7259f0ca4 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/Queries.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/Queries.java @@ -34,9 +34,9 @@ import java.util.List; import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.geo.GeoPoint; import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClient.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClient.java index bcae5acc8..7241fa7b8 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClient.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClient.java @@ -30,7 +30,7 @@ import java.io.IOException; import java.util.function.Function; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClusterClient.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClusterClient.java index 5d4fbcef1..b90f0da96 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClusterClient.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchClusterClient.java @@ -16,7 +16,15 @@ package org.springframework.data.elasticsearch.client.elc; import co.elastic.clients.ApiClient; -import co.elastic.clients.elasticsearch.cluster.*; +import co.elastic.clients.elasticsearch.cluster.DeleteComponentTemplateRequest; +import co.elastic.clients.elasticsearch.cluster.DeleteComponentTemplateResponse; +import co.elastic.clients.elasticsearch.cluster.ExistsComponentTemplateRequest; +import co.elastic.clients.elasticsearch.cluster.GetComponentTemplateRequest; +import co.elastic.clients.elasticsearch.cluster.GetComponentTemplateResponse; +import co.elastic.clients.elasticsearch.cluster.HealthRequest; +import co.elastic.clients.elasticsearch.cluster.HealthResponse; +import co.elastic.clients.elasticsearch.cluster.PutComponentTemplateRequest; +import co.elastic.clients.elasticsearch.cluster.PutComponentTemplateResponse; import co.elastic.clients.transport.ElasticsearchTransport; import co.elastic.clients.transport.TransportOptions; import co.elastic.clients.transport.endpoints.BooleanResponse; @@ -25,7 +33,7 @@ import java.util.function.Function; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Reactive version of the {@link co.elastic.clients.elasticsearch.cluster.ElasticsearchClusterClient} diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchIndicesClient.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchIndicesClient.java index 50b859423..e5f6df392 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchIndicesClient.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchIndicesClient.java @@ -25,7 +25,7 @@ import java.util.function.Function; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Reactive version of the {@link co.elastic.clients.elasticsearch.indices.ElasticsearchIndicesClient} diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java index 78bd2213a..a98e41ab9 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchTemplate.java @@ -40,6 +40,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.BulkFailureException; @@ -63,7 +64,6 @@ import org.springframework.data.elasticsearch.core.reindex.ReindexResponse; import org.springframework.data.elasticsearch.core.script.Script; import org.springframework.data.elasticsearch.core.sql.SqlResponse; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveIndicesTemplate.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveIndicesTemplate.java index 0ac64fa12..235905ce5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveIndicesTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveIndicesTemplate.java @@ -29,6 +29,7 @@ import java.util.Objects; import java.util.Set; +import org.jspecify.annotations.Nullable; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.elasticsearch.NoSuchIndexException; @@ -51,7 +52,6 @@ import org.springframework.data.elasticsearch.core.mapping.CreateIndexSettings; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java index 658b2caee..a8d8beabe 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java @@ -78,6 +78,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.core.RefreshPolicy; @@ -101,7 +102,6 @@ import org.springframework.data.elasticsearch.core.reindex.Remote; import org.springframework.data.elasticsearch.core.script.Script; import org.springframework.data.elasticsearch.support.DefaultStringObjectMap; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; @@ -738,8 +738,7 @@ private CreateOperation bulkCreateOperation(IndexQuery query, IndexCoordinate return uob.build(); } - @Nullable - private co.elastic.clients.elasticsearch._types.Script getScript(@Nullable ScriptData scriptData) { + private co.elastic.clients.elasticsearch._types.@Nullable Script getScript(@Nullable ScriptData scriptData) { if (scriptData == null) { return null; @@ -1729,7 +1728,7 @@ private SortOptions getSortOptions(Sort.Order order, @Nullable ElasticsearchPers } @Nullable - private NestedSortValue getNestedSort(@Nullable Order.Nested nested, + private NestedSortValue getNestedSort(Order.@Nullable Nested nested, @Nullable ElasticsearchPersistentEntity persistentEntity) { return (nested == null || persistentEntity == null) ? null : NestedSortValue.of(b -> b // @@ -1793,8 +1792,7 @@ private void prepareNativeSearch(NativeQuery query, MultisearchBody.Builder buil } } - @Nullable - co.elastic.clients.elasticsearch._types.query_dsl.Query getQuery(@Nullable Query query, + co.elastic.clients.elasticsearch._types.query_dsl.@Nullable Query getQuery(@Nullable Query query, @Nullable Class clazz) { return getEsQuery(query, (q) -> elasticsearchConverter.updateQuery(q, clazz)); } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java index ad6a44d58..7024584f3 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java @@ -48,6 +48,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.ElasticsearchErrorCause; import org.springframework.data.elasticsearch.core.IndexInformation; import org.springframework.data.elasticsearch.core.MultiGetItem; @@ -65,7 +66,6 @@ import org.springframework.data.elasticsearch.core.script.Script; import org.springframework.data.elasticsearch.core.sql.SqlResponse; import org.springframework.data.elasticsearch.support.DefaultStringObjectMap; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -415,8 +415,7 @@ private ByQueryResponse.Failure byQueryResponseFailureOf(BulkIndexByScrollFailur .withErrorCause(toErrorCause(failure.cause())).build(); } - @Nullable - public static MultiGetItem.Failure getFailure(MultiGetResponseItem itemResponse) { + public static MultiGetItem.@Nullable Failure getFailure(MultiGetResponseItem itemResponse) { MultiGetError responseFailure = itemResponse.isFailure() ? itemResponse.failure() : null; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/SearchDocumentResponseBuilder.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/SearchDocumentResponseBuilder.java index f9afa4fad..94a6ab1e5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/SearchDocumentResponseBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/SearchDocumentResponseBuilder.java @@ -39,6 +39,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.SearchShardStatistics; import org.springframework.data.elasticsearch.core.TotalHitsRelation; import org.springframework.data.elasticsearch.core.document.SearchDocument; @@ -48,7 +49,6 @@ import org.springframework.data.elasticsearch.core.suggest.response.Suggest; import org.springframework.data.elasticsearch.core.suggest.response.TermSuggestion; import org.springframework.data.elasticsearch.support.ScoreDoc; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; @@ -133,7 +133,8 @@ public static SearchDocumentResponse from(SearchTemplateResponse SearchDocumentResponse from(HitsMetadata hitsMetadata, @Nullable ShardStatistics shards, - @Nullable String scrollId, @Nullable String pointInTimeId, long executionDurationInMillis, @Nullable Map aggregations, + @Nullable String scrollId, @Nullable String pointInTimeId, long executionDurationInMillis, + @Nullable Map aggregations, Map>> suggestES, SearchDocumentResponse.EntityCreator entityCreator, JsonpMapper jsonpMapper) { @@ -171,7 +172,8 @@ public static SearchDocumentResponse from(HitsMetadata hitsMetadata, @Nul SearchShardStatistics shardStatistics = shards != null ? shardsFrom(shards) : null; - return new SearchDocumentResponse(totalHits, totalHitsRelation, maxScore, executionDuration, scrollId, pointInTimeId, searchDocuments, + return new SearchDocumentResponse(totalHits, totalHitsRelation, maxScore, executionDuration, scrollId, + pointInTimeId, searchDocuments, aggregationsContainer, suggest, shardStatistics); } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/TypeUtils.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/TypeUtils.java index 43747f3a7..db38baf13 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/TypeUtils.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/TypeUtils.java @@ -38,6 +38,7 @@ import java.util.Map; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.core.RefreshPolicy; import org.springframework.data.elasticsearch.core.document.Document; @@ -52,7 +53,6 @@ import org.springframework.data.elasticsearch.core.query.types.ConflictsType; import org.springframework.data.elasticsearch.core.query.types.OperatorType; import org.springframework.data.elasticsearch.core.reindex.ReindexRequest; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -220,7 +220,7 @@ static GeoDistanceType geoDistanceType(GeoDistanceOrder.DistanceType distanceTyp } @Nullable - static SortOrder sortOrder(@Nullable Sort.Direction direction) { + static SortOrder sortOrder(Sort.@Nullable Direction direction) { if (direction == null) { return null; @@ -301,7 +301,7 @@ static HighlighterTagsSchema highlighterTagsSchema(@Nullable String value) { } @Nullable - static OpType opType(@Nullable IndexQuery.OpType opType) { + static OpType opType(IndexQuery.@Nullable OpType opType) { if (opType != null) { return switch (opType) { @@ -325,8 +325,7 @@ static Refresh refresh(@Nullable RefreshPolicy refreshPolicy) { }; } - @Nullable - static UpdateResponse.Result result(@Nullable Result result) { + static UpdateResponse.@Nullable Result result(@Nullable Result result) { if (result == null) { return null; @@ -343,7 +342,7 @@ static UpdateResponse.Result result(@Nullable Result result) { } @Nullable - static ScoreMode scoreMode(@Nullable RescorerQuery.ScoreMode scoreMode) { + static ScoreMode scoreMode(RescorerQuery.@Nullable ScoreMode scoreMode) { if (scoreMode == null) { return null; @@ -361,7 +360,7 @@ static ScoreMode scoreMode(@Nullable RescorerQuery.ScoreMode scoreMode) { } @Nullable - static SearchType searchType(@Nullable Query.SearchType searchType) { + static SearchType searchType(Query.@Nullable SearchType searchType) { if (searchType == null) { return null; @@ -418,7 +417,7 @@ static String timeStringMs(@Nullable Duration duration) { @Nullable static VersionType versionType( - @Nullable org.springframework.data.elasticsearch.annotations.Document.VersionType versionType) { + org.springframework.data.elasticsearch.annotations.Document.@Nullable VersionType versionType) { if (versionType != null) { return switch (versionType) { @@ -536,7 +535,7 @@ static Conflicts conflicts(@Nullable ConflictsType conflicts) { * @param scoreMode spring-data-elasticsearch {@literal scoreMode}. * @return an Elasticsearch {@literal scoreMode}. */ - static ChildScoreMode scoreMode(@Nullable HasChildQuery.ScoreMode scoreMode) { + static ChildScoreMode scoreMode(HasChildQuery.@Nullable ScoreMode scoreMode) { if (scoreMode == null) { return ChildScoreMode.None; } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/ElasticsearchClientRuntimeHints.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/ElasticsearchClientRuntimeHints.java index 47fb2a8e1..2c177a13a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/ElasticsearchClientRuntimeHints.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/ElasticsearchClientRuntimeHints.java @@ -19,11 +19,11 @@ import co.elastic.clients.elasticsearch._types.mapping.TypeMapping; import co.elastic.clients.elasticsearch.indices.IndexSettings; import co.elastic.clients.elasticsearch.indices.PutMappingRequest; -import org.springframework.aot.hint.MemberCategory; + +import org.jspecify.annotations.Nullable; 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 for the Elasticsearch client libraries, as these do not provide any of their own. diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/package-info.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/package-info.java index 7d6be368b..2718c30fb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/aot/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.client.elc.aot; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/package-info.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/package-info.java index 8dc2f99df..011b5f7fb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/package-info.java @@ -18,6 +18,5 @@ * This package contains classes that use the new Elasticsearch client library (co.elastic.clients:elasticsearch-java) * to access Elasticsearch. */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.client.elc; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/package-info.java b/src/main/java/org/springframework/data/elasticsearch/client/package-info.java index 3594797d6..1aa3d179a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.client; diff --git a/src/main/java/org/springframework/data/elasticsearch/client/util/ScrollState.java b/src/main/java/org/springframework/data/elasticsearch/client/util/ScrollState.java index f901706c1..a20805ad2 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/util/ScrollState.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/util/ScrollState.java @@ -19,7 +19,7 @@ import java.util.List; import java.util.Set; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.StringUtils; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/client/util/package-info.java b/src/main/java/org/springframework/data/elasticsearch/client/util/package-info.java index 79701328c..3e0be8092 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/util/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/util/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.client.util; diff --git a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchAuditingBeanDefinitionParser.java b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchAuditingBeanDefinitionParser.java index 9152ed57b..527ae4ad1 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchAuditingBeanDefinitionParser.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchAuditingBeanDefinitionParser.java @@ -17,6 +17,7 @@ import static org.springframework.data.config.ParsingUtils.*; +import org.jspecify.annotations.Nullable; import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionRegistry; @@ -28,7 +29,6 @@ import org.springframework.data.elasticsearch.core.event.AuditingEntityCallback; import org.springframework.data.elasticsearch.core.event.ReactiveAuditingEntityCallback; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; -import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; import org.w3c.dom.Element; diff --git a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java index 4a8d78b69..725382eaa 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java @@ -20,6 +20,7 @@ import java.util.HashSet; import java.util.Set; +import org.jspecify.annotations.Nullable; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; @@ -34,7 +35,6 @@ import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.mapping.model.FieldNamingStrategy; import org.springframework.data.mapping.model.PropertyNameFieldNamingStrategy; -import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/config/package-info.java b/src/main/java/org/springframework/data/elasticsearch/config/package-info.java index 6461b9824..351c2495d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/config/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/config/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.config; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java index d6074a4fa..6a0870375 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractElasticsearchTemplate.java @@ -24,6 +24,7 @@ import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -57,7 +58,6 @@ import org.springframework.data.mapping.callback.EntityCallbacks; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.util.Streamable; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java index a2449b2a7..a3b313e53 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/AbstractReactiveElasticsearchTemplate.java @@ -26,6 +26,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; import org.springframework.beans.BeansException; @@ -56,7 +57,6 @@ import org.springframework.data.elasticsearch.core.suggest.response.Suggest; import org.springframework.data.elasticsearch.support.VersionInfo; import org.springframework.data.mapping.callback.ReactiveEntityCallbacks; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/DocumentOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/DocumentOperations.java index d855b0a6a..b0ab53bc6 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/DocumentOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/DocumentOperations.java @@ -18,6 +18,7 @@ import java.util.Collection; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.BulkOptions; import org.springframework.data.elasticsearch.core.query.ByQueryResponse; @@ -28,7 +29,6 @@ import org.springframework.data.elasticsearch.core.query.UpdateResponse; import org.springframework.data.elasticsearch.core.reindex.ReindexRequest; import org.springframework.data.elasticsearch.core.reindex.ReindexResponse; -import org.springframework.lang.Nullable; /** * The operations for the diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java index 3bc75f2e4..954b123c7 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java @@ -15,13 +15,13 @@ */ package org.springframework.data.elasticsearch.core; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.cluster.ClusterOperations; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.routing.RoutingResolver; import org.springframework.data.elasticsearch.core.script.ScriptOperations; import org.springframework.data.elasticsearch.core.sql.SqlOperations; -import org.springframework.lang.Nullable; /** * ElasticsearchOperations. Since 4.0 this interface only contains common helper functions, the other methods have been diff --git a/src/main/java/org/springframework/data/elasticsearch/core/EntityOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/EntityOperations.java index 07a7e61d1..f1e3b64d4 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/EntityOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/EntityOperations.java @@ -17,6 +17,7 @@ import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.core.convert.ConversionService; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.join.JoinField; @@ -29,7 +30,6 @@ import org.springframework.data.mapping.PersistentPropertyAccessor; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.ConvertingPropertyAccessor; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -123,7 +123,7 @@ public T updateIndexedObject(T entity, // Only deal with text because ES generated Ids are strings! if (indexedObjectInformation.id() != null && idProperty != null - // isReadable from the base class is false in case of records + // isReadable from the base class is false in case of records && (idProperty.isReadable() || idProperty.getOwner().getType().isRecord()) && idProperty.getType().isAssignableFrom(String.class)) { propertyAccessor.setProperty(idProperty, indexedObjectInformation.id()); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/IndexInformation.java b/src/main/java/org/springframework/data/elasticsearch/core/IndexInformation.java index 11b03cadf..cff054315 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/IndexInformation.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/IndexInformation.java @@ -18,10 +18,10 @@ import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.index.AliasData; import org.springframework.data.elasticsearch.core.index.Settings; -import org.springframework.lang.Nullable; /** * Immutable object that holds information(name, settings, mappings, aliases) about an Index diff --git a/src/main/java/org/springframework/data/elasticsearch/core/IndexOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/IndexOperations.java index d7e583a4d..66bf1cf0b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/IndexOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/IndexOperations.java @@ -19,10 +19,10 @@ import java.util.Map; import java.util.Set; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.index.*; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.lang.Nullable; /** * The operations for the diff --git a/src/main/java/org/springframework/data/elasticsearch/core/IndexOperationsAdapter.java b/src/main/java/org/springframework/data/elasticsearch/core/IndexOperationsAdapter.java index b8c1d371a..a62ba0533 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/IndexOperationsAdapter.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/IndexOperationsAdapter.java @@ -22,10 +22,10 @@ import java.util.Objects; import java.util.Set; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.index.*; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/IndexedObjectInformation.java b/src/main/java/org/springframework/data/elasticsearch/core/IndexedObjectInformation.java index 6bd25bc88..91b259a7d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/IndexedObjectInformation.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/IndexedObjectInformation.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Value class capturing information about a newly indexed document in Elasticsearch. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/MultiGetItem.java b/src/main/java/org/springframework/data/elasticsearch/core/MultiGetItem.java index ad7795e66..a28f83fd4 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/MultiGetItem.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/MultiGetItem.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch.core; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.ElasticsearchErrorCause; -import org.springframework.lang.Nullable; /** * Response object for items returned from multiget requests, encapsulating the returned data and potential error diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchOperations.java index 1942fd659..91554fa0d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchOperations.java @@ -15,6 +15,7 @@ */ package org.springframework.data.elasticsearch.core; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.cluster.ReactiveClusterOperations; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; @@ -22,7 +23,6 @@ import org.springframework.data.elasticsearch.core.routing.RoutingResolver; import org.springframework.data.elasticsearch.core.script.ReactiveScriptOperations; import org.springframework.data.elasticsearch.core.sql.ReactiveSqlOperations; -import org.springframework.lang.Nullable; /** * Interface that specifies a basic set of Elasticsearch operations executed in a reactive way. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchHits.java b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchHits.java index c83ea8ea9..2d84a5457 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchHits.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchHits.java @@ -19,8 +19,8 @@ import java.time.Duration; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.suggest.response.Suggest; -import org.springframework.lang.Nullable; /** * Encapsulates a Flux of {@link SearchHit}s with additional information from the search. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchHitsImpl.java b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchHitsImpl.java index e932b38ae..604bd5959 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchHitsImpl.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ReactiveSearchHitsImpl.java @@ -19,8 +19,8 @@ import java.time.Duration; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.suggest.response.Suggest; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchHit.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchHit.java index 238d90b21..da59efdf5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchHit.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchHit.java @@ -23,9 +23,9 @@ import java.util.Map; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Explanation; import org.springframework.data.elasticsearch.core.document.NestedMetaData; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitMapping.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchHitMapping.java index d636715f6..bba964246 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitMapping.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchHitMapping.java @@ -23,6 +23,7 @@ import java.util.Map; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.UncategorizedElasticsearchException; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.document.Document; @@ -34,7 +35,6 @@ import org.springframework.data.elasticsearch.core.suggest.response.CompletionSuggestion; import org.springframework.data.elasticsearch.core.suggest.response.Suggest; import org.springframework.data.mapping.context.MappingContext; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitSupport.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchHitSupport.java index d4e8b0441..d9ed18aeb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitSupport.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchHitSupport.java @@ -21,11 +21,11 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.util.CloseableIterator; import org.springframework.data.util.ReactiveWrappers; -import org.springframework.lang.Nullable; /** * Utility class with helper methods for working with {@link SearchHit}. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchHits.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchHits.java index e41f4f521..47276a493 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchHits.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchHits.java @@ -19,9 +19,9 @@ import java.util.Iterator; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.suggest.response.Suggest; import org.springframework.data.util.Streamable; -import org.springframework.lang.Nullable; /** * Encapsulates a list of {@link SearchHit}s with additional information from the search. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsImpl.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsImpl.java index f3949787f..50a11a174 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsImpl.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsImpl.java @@ -19,9 +19,9 @@ import java.util.Collections; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.suggest.response.Suggest; import org.springframework.data.util.Lazy; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsIterator.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsIterator.java index cff034fa3..a24f547ad 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsIterator.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchHitsIterator.java @@ -17,8 +17,8 @@ import java.time.Duration; +import org.jspecify.annotations.Nullable; import org.springframework.data.util.CloseableIterator; -import org.springframework.lang.Nullable; /** * A {@link SearchHitsIterator} encapsulates {@link SearchHit} results that can be wrapped in a Java 8 diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchOperations.java index 934737dd5..d738f1fb5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchOperations.java @@ -18,11 +18,11 @@ import java.time.Duration; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder; import org.springframework.data.elasticsearch.core.query.MoreLikeThisQuery; import org.springframework.data.elasticsearch.core.query.Query; -import org.springframework.lang.Nullable; /** * The operations for the @@ -233,7 +233,8 @@ List> multiSearch(List queries, List> cl Query idsQuery(List ids); /** - * Creates a {@link BaseQueryBuilder} that has the given ids setto the parameter value. No other properties of the bulder are set. + * Creates a {@link BaseQueryBuilder} that has the given ids setto the parameter value. No other properties of the + * bulder are set. * * @param ids the list of ids must not be {@literal null} * @return query returning the documents with the given ids diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchScrollHits.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchScrollHits.java index 7a47e3e6c..291472bb0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchScrollHits.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchScrollHits.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * This interface is used to expose the current {@code scrollId} from the underlying scroll context. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchShardStatistics.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchShardStatistics.java index 293d2e7a0..c6ddef428 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchShardStatistics.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchShardStatistics.java @@ -17,8 +17,8 @@ import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.ElasticsearchErrorCause; -import org.springframework.lang.Nullable; /** * @author Haibo Liu diff --git a/src/main/java/org/springframework/data/elasticsearch/core/StreamQueries.java b/src/main/java/org/springframework/data/elasticsearch/core/StreamQueries.java index 62319e4b5..d96e643e5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/StreamQueries.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/StreamQueries.java @@ -23,8 +23,8 @@ import java.util.function.Consumer; import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.client.util.ScrollState; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/cluster/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/cluster/package-info.java index 6d49233c5..8532409aa 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/cluster/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/cluster/package-info.java @@ -1,6 +1,5 @@ /** * Interfaces and classes related to Elasticsearch cluster information and management. */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.cluster; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/convert/DefaultElasticsearchTypeMapper.java b/src/main/java/org/springframework/data/elasticsearch/core/convert/DefaultElasticsearchTypeMapper.java index 9fc8532e8..1303d5af7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/convert/DefaultElasticsearchTypeMapper.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/convert/DefaultElasticsearchTypeMapper.java @@ -19,6 +19,7 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.convert.DefaultTypeMapper; import org.springframework.data.convert.SimpleTypeInformationMapper; import org.springframework.data.convert.TypeAliasAccessor; @@ -27,7 +28,6 @@ import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.util.TypeInformation; -import org.springframework.lang.Nullable; /** * Elasticsearch specific {@link org.springframework.data.convert.TypeMapper} implementation. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/convert/ElasticsearchConverter.java b/src/main/java/org/springframework/data/elasticsearch/core/convert/ElasticsearchConverter.java index 8e1300547..a078bde2b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/convert/ElasticsearchConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/convert/ElasticsearchConverter.java @@ -15,6 +15,7 @@ */ package org.springframework.data.elasticsearch.core.convert; +import org.jspecify.annotations.Nullable; import org.springframework.data.convert.EntityConverter; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; @@ -23,7 +24,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.projection.SpelAwareProxyProjectionFactory; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/convert/ElasticsearchTypeMapper.java b/src/main/java/org/springframework/data/elasticsearch/core/convert/ElasticsearchTypeMapper.java index dc6a54f37..fa4f6e4e5 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/convert/ElasticsearchTypeMapper.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/convert/ElasticsearchTypeMapper.java @@ -17,11 +17,11 @@ import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.convert.TypeMapper; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty; import org.springframework.data.mapping.context.MappingContext; -import org.springframework.lang.Nullable; /** * Elasticsearch specific {@link TypeMapper} definition. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/convert/MappingConversionException.java b/src/main/java/org/springframework/data/elasticsearch/core/convert/MappingConversionException.java index 9b06cc3f6..e823105ad 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/convert/MappingConversionException.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/convert/MappingConversionException.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.convert; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * @since 5.3 diff --git a/src/main/java/org/springframework/data/elasticsearch/core/convert/MappingElasticsearchConverter.java b/src/main/java/org/springframework/data/elasticsearch/core/convert/MappingElasticsearchConverter.java index 441a95c53..3b757e18d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/convert/MappingElasticsearchConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/convert/MappingElasticsearchConverter.java @@ -24,6 +24,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import org.springframework.beans.BeansException; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationContext; @@ -65,7 +66,6 @@ import org.springframework.data.util.TypeInformation; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.format.datetime.DateFormatterRegistrar; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.CollectionUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/convert/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/convert/package-info.java index 5ce581e58..88db6c0aa 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/convert/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/convert/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.convert; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/Document.java b/src/main/java/org/springframework/data/elasticsearch/core/document/Document.java index 8c9917c60..db17704d0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/Document.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/Document.java @@ -20,9 +20,9 @@ import java.util.Map; import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.convert.ConversionException; import org.springframework.data.elasticsearch.support.StringObjectMap; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/Explanation.java b/src/main/java/org/springframework/data/elasticsearch/core/document/Explanation.java index 48135b226..5e62be4c9 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/Explanation.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/Explanation.java @@ -18,7 +18,7 @@ import java.util.List; import java.util.Objects; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/MapDocument.java b/src/main/java/org/springframework/data/elasticsearch/core/document/MapDocument.java index 669313195..3b435e39b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/MapDocument.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/MapDocument.java @@ -21,10 +21,9 @@ import java.util.Set; import java.util.function.BiConsumer; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.support.DefaultStringObjectMap; -import org.springframework.data.elasticsearch.support.StringObjectMap; import org.springframework.data.mapping.MappingException; -import org.springframework.lang.Nullable; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/NestedMetaData.java b/src/main/java/org/springframework/data/elasticsearch/core/document/NestedMetaData.java index 3294e7a6f..727e9a6a4 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/NestedMetaData.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/NestedMetaData.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.document; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * meta data returned for nested inner hits. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocument.java b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocument.java index 2fb158f29..63192272e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocument.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocument.java @@ -18,7 +18,7 @@ import java.util.List; import java.util.Map; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Extension to {@link Document} exposing search response related data. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentAdapter.java b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentAdapter.java index e2549aada..de424c719 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentAdapter.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentAdapter.java @@ -22,7 +22,7 @@ import java.util.Set; import java.util.function.BiConsumer; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * {@link SearchDocument} implementation using a {@link Document} delegate. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentResponse.java b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentResponse.java index 8430aad56..a4256f330 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentResponse.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentResponse.java @@ -20,10 +20,10 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.AggregationsContainer; import org.springframework.data.elasticsearch.core.SearchShardStatistics; import org.springframework.data.elasticsearch.core.suggest.response.Suggest; -import org.springframework.lang.Nullable; /** * This represents the complete search response from Elasticsearch, including the returned documents. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/document/package-info.java index 03bee729b..514f80ad1 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/package-info.java @@ -1,6 +1,5 @@ /** * Classes related to the Document structure of Elasticsearch documents and search responses. */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.document; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/event/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/event/package-info.java index a48d01eb0..f596552bf 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/event/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/event/package-info.java @@ -1,6 +1,5 @@ /** * classes and interfaces related to Spring Data Elasticsearch events and callbacks. */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.event; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/geo/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/geo/package-info.java index bb92b2929..b3dc72af0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/geo/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/geo/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.geo; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/AliasActionParameters.java b/src/main/java/org/springframework/data/elasticsearch/core/index/AliasActionParameters.java index 1b71a8aa0..254b1b8eb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/AliasActionParameters.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/AliasActionParameters.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch.core.index; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.query.Query; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/AliasActions.java b/src/main/java/org/springframework/data/elasticsearch/core/index/AliasActions.java index 44c3869c5..cc18d6aba 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/AliasActions.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/AliasActions.java @@ -20,7 +20,7 @@ import java.util.Collections; import java.util.List; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Class to define to actions to execute in alias management functions. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/AliasData.java b/src/main/java/org/springframework/data/elasticsearch/core/index/AliasData.java index 615de488c..0625c6894 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/AliasData.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/AliasData.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch.core.index; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.query.Query; -import org.springframework.lang.Nullable; /** * value object to describe alias information. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/ComponentTemplateRequestData.java b/src/main/java/org/springframework/data/elasticsearch/core/index/ComponentTemplateRequestData.java index b67d41114..169847080 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/ComponentTemplateRequestData.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/ComponentTemplateRequestData.java @@ -17,8 +17,8 @@ import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/GeoShapeMappingParameters.java b/src/main/java/org/springframework/data/elasticsearch/core/index/GeoShapeMappingParameters.java index e34da7b70..0abcebc83 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/GeoShapeMappingParameters.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/GeoShapeMappingParameters.java @@ -17,8 +17,8 @@ import java.io.IOException; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.GeoShapeField; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import com.fasterxml.jackson.databind.node.ObjectNode; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java index 6d839dfe4..a01c9526f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingBuilder.java @@ -29,6 +29,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.core.io.ClassPathResource; import org.springframework.data.annotation.Transient; import org.springframework.data.elasticsearch.annotations.*; @@ -42,7 +43,6 @@ import org.springframework.data.mapping.MappingException; import org.springframework.data.mapping.PropertyHandler; import org.springframework.data.util.TypeInformation; -import org.springframework.lang.Nullable; import org.springframework.util.StreamUtils; import org.springframework.util.StringUtils; @@ -130,14 +130,13 @@ public String buildPropertyMapping(Class clazz) throws MappingException { } protected String buildPropertyMapping(ElasticsearchPersistentEntity entity, - @Nullable org.springframework.data.elasticsearch.core.document.Document runtimeFields) { + org.springframework.data.elasticsearch.core.document.@Nullable Document runtimeFields) { InternalBuilder internalBuilder = new InternalBuilder(); return internalBuilder.buildPropertyMapping(entity, runtimeFields); } - @Nullable - private org.springframework.data.elasticsearch.core.document.Document getRuntimeFields( + private org.springframework.data.elasticsearch.core.document.@Nullable Document getRuntimeFields( @Nullable ElasticsearchPersistentEntity entity) { if (entity != null) { @@ -161,7 +160,7 @@ private class InternalBuilder { private String nestedPropertyPrefix = ""; protected String buildPropertyMapping(ElasticsearchPersistentEntity entity, - @Nullable org.springframework.data.elasticsearch.core.document.Document runtimeFields) { + org.springframework.data.elasticsearch.core.document.@Nullable Document runtimeFields) { try { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java index eeab36b2e..b4eab12af 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/MappingParameters.java @@ -23,8 +23,8 @@ import java.util.List; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.*; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/PutComponentTemplateRequest.java b/src/main/java/org/springframework/data/elasticsearch/core/index/PutComponentTemplateRequest.java index 1576823b0..9463964ce 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/PutComponentTemplateRequest.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/PutComponentTemplateRequest.java @@ -17,7 +17,7 @@ import java.time.Duration; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** @@ -26,6 +26,7 @@ */ public record PutComponentTemplateRequest(String name, @Nullable Long version, @Nullable Boolean create, @Nullable Duration masterTimeout, ComponentTemplateRequestData template) { + public PutComponentTemplateRequest { Assert.notNull(name, "name must not be null"); Assert.notNull(template, "template must not be null"); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/PutIndexTemplateRequest.java b/src/main/java/org/springframework/data/elasticsearch/core/index/PutIndexTemplateRequest.java index 1df627d35..0ef348f0e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/PutIndexTemplateRequest.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/PutIndexTemplateRequest.java @@ -17,8 +17,8 @@ import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/PutTemplateRequest.java b/src/main/java/org/springframework/data/elasticsearch/core/index/PutTemplateRequest.java index c18f5166c..20befc1e0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/PutTemplateRequest.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/PutTemplateRequest.java @@ -15,12 +15,12 @@ */ package org.springframework.data.elasticsearch.core.index; +import java.util.Map; + +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import java.util.Map; - /** * Request to create an index template. This is to create legacy templates (@see * https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates-v1.html) diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/ReactiveMappingBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/index/ReactiveMappingBuilder.java index 21bc2a170..87fc7a5c3 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/ReactiveMappingBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/ReactiveMappingBuilder.java @@ -19,13 +19,13 @@ import reactor.core.publisher.Mono; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.Mapping; import org.springframework.data.elasticsearch.core.ReactiveResourceUtil; import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter; import org.springframework.data.elasticsearch.core.document.Document; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.mapping.MappingException; -import org.springframework.lang.Nullable; /** * Subclass of {@link MappingBuilder} with specialized methods To inhibit blocking calls diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateData.java b/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateData.java index 365a9118a..642d8dbbf 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateData.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateData.java @@ -17,8 +17,8 @@ import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; -import org.springframework.lang.Nullable; /** * Data returned for template information retrieval. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateResponse.java b/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateResponse.java index 10f9f0dfb..9a3811804 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateResponse.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateResponse.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.index; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** @@ -23,6 +23,7 @@ * @since 5.1 */ public record TemplateResponse(String name, @Nullable Long version, @Nullable TemplateResponseData templateData) { + public TemplateResponse { Assert.notNull(name, "name must not be null"); } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateResponseData.java b/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateResponseData.java index 7f6649e0e..ff1fc475c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateResponseData.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/TemplateResponseData.java @@ -18,8 +18,8 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/index/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/index/package-info.java index 464fa781c..8317bc819 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/index/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/index/package-info.java @@ -1,6 +1,5 @@ /** * Classes related to Elasticsearch index management. */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.index; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/join/JoinField.java b/src/main/java/org/springframework/data/elasticsearch/core/join/JoinField.java index c6d589133..0cc4a44dc 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/join/JoinField.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/join/JoinField.java @@ -17,8 +17,8 @@ import java.util.Objects; +import org.jspecify.annotations.Nullable; import org.springframework.data.annotation.PersistenceCreator; -import org.springframework.lang.Nullable; /** * @author Subhobrata Dey diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/Alias.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/Alias.java index 69905d964..7dc4d0125 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/Alias.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/Alias.java @@ -17,8 +17,8 @@ import java.util.Objects; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.query.Query; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/CreateIndexSettings.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/CreateIndexSettings.java index 92cb90d53..cf5a24c63 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/CreateIndexSettings.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/CreateIndexSettings.java @@ -19,8 +19,8 @@ import java.util.Map; import java.util.Set; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/ElasticsearchPersistentEntity.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/ElasticsearchPersistentEntity.java index 3fd5579fe..1cd45332b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/ElasticsearchPersistentEntity.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/ElasticsearchPersistentEntity.java @@ -17,6 +17,7 @@ import java.util.Set; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Dynamic; import org.springframework.data.elasticsearch.annotations.Field; @@ -25,7 +26,6 @@ import org.springframework.data.elasticsearch.core.query.SeqNoPrimaryTerm; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.model.FieldNamingStrategy; -import org.springframework.lang.Nullable; /** * ElasticsearchPersistentEntity @@ -70,8 +70,7 @@ public interface ElasticsearchPersistentEntity extends PersistentEntity extends BasicPersistentEntit private @Nullable ElasticsearchPersistentProperty seqNoPrimaryTermProperty; private @Nullable ElasticsearchPersistentProperty joinFieldProperty; private @Nullable ElasticsearchPersistentProperty indexedIndexNameProperty; - private @Nullable Document.VersionType versionType; + private Document.@Nullable VersionType versionType; private final boolean createIndexAndMapping; private final boolean alwaysWriteMapping; private final Dynamic dynamic; @@ -176,9 +176,8 @@ public String getRefreshInterval() { return settingsParameter.get().refreshIntervall; } - @Nullable @Override - public Document.VersionType getVersionType() { + public Document.@Nullable VersionType getVersionType() { return versionType; } @@ -554,9 +553,9 @@ private static class SettingsParameter { @Nullable String refreshIntervall; @Nullable String indexStoreType; @Nullable private String[] sortFields; - @Nullable private Setting.SortOrder[] sortOrders; - @Nullable private Setting.SortMode[] sortModes; - @Nullable private Setting.SortMissing[] sortMissingValues; + private Setting.@Nullable SortOrder[] sortOrders; + private Setting.@Nullable SortMode[] sortModes; + private Setting.@Nullable SortMissing[] sortMissingValues; Settings toSettings() { diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentProperty.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentProperty.java index b7c7835ad..85a1040dc 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentProperty.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentProperty.java @@ -24,6 +24,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.springframework.beans.BeanUtils; import org.springframework.data.annotation.ReadOnlyProperty; import org.springframework.data.domain.Range; @@ -58,7 +59,6 @@ import org.springframework.data.mapping.model.PropertyNameFieldNamingStrategy; import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.util.TypeInformation; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/package-info.java index 3c44ffb2c..d9e576366 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.mapping; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/package-info.java index 9c29d17f6..bc7d9b994 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQuery.java index a174511c4..1cb0190b0 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQuery.java @@ -27,9 +27,9 @@ import java.util.Optional; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQueryBuilder.java index b9c9acc62..540cfc6fa 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/BaseQueryBuilder.java @@ -23,9 +23,9 @@ import java.util.EnumSet; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -45,7 +45,7 @@ public abstract class BaseQueryBuilder ids = new ArrayList<>(); @Nullable private String route; - @Nullable private Query.SearchType searchType = Query.SearchType.QUERY_THEN_FETCH; + private Query.@Nullable SearchType searchType = Query.SearchType.QUERY_THEN_FETCH; @Nullable private IndicesOptions indicesOptions; private boolean trackScores; @Nullable private String preference; @@ -64,7 +64,7 @@ public abstract class BaseQueryBuilder idsWithRouting = new ArrayList<>(); private final List runtimeFields = new ArrayList<>(); - @Nullable private Query.PointInTime pointInTime; + private Query.@Nullable PointInTime pointInTime; @Nullable private Boolean allowNoIndices; private EnumSet expandWildcards = EnumSet.noneOf(IndicesOptions.WildcardStates.class); @@ -139,8 +139,7 @@ public List getIndicesBoost() { return indicesBoost; } - @Nullable - public Query.SearchType getSearchType() { + public Query.@Nullable SearchType getSearchType() { return searchType; } @@ -193,8 +192,8 @@ public List getRescorerQueries() { /** * @since 5.0 */ - @Nullable - public Query.PointInTime getPointInTime() { + + public Query.@Nullable PointInTime getPointInTime() { return pointInTime; } @@ -342,7 +341,7 @@ public SELF withIndicesBoost(IndexBoost... indicesBoost) { return self(); } - public SELF withSearchType(@Nullable Query.SearchType searchType) { + public SELF withSearchType(Query.@Nullable SearchType searchType) { this.searchType = searchType; return self(); } @@ -426,7 +425,7 @@ public SELF withRescorerQuery(RescorerQuery rescorerQuery) { /** * @since 5.0 */ - public SELF withPointInTime(@Nullable Query.PointInTime pointInTime) { + public SELF withPointInTime(Query.@Nullable PointInTime pointInTime) { this.pointInTime = pointInTime; return self(); } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/BulkOptions.java b/src/main/java/org/springframework/data/elasticsearch/core/query/BulkOptions.java index 3c9ca4bc3..4e28b9d69 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/BulkOptions.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/BulkOptions.java @@ -18,10 +18,10 @@ import java.time.Duration; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.ActiveShardCount; import org.springframework.data.elasticsearch.core.RefreshPolicy; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.lang.Nullable; /** * Options that may be passed to an diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/ByQueryResponse.java b/src/main/java/org/springframework/data/elasticsearch/core/query/ByQueryResponse.java index 2f0236c85..334132ab9 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/ByQueryResponse.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/ByQueryResponse.java @@ -18,8 +18,8 @@ import java.util.Collections; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.ElasticsearchErrorCause; -import org.springframework.lang.Nullable; /** * Response of an update by query operation. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/Criteria.java b/src/main/java/org/springframework/data/elasticsearch/core/query/Criteria.java index d398d7ee1..00a55116c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/Criteria.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/Criteria.java @@ -24,6 +24,7 @@ import java.util.Set; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.elasticsearch.core.geo.GeoBox; import org.springframework.data.elasticsearch.core.geo.GeoJson; @@ -31,7 +32,6 @@ import org.springframework.data.geo.Box; import org.springframework.data.geo.Distance; import org.springframework.data.geo.Point; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java index d96fed8c7..40f75e60b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/DeleteQuery.java @@ -19,11 +19,11 @@ import java.util.EnumSet; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.core.query.Query.SearchType; import org.springframework.data.elasticsearch.core.query.types.ConflictsType; import org.springframework.data.elasticsearch.core.query.types.OperatorType; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/DocValueField.java b/src/main/java/org/springframework/data/elasticsearch/core/query/DocValueField.java index 4ac86722f..d35af8b28 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/DocValueField.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/DocValueField.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.query; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/FetchSourceFilter.java b/src/main/java/org/springframework/data/elasticsearch/core/query/FetchSourceFilter.java index ed3be0727..e6ffa17ed 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/FetchSourceFilter.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/FetchSourceFilter.java @@ -17,7 +17,7 @@ import java.util.function.Function; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/FetchSourceFilterBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/FetchSourceFilterBuilder.java index 689736511..cccb2a72b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/FetchSourceFilterBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/FetchSourceFilterBuilder.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.query; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * SourceFilter builder for providing includes and excludes. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/Field.java b/src/main/java/org/springframework/data/elasticsearch/core/query/Field.java index 77c8ea45c..cbfc5ea4f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/Field.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/Field.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch.core.query; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.FieldType; -import org.springframework.lang.Nullable; /** * Defines a Field that can be used within a Criteria. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/HasChildQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/HasChildQuery.java index 5fe4d5a12..17ce512c4 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/HasChildQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/HasChildQuery.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.query; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/HasParentQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/HasParentQuery.java index 0d8f9fb73..7e182c7e8 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/HasParentQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/HasParentQuery.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.query; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/HighlightQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/HighlightQuery.java index 370afcd2c..5e8e2a5a7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/HighlightQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/HighlightQuery.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch.core.query; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.query.highlight.Highlight; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQuery.java index 38e358bca..cad53334a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQuery.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.query; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * IndexQuery diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQueryBuilder.java index 8cc67b286..6e4528043 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/IndexQueryBuilder.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch.core.query; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.RefreshPolicy; -import org.springframework.lang.Nullable; /** * IndexQuery Builder @@ -36,7 +36,7 @@ public class IndexQueryBuilder { @Nullable private Long seqNo; @Nullable private Long primaryTerm; @Nullable private String routing; - @Nullable private IndexQuery.OpType opType; + private IndexQuery.@Nullable OpType opType; @Nullable private RefreshPolicy refreshPolicy; @Nullable private String indexName; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/InnerHitsQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/InnerHitsQuery.java index d4a92954d..5097e7217 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/InnerHitsQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/InnerHitsQuery.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.query; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Defines an inner_hits request. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java index 57ce6ea34..421e25940 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/MoreLikeThisQuery.java @@ -21,8 +21,8 @@ import java.util.ArrayList; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Pageable; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/Order.java b/src/main/java/org/springframework/data/elasticsearch/core/query/Order.java index a3eaad247..70044d2ed 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/Order.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/Order.java @@ -17,8 +17,8 @@ import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Sort; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java index 2a0dd17b7..ce3d445e1 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java @@ -22,11 +22,11 @@ import java.util.List; import java.util.Optional; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.core.SearchHit; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/RescorerQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/RescorerQuery.java index c35725d1e..96ce4a9f1 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/RescorerQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/RescorerQuery.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.query; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/RuntimeField.java b/src/main/java/org/springframework/data/elasticsearch/core/query/RuntimeField.java index 805883a5f..2f7afcdb6 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/RuntimeField.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/RuntimeField.java @@ -18,7 +18,7 @@ import java.util.HashMap; import java.util.Map; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java b/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java index 0bcb6ad20..1a81988cd 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java @@ -18,7 +18,7 @@ import java.util.Map; import java.util.function.Function; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/SearchTemplateQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/SearchTemplateQuery.java index 4b4999fb0..804582c7b 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/SearchTemplateQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/SearchTemplateQuery.java @@ -17,7 +17,7 @@ import java.util.Map; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/SearchTemplateQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/core/query/SearchTemplateQueryBuilder.java index a0b61e27e..225933a67 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/SearchTemplateQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/SearchTemplateQueryBuilder.java @@ -17,9 +17,9 @@ import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/SimpleField.java b/src/main/java/org/springframework/data/elasticsearch/core/query/SimpleField.java index e94374365..298954cfa 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/SimpleField.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/SimpleField.java @@ -15,12 +15,12 @@ */ package org.springframework.data.elasticsearch.core.query; +import java.util.Objects; + +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.FieldType; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import java.util.Objects; - /** * The most trivial implementation of a Field. The {@link #name} is updatable, so it may be changed during query * preparation by the {@link org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter}. @@ -84,9 +84,12 @@ public String toString() { @Override public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof SimpleField that)) return false; - return Objects.equals(name, that.name) && Objects.equals(fieldType, that.fieldType) && Objects.equals(path, that.path); + if (this == o) + return true; + if (!(o instanceof SimpleField that)) + return false; + return Objects.equals(name, that.name) && Objects.equals(fieldType, that.fieldType) + && Objects.equals(path, that.path); } @Override diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/SourceFilter.java b/src/main/java/org/springframework/data/elasticsearch/core/query/SourceFilter.java index 150cffb77..669661596 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/SourceFilter.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/SourceFilter.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch.core.query; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.lang.Nullable; /** * SourceFilter for providing includes and excludes. Using these helps in reducing the amount of data that is returned diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/SqlQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/SqlQuery.java index f14f1738e..332ba6962 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/SqlQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/SqlQuery.java @@ -20,7 +20,7 @@ import java.util.List; import java.util.TimeZone; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java index 90f759749..087f0c105 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java @@ -18,9 +18,9 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.RefreshPolicy; import org.springframework.data.elasticsearch.core.document.Document; -import org.springframework.lang.Nullable; /** * Defines an update request. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/highlight/HighlightCommonParameters.java b/src/main/java/org/springframework/data/elasticsearch/core/query/highlight/HighlightCommonParameters.java index b8ae62201..d3b917adf 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/highlight/HighlightCommonParameters.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/highlight/HighlightCommonParameters.java @@ -15,8 +15,8 @@ */ package org.springframework.data.elasticsearch.core.query.highlight; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.query.Query; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/highlight/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/query/highlight/package-info.java index b9a2dac3f..ddf7fd0e6 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/highlight/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/highlight/package-info.java @@ -17,6 +17,5 @@ /** * classes to define highlight settings parameters of a query */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.query.highlight; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/query/package-info.java index 50b90a0ff..b75075744 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.query; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/types/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/query/types/package-info.java index a75996934..ecade8f8d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/types/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/types/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.query.types; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/reindex/ReindexRequest.java b/src/main/java/org/springframework/data/elasticsearch/core/reindex/ReindexRequest.java index bf32e67ec..f7e83ce4d 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/reindex/ReindexRequest.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/reindex/ReindexRequest.java @@ -17,12 +17,12 @@ import java.time.Duration; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.IndexQuery; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.SourceFilter; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -216,8 +216,8 @@ public static class Dest { private final IndexCoordinates index; @Nullable private String pipeline; @Nullable private String routing; - @Nullable private Document.VersionType versionType; - @Nullable private IndexQuery.OpType opType; + private Document.@Nullable VersionType versionType; + private IndexQuery.@Nullable OpType opType; private Dest(IndexCoordinates index) { Assert.notNull(index, "dest index must not be null"); @@ -229,13 +229,11 @@ public IndexCoordinates getIndex() { return index; } - @Nullable - public Document.VersionType getVersionType() { + public Document.@Nullable VersionType getVersionType() { return versionType; } - @Nullable - public IndexQuery.OpType getOpType() { + public IndexQuery.@Nullable OpType getOpType() { return opType; } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/reindex/ReindexResponse.java b/src/main/java/org/springframework/data/elasticsearch/core/reindex/ReindexResponse.java index 345a109f7..c65873041 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/reindex/ReindexResponse.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/reindex/ReindexResponse.java @@ -18,8 +18,8 @@ import java.util.Collections; import java.util.List; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.ElasticsearchErrorCause; -import org.springframework.lang.Nullable; /** * Response of reindex request. (@see diff --git a/src/main/java/org/springframework/data/elasticsearch/core/reindex/Remote.java b/src/main/java/org/springframework/data/elasticsearch/core/reindex/Remote.java index 6454b67f2..f0f9a4a65 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/reindex/Remote.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/reindex/Remote.java @@ -17,7 +17,7 @@ import java.time.Duration; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/reindex/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/reindex/package-info.java index 2dfc0a174..aceb0f5bb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/reindex/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/reindex/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.reindex; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/routing/DefaultRoutingResolver.java b/src/main/java/org/springframework/data/elasticsearch/core/routing/DefaultRoutingResolver.java index 1d84d00ab..799b5b963 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/routing/DefaultRoutingResolver.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/routing/DefaultRoutingResolver.java @@ -15,10 +15,10 @@ */ package org.springframework.data.elasticsearch.core.routing; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty; import org.springframework.data.mapping.context.MappingContext; -import org.springframework.lang.Nullable; /** * Default implementation of the {@link RoutingResolver} interface. Returns {@literal null} for the non-bean method and diff --git a/src/main/java/org/springframework/data/elasticsearch/core/routing/RoutingResolver.java b/src/main/java/org/springframework/data/elasticsearch/core/routing/RoutingResolver.java index 3e743afc6..fd0a4cac2 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/routing/RoutingResolver.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/routing/RoutingResolver.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.routing; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/core/routing/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/routing/package-info.java index fee0db988..f32bab092 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/routing/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/routing/package-info.java @@ -1,6 +1,5 @@ /** * classes/interfaces for specification and implementation of Elasticsearch routing. */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.routing; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/script/Script.java b/src/main/java/org/springframework/data/elasticsearch/core/script/Script.java index b4c3d0372..8c4d507bb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/script/Script.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/script/Script.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.script; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; /** @@ -23,6 +23,7 @@ * @since 5.1 */ public record Script(String id, String language, String source) { + public Script { Assert.notNull(id, "id must not be null"); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/script/ScriptOperations.java b/src/main/java/org/springframework/data/elasticsearch/core/script/ScriptOperations.java index 8593293dc..e62ab034e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/script/ScriptOperations.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/script/ScriptOperations.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.script; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * This interfaces defines the operations to access the diff --git a/src/main/java/org/springframework/data/elasticsearch/core/script/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/script/package-info.java index 42c6e36c1..b16531f37 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/script/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/script/package-info.java @@ -1,6 +1,6 @@ /** - * Classes and interfaces to access to script API of Elasticsearch (https://www.elastic.co/guide/en/elasticsearch/reference/8.5/script-apis.html). + * Classes and interfaces to access to script API of Elasticsearch + * (https://www.elastic.co/guide/en/elasticsearch/reference/8.5/script-apis.html). */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.script; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/sql/SqlResponse.java b/src/main/java/org/springframework/data/elasticsearch/core/sql/SqlResponse.java index 0ddc78abc..74db4c728 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/sql/SqlResponse.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/sql/SqlResponse.java @@ -25,8 +25,8 @@ import java.util.List; import java.util.Map; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; /** * Defines an SQL response. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/sql/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/sql/package-info.java index 306bceade..b1af98166 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/sql/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/sql/package-info.java @@ -1,6 +1,5 @@ /** * Classes and interfaces to access to SQL API of Elasticsearch. */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.sql; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/suggest/Completion.java b/src/main/java/org/springframework/data/elasticsearch/core/suggest/Completion.java index 88be836b3..32e99b3bb 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/suggest/Completion.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/suggest/Completion.java @@ -18,7 +18,7 @@ import java.util.List; import java.util.Map; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Based on the reference doc - diff --git a/src/main/java/org/springframework/data/elasticsearch/core/suggest/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/suggest/package-info.java index 47463fc6a..622c4bd0e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/suggest/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/suggest/package-info.java @@ -13,6 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.suggest; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/CompletionSuggestion.java b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/CompletionSuggestion.java index 94d93c80d..b6aa8fa9c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/CompletionSuggestion.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/CompletionSuggestion.java @@ -20,10 +20,10 @@ import java.util.Set; import java.util.function.BiFunction; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.SearchHit; import org.springframework.data.elasticsearch.core.document.SearchDocument; import org.springframework.data.elasticsearch.support.ScoreDoc; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/PhraseSuggestion.java b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/PhraseSuggestion.java index ad50678d9..a96a9a463 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/PhraseSuggestion.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/PhraseSuggestion.java @@ -15,10 +15,10 @@ */ package org.springframework.data.elasticsearch.core.suggest.response; -import org.springframework.lang.Nullable; - import java.util.List; +import org.jspecify.annotations.Nullable; + /** * @author Peter-Josef Meisch * @since 4.3 diff --git a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/Suggest.java b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/Suggest.java index 862d0ed44..958e1bb8c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/Suggest.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/Suggest.java @@ -19,7 +19,7 @@ import java.util.List; import java.util.Map; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * Class structure mirroring the Elasticsearch classes for a suggest response. diff --git a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/TermSuggestion.java b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/TermSuggestion.java index 2e42bc00b..4e6183a39 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/TermSuggestion.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/TermSuggestion.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.core.suggest.response; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; diff --git a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/package-info.java b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/package-info.java index 5d02fba12..7507d78a2 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/suggest/response/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.suggest.response; diff --git a/src/main/java/org/springframework/data/elasticsearch/package-info.java b/src/main/java/org/springframework/data/elasticsearch/package-info.java index c90fb3237..69b12af1f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java index 44331d72e..781d7c3a3 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java @@ -15,13 +15,13 @@ */ package org.springframework.data.elasticsearch.repository; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.core.RefreshPolicy; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.PagingAndSortingRepository; -import org.springframework.lang.Nullable; /** * @param diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/ReactiveElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/ReactiveElasticsearchRepository.java index 59ee81f30..9ab2a3108 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/ReactiveElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/ReactiveElasticsearchRepository.java @@ -18,12 +18,12 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; import org.springframework.data.elasticsearch.core.RefreshPolicy; import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.reactive.ReactiveCrudRepository; import org.springframework.data.repository.reactive.ReactiveSortingRepository; -import org.springframework.lang.Nullable; /** * Elasticsearch specific {@link org.springframework.data.repository.Repository} interface with reactive support. diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/aot/RepositoryRuntimeHints.java b/src/main/java/org/springframework/data/elasticsearch/repository/aot/RepositoryRuntimeHints.java index b86a7137c..719905721 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/aot/RepositoryRuntimeHints.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/aot/RepositoryRuntimeHints.java @@ -19,11 +19,11 @@ import java.util.Arrays; +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.aot.hint.TypeReference; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/aot/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/aot/package-info.java index 1a7c898aa..270425b63 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/aot/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/aot/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.aot; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/cdi/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/cdi/package-info.java index f11afc98b..b307ca973 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/cdi/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/cdi/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.cdi; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/config/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/config/package-info.java index 9f8e26676..2278b3f14 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/config/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/config/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.config; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/package-info.java index 9d9e57ab2..14c68bac4 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/package-info.java @@ -1,5 +1,5 @@ /** * infrastructure to define the Elasticsearch mapping for an index. */ -@org.springframework.lang.NonNullApi +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractElasticsearchRepositoryQuery.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractElasticsearchRepositoryQuery.java index aa4f84e08..fae3b1992 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractElasticsearchRepositoryQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractElasticsearchRepositoryQuery.java @@ -15,6 +15,7 @@ */ package org.springframework.data.elasticsearch.repository.query; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.PageRequest; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.SearchHitSupport; @@ -31,7 +32,6 @@ import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.ResultProcessor; import org.springframework.data.util.StreamUtils; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractReactiveElasticsearchRepositoryQuery.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractReactiveElasticsearchRepositoryQuery.java index 7b149141e..1d7252286 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractReactiveElasticsearchRepositoryQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/AbstractReactiveElasticsearchRepositoryQuery.java @@ -15,7 +15,6 @@ */ package org.springframework.data.elasticsearch.repository.query; -import org.springframework.data.expression.ValueEvaluationContextProvider; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -33,6 +32,7 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.repository.query.ReactiveElasticsearchQueryExecution.ResultProcessingConverter; import org.springframework.data.elasticsearch.repository.query.ReactiveElasticsearchQueryExecution.ResultProcessingExecution; +import org.springframework.data.expression.ValueEvaluationContextProvider; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.repository.query.ParameterAccessor; import org.springframework.data.repository.query.QueryMethod; @@ -56,7 +56,7 @@ abstract class AbstractReactiveElasticsearchRepositoryQuery implements Repositor AbstractReactiveElasticsearchRepositoryQuery(ReactiveElasticsearchQueryMethod queryMethod, ReactiveElasticsearchOperations elasticsearchOperations, - ValueEvaluationContextProvider evaluationContextProvider) { + ValueEvaluationContextProvider evaluationContextProvider) { Assert.notNull(queryMethod, "queryMethod must not be null"); Assert.notNull(elasticsearchOperations, "elasticsearchOperations must not be null"); @@ -105,7 +105,8 @@ private Object execute(ElasticsearchParametersParameterAccessor parameterAccesso var query = createQuery(parameterAccessor); Assert.notNull(query, "unsupported query"); - queryMethod.addSpecialMethodParameters(query, parameterAccessor, elasticsearchOperations.getElasticsearchConverter(), + queryMethod.addSpecialMethodParameters(query, parameterAccessor, + elasticsearchOperations.getElasticsearchConverter(), evaluationContextProvider); String indexName = queryMethod.getEntityInformation().getIndexName(); diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java index e6d995846..2ff4bc236 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethod.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.stream.Stream; +import org.jspecify.annotations.Nullable; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.convert.ConversionService; import org.springframework.dao.InvalidDataAccessApiUsageException; @@ -54,7 +55,6 @@ import org.springframework.data.repository.util.QueryExecutionConverters; import org.springframework.data.repository.util.ReactiveWrapperConverters; import org.springframework.data.util.TypeInformation; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -399,8 +399,8 @@ private Class potentiallyUnwrapReturnTypeFor(RepositoryMetadata metadata, Met } void addSpecialMethodParameters(BaseQuery query, ElasticsearchParametersParameterAccessor parameterAccessor, - ElasticsearchConverter elasticsearchConverter, - ValueEvaluationContextProvider evaluationContextProvider) { + ElasticsearchConverter elasticsearchConverter, + ValueEvaluationContextProvider evaluationContextProvider) { if (hasAnnotatedHighlight()) { var highlightQuery = getAnnotatedHighlightQuery(new HighlightConverter(parameterAccessor, diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/ReactiveElasticsearchQueryExecution.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/ReactiveElasticsearchQueryExecution.java index d66a0087e..c166e7edd 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/ReactiveElasticsearchQueryExecution.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/ReactiveElasticsearchQueryExecution.java @@ -15,12 +15,12 @@ */ package org.springframework.data.elasticsearch.repository.query; +import org.jspecify.annotations.Nullable; import org.springframework.core.convert.converter.Converter; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.repository.query.ResultProcessor; import org.springframework.data.repository.query.ReturnedType; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/package-info.java index 0db3509f2..e903d1ffe 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.query; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/parser/ElasticsearchQueryCreator.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/parser/ElasticsearchQueryCreator.java index e681d018d..5c1456796 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/parser/ElasticsearchQueryCreator.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/parser/ElasticsearchQueryCreator.java @@ -15,6 +15,10 @@ */ package org.springframework.data.elasticsearch.repository.query.parser; +import java.util.Collection; +import java.util.Iterator; + +import org.jspecify.annotations.Nullable; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.domain.Sort; import org.springframework.data.elasticsearch.core.geo.GeoBox; @@ -31,10 +35,6 @@ import org.springframework.data.repository.query.parser.AbstractQueryCreator; import org.springframework.data.repository.query.parser.Part; import org.springframework.data.repository.query.parser.PartTree; -import org.springframework.lang.Nullable; - -import java.util.Collection; -import java.util.Iterator; /** * ElasticsearchQueryCreator @@ -48,159 +48,159 @@ */ public class ElasticsearchQueryCreator extends AbstractQueryCreator { - private final MappingContext context; - - public ElasticsearchQueryCreator(PartTree tree, ParameterAccessor parameters, - MappingContext context) { - super(tree, parameters); - this.context = context; - } - - public ElasticsearchQueryCreator(PartTree tree, MappingContext context) { - super(tree); - this.context = context; - } - - @Override - protected CriteriaQuery create(Part part, Iterator iterator) { - PersistentPropertyPath path = context.getPersistentPropertyPath( - part.getProperty()); - return new CriteriaQuery(from(part, - new Criteria(path.toDotPath(ElasticsearchPersistentProperty.QueryPropertyToFieldNameConverter.INSTANCE)), - iterator)); - } - - @Override - protected CriteriaQuery and(Part part, CriteriaQuery base, Iterator iterator) { - if (base == null) { - return create(part, iterator); - } - PersistentPropertyPath path = context.getPersistentPropertyPath( - part.getProperty()); - return base.addCriteria(from(part, - new Criteria(path.toDotPath(ElasticsearchPersistentProperty.QueryPropertyToFieldNameConverter.INSTANCE)), - iterator)); - } - - @Override - protected CriteriaQuery or(CriteriaQuery base, CriteriaQuery query) { - return new CriteriaQuery(base.getCriteria().or(query.getCriteria())); - } - - @Override - protected CriteriaQuery complete(@Nullable CriteriaQuery query, Sort sort) { - - if (query == null) { - // this is the case in a findAllByOrderByField method, add empty criteria - query = new CriteriaQuery(new Criteria()); - } - return query.addSort(sort); - } - - private Criteria from(Part part, Criteria criteria, Iterator parameters) { - - Part.Type type = part.getType(); - - return switch (type) { - case TRUE -> criteria.is(true); - case FALSE -> criteria.is(false); - case NEGATING_SIMPLE_PROPERTY -> criteria.is(parameters.next()).not(); - case REGEX -> criteria.expression(parameters.next().toString()); - case LIKE, STARTING_WITH -> criteria.startsWith(parameters.next().toString()); - case ENDING_WITH -> criteria.endsWith(parameters.next().toString()); - case CONTAINING -> criteria.contains(parameters.next().toString()); - case GREATER_THAN -> criteria.greaterThan(parameters.next()); - case AFTER, GREATER_THAN_EQUAL -> criteria.greaterThanEqual(parameters.next()); - case LESS_THAN -> criteria.lessThan(parameters.next()); - case BEFORE, LESS_THAN_EQUAL -> criteria.lessThanEqual(parameters.next()); - case BETWEEN -> criteria.between(parameters.next(), parameters.next()); - case IN -> criteria.in(asArray(parameters.next())); - case NOT_IN -> criteria.notIn(asArray(parameters.next())); - case SIMPLE_PROPERTY, WITHIN -> within(part, criteria, parameters); - case NEAR -> near(criteria, parameters); - case EXISTS, IS_NOT_NULL -> criteria.exists(); - case IS_NULL -> criteria.not().exists(); - case IS_EMPTY -> criteria.empty(); - case IS_NOT_EMPTY -> criteria.notEmpty(); - default -> throw new InvalidDataAccessApiUsageException("Illegal criteria found '" + type + "'."); - }; - } - - private Criteria within(Part part, Criteria criteria, Iterator parameters) { - - Object firstParameter = parameters.next(); - Object secondParameter; - - if (part.getType() == Part.Type.SIMPLE_PROPERTY) { - if (part.getProperty().getType() != GeoPoint.class) { - if (firstParameter != null) { - return criteria.is(firstParameter); - } else { - // searching for null is a must_not (exists) - return criteria.exists().not(); - } - } else { - // it means it's a simple find with exact geopoint matching (e.g. findByLocation) - // and because Elasticsearch does not have any kind of query with just a geopoint - // as argument we use a "geo distance" query with a distance of one meter. - secondParameter = ".001km"; - } - } else { - secondParameter = parameters.next(); - } - - return doWithinIfPossible(criteria, firstParameter, secondParameter); - } - - private Criteria near(Criteria criteria, Iterator parameters) { - - Object firstParameter = parameters.next(); - - if (firstParameter instanceof GeoBox geoBox) { - return criteria.boundedBy(geoBox); - } - - if (firstParameter instanceof Box box) { - return criteria.boundedBy(GeoBox.fromBox(box)); - } - - Object secondParameter = parameters.next(); - - return doWithinIfPossible(criteria, firstParameter, secondParameter); - } - - /** - * Do a within query if possible, otherwise return the criteria unchanged. - * - * @param criteria must not be {@literal null} - * @param firstParameter must not be {@literal null} - * @param secondParameter must not be {@literal null} - * @return the criteria with the within query applied if possible. - * @author Junghoon Ban - */ - private Criteria doWithinIfPossible(Criteria criteria, Object firstParameter, Object secondParameter) { - - if (firstParameter instanceof GeoPoint geoPoint && secondParameter instanceof String string) { - return criteria.within(geoPoint, string); - } - - if (firstParameter instanceof Point point && secondParameter instanceof Distance distance) { - return criteria.within(point, distance); - } - - if (firstParameter instanceof String firstString && secondParameter instanceof String secondString) { - return criteria.within(firstString, secondString); - } - - return criteria; - } - - private Object[] asArray(Object o) { - if (o instanceof Collection) { - return ((Collection) o).toArray(); - } else if (o.getClass().isArray()) { - return (Object[]) o; - } - return new Object[]{o}; - } + private final MappingContext context; + + public ElasticsearchQueryCreator(PartTree tree, ParameterAccessor parameters, + MappingContext context) { + super(tree, parameters); + this.context = context; + } + + public ElasticsearchQueryCreator(PartTree tree, MappingContext context) { + super(tree); + this.context = context; + } + + @Override + protected CriteriaQuery create(Part part, Iterator iterator) { + PersistentPropertyPath path = context.getPersistentPropertyPath( + part.getProperty()); + return new CriteriaQuery(from(part, + new Criteria(path.toDotPath(ElasticsearchPersistentProperty.QueryPropertyToFieldNameConverter.INSTANCE)), + iterator)); + } + + @Override + protected CriteriaQuery and(Part part, CriteriaQuery base, Iterator iterator) { + if (base == null) { + return create(part, iterator); + } + PersistentPropertyPath path = context.getPersistentPropertyPath( + part.getProperty()); + return base.addCriteria(from(part, + new Criteria(path.toDotPath(ElasticsearchPersistentProperty.QueryPropertyToFieldNameConverter.INSTANCE)), + iterator)); + } + + @Override + protected CriteriaQuery or(CriteriaQuery base, CriteriaQuery query) { + return new CriteriaQuery(base.getCriteria().or(query.getCriteria())); + } + + @Override + protected CriteriaQuery complete(@Nullable CriteriaQuery query, Sort sort) { + + if (query == null) { + // this is the case in a findAllByOrderByField method, add empty criteria + query = new CriteriaQuery(new Criteria()); + } + return query.addSort(sort); + } + + private Criteria from(Part part, Criteria criteria, Iterator parameters) { + + Part.Type type = part.getType(); + + return switch (type) { + case TRUE -> criteria.is(true); + case FALSE -> criteria.is(false); + case NEGATING_SIMPLE_PROPERTY -> criteria.is(parameters.next()).not(); + case REGEX -> criteria.expression(parameters.next().toString()); + case LIKE, STARTING_WITH -> criteria.startsWith(parameters.next().toString()); + case ENDING_WITH -> criteria.endsWith(parameters.next().toString()); + case CONTAINING -> criteria.contains(parameters.next().toString()); + case GREATER_THAN -> criteria.greaterThan(parameters.next()); + case AFTER, GREATER_THAN_EQUAL -> criteria.greaterThanEqual(parameters.next()); + case LESS_THAN -> criteria.lessThan(parameters.next()); + case BEFORE, LESS_THAN_EQUAL -> criteria.lessThanEqual(parameters.next()); + case BETWEEN -> criteria.between(parameters.next(), parameters.next()); + case IN -> criteria.in(asArray(parameters.next())); + case NOT_IN -> criteria.notIn(asArray(parameters.next())); + case SIMPLE_PROPERTY, WITHIN -> within(part, criteria, parameters); + case NEAR -> near(criteria, parameters); + case EXISTS, IS_NOT_NULL -> criteria.exists(); + case IS_NULL -> criteria.not().exists(); + case IS_EMPTY -> criteria.empty(); + case IS_NOT_EMPTY -> criteria.notEmpty(); + default -> throw new InvalidDataAccessApiUsageException("Illegal criteria found '" + type + "'."); + }; + } + + private Criteria within(Part part, Criteria criteria, Iterator parameters) { + + Object firstParameter = parameters.next(); + Object secondParameter; + + if (part.getType() == Part.Type.SIMPLE_PROPERTY) { + if (part.getProperty().getType() != GeoPoint.class) { + if (firstParameter != null) { + return criteria.is(firstParameter); + } else { + // searching for null is a must_not (exists) + return criteria.exists().not(); + } + } else { + // it means it's a simple find with exact geopoint matching (e.g. findByLocation) + // and because Elasticsearch does not have any kind of query with just a geopoint + // as argument we use a "geo distance" query with a distance of one meter. + secondParameter = ".001km"; + } + } else { + secondParameter = parameters.next(); + } + + return doWithinIfPossible(criteria, firstParameter, secondParameter); + } + + private Criteria near(Criteria criteria, Iterator parameters) { + + Object firstParameter = parameters.next(); + + if (firstParameter instanceof GeoBox geoBox) { + return criteria.boundedBy(geoBox); + } + + if (firstParameter instanceof Box box) { + return criteria.boundedBy(GeoBox.fromBox(box)); + } + + Object secondParameter = parameters.next(); + + return doWithinIfPossible(criteria, firstParameter, secondParameter); + } + + /** + * Do a within query if possible, otherwise return the criteria unchanged. + * + * @param criteria must not be {@literal null} + * @param firstParameter must not be {@literal null} + * @param secondParameter must not be {@literal null} + * @return the criteria with the within query applied if possible. + * @author Junghoon Ban + */ + private Criteria doWithinIfPossible(Criteria criteria, Object firstParameter, Object secondParameter) { + + if (firstParameter instanceof GeoPoint geoPoint && secondParameter instanceof String string) { + return criteria.within(geoPoint, string); + } + + if (firstParameter instanceof Point point && secondParameter instanceof Distance distance) { + return criteria.within(point, distance); + } + + if (firstParameter instanceof String firstString && secondParameter instanceof String secondString) { + return criteria.within(firstString, secondString); + } + + return criteria; + } + + private Object[] asArray(Object o) { + if (o instanceof Collection) { + return ((Collection) o).toArray(); + } else if (o.getClass().isArray()) { + return (Object[]) o; + } + return new Object[] { o }; + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/query/parser/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/query/parser/package-info.java index 1654f41ae..5f524c1b8 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/query/parser/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/query/parser/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.query.parser; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchEntityInformation.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchEntityInformation.java index 6e71c428c..1320b979f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchEntityInformation.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchEntityInformation.java @@ -15,10 +15,10 @@ */ package org.springframework.data.elasticsearch.repository.support; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.repository.core.EntityInformation; -import org.springframework.lang.Nullable; /** * @param @@ -39,6 +39,5 @@ public interface ElasticsearchEntityInformation extends EntityInformation @Nullable Long getVersion(T entity); - @Nullable - Document.VersionType getVersionType(); + Document.@Nullable VersionType getVersionType(); } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryFactory.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryFactory.java index 0d899bbed..b5d0b1270 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryFactory.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryFactory.java @@ -20,6 +20,7 @@ import java.lang.reflect.Method; import java.util.Optional; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.repository.query.ElasticsearchQueryMethod; @@ -40,7 +41,6 @@ import org.springframework.data.repository.query.QueryLookupStrategy.Key; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.ValueExpressionDelegate; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryFactoryBean.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryFactoryBean.java index e331fa60e..98cf29d0f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryFactoryBean.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryFactoryBean.java @@ -17,11 +17,11 @@ import java.io.Serializable; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; import org.springframework.data.repository.core.support.RepositoryFactorySupport; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/QueryStringProcessor.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/QueryStringProcessor.java index a32b503b0..b24cc1762 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/QueryStringProcessor.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/QueryStringProcessor.java @@ -37,7 +37,7 @@ public class QueryStringProcessor { private final ValueEvaluationContextProvider evaluationContextProvider; public QueryStringProcessor(String query, QueryMethod queryMethod, ConversionService conversionService, - ValueEvaluationContextProvider evaluationContextProvider) { + ValueEvaluationContextProvider evaluationContextProvider) { Assert.notNull(query, "query must not be null"); Assert.notNull(queryMethod, "queryMethod must not be null"); diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/ReactiveElasticsearchRepositoryFactory.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/ReactiveElasticsearchRepositoryFactory.java index 7e2607e6e..368df504c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/ReactiveElasticsearchRepositoryFactory.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/ReactiveElasticsearchRepositoryFactory.java @@ -19,6 +19,7 @@ import java.lang.reflect.Method; import java.util.Optional; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty; @@ -40,7 +41,6 @@ import org.springframework.data.repository.query.ReactiveQueryByExampleExecutor; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.ValueExpressionDelegate; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/ReactiveElasticsearchRepositoryFactoryBean.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/ReactiveElasticsearchRepositoryFactoryBean.java index b58bb3999..3f30545bf 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/ReactiveElasticsearchRepositoryFactoryBean.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/ReactiveElasticsearchRepositoryFactoryBean.java @@ -15,12 +15,12 @@ */ package org.springframework.data.elasticsearch.repository.support; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; import org.springframework.data.repository.core.support.RepositoryFactorySupport; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java index 54a0928cc..d48a3c80e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java @@ -22,6 +22,7 @@ import java.util.stream.Collectors; import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; @@ -45,7 +46,6 @@ import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.util.StreamUtils; import org.springframework.data.util.Streamable; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -457,7 +457,7 @@ public R executeAndRefresh(OperationsCallback callback) { @Nullable public R executeAndRefresh(OperationsCallback callback, @Nullable RefreshPolicy refreshPolicy) { - return callback.doWithOperations(operations.withRefreshPolicy(refreshPolicy)); + return callback.doWithOperations(operations.withRefreshPolicy(refreshPolicy)); } // endregion } diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepository.java index 1d9c116cf..ae3e1a4d0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepository.java @@ -20,6 +20,7 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -36,7 +37,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.routing.RoutingResolver; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/package-info.java index 17be692af..7f6a0f13f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.support; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/querybyexample/ExampleCriteriaMapper.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/querybyexample/ExampleCriteriaMapper.java index cd3eefa92..432d1883e 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/querybyexample/ExampleCriteriaMapper.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/querybyexample/ExampleCriteriaMapper.java @@ -18,6 +18,7 @@ import java.util.Map; import java.util.Optional; +import org.jspecify.annotations.Nullable; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher; @@ -27,7 +28,6 @@ import org.springframework.data.mapping.PersistentPropertyAccessor; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.support.ExampleMatcherAccessor; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/querybyexample/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/querybyexample/package-info.java index aea4322e9..c2b3be5cc 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/querybyexample/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/querybyexample/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.support.querybyexample; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/spel/QueryStringSpELEvaluator.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/spel/QueryStringSpELEvaluator.java index e40fa11dc..9d982d928 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/spel/QueryStringSpELEvaluator.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/spel/QueryStringSpELEvaluator.java @@ -18,6 +18,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.jspecify.annotations.Nullable; import org.springframework.core.convert.ConversionService; import org.springframework.data.elasticsearch.core.convert.ConversionException; import org.springframework.data.elasticsearch.repository.query.ElasticsearchParametersParameterAccessor; @@ -36,7 +37,6 @@ import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.expression.spel.support.StandardTypeConverter; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/spel/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/spel/package-info.java index 1d76d236d..0388eba7c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/spel/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/spel/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.support.spel; diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchCollectionValueToStringConverter.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchCollectionValueToStringConverter.java index 706e11de2..2e3441fd0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchCollectionValueToStringConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchCollectionValueToStringConverter.java @@ -21,10 +21,10 @@ import java.util.Set; import java.util.StringJoiner; +import org.jspecify.annotations.Nullable; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.GenericConverter; -import org.springframework.lang.Nullable; /** * Convert a collection into string for value part of the elasticsearch query. diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchQueryValueConversionService.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchQueryValueConversionService.java index 67540ee1f..a611311c6 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchQueryValueConversionService.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchQueryValueConversionService.java @@ -18,11 +18,11 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.jspecify.annotations.Nullable; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.Converter; import org.springframework.core.convert.support.GenericConversionService; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchStringValueToStringConverter.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchStringValueToStringConverter.java index 23b4a75de..ee03ccf3f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchStringValueToStringConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/value/ElasticsearchStringValueToStringConverter.java @@ -19,9 +19,9 @@ import java.util.Set; import java.util.regex.Matcher; +import org.jspecify.annotations.Nullable; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.converter.GenericConverter; -import org.springframework.lang.Nullable; /** * Values in elasticsearch query may contain quotations and should be escaped when converting. Note that the converter diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/value/package-info.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/value/package-info.java index 89f2436e2..18e794112 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/value/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/value/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repository.support.value; diff --git a/src/main/java/org/springframework/data/elasticsearch/support/DefaultStringObjectMap.java b/src/main/java/org/springframework/data/elasticsearch/support/DefaultStringObjectMap.java index a27aa036c..f171d8604 100644 --- a/src/main/java/org/springframework/data/elasticsearch/support/DefaultStringObjectMap.java +++ b/src/main/java/org/springframework/data/elasticsearch/support/DefaultStringObjectMap.java @@ -22,7 +22,7 @@ import java.util.Set; import java.util.function.BiConsumer; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; import com.fasterxml.jackson.core.JsonProcessingException; diff --git a/src/main/java/org/springframework/data/elasticsearch/support/HttpHeaders.java b/src/main/java/org/springframework/data/elasticsearch/support/HttpHeaders.java index 464b7253e..742ce9d04 100644 --- a/src/main/java/org/springframework/data/elasticsearch/support/HttpHeaders.java +++ b/src/main/java/org/springframework/data/elasticsearch/support/HttpHeaders.java @@ -25,7 +25,7 @@ import java.util.Map; import java.util.Set; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; import org.springframework.util.LinkedCaseInsensitiveMap; import org.springframework.util.MultiValueMap; diff --git a/src/main/java/org/springframework/data/elasticsearch/support/ScoreDoc.java b/src/main/java/org/springframework/data/elasticsearch/support/ScoreDoc.java index c5079133f..4de876f8a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/support/ScoreDoc.java +++ b/src/main/java/org/springframework/data/elasticsearch/support/ScoreDoc.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.support; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/main/java/org/springframework/data/elasticsearch/support/StringObjectMap.java b/src/main/java/org/springframework/data/elasticsearch/support/StringObjectMap.java index 0cb286c7d..f3a7c86c9 100644 --- a/src/main/java/org/springframework/data/elasticsearch/support/StringObjectMap.java +++ b/src/main/java/org/springframework/data/elasticsearch/support/StringObjectMap.java @@ -21,8 +21,8 @@ import java.util.function.LongSupplier; import java.util.function.Supplier; +import org.jspecify.annotations.Nullable; import org.springframework.data.elasticsearch.core.document.Document; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** diff --git a/src/main/java/org/springframework/data/elasticsearch/support/VersionInfo.java b/src/main/java/org/springframework/data/elasticsearch/support/VersionInfo.java index f9f85b6aa..d62ea73f8 100644 --- a/src/main/java/org/springframework/data/elasticsearch/support/VersionInfo.java +++ b/src/main/java/org/springframework/data/elasticsearch/support/VersionInfo.java @@ -21,7 +21,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * This class is used to log the versions of Spring Data Elasticsearch, the Elasticsearch client libs used to built, the diff --git a/src/main/java/org/springframework/data/elasticsearch/support/package-info.java b/src/main/java/org/springframework/data/elasticsearch/support/package-info.java index 0ad015c73..7c65e45ba 100644 --- a/src/main/java/org/springframework/data/elasticsearch/support/package-info.java +++ b/src/main/java/org/springframework/data/elasticsearch/support/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.support; diff --git a/src/test/java/org/springframework/data/elasticsearch/NestedObjectIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/NestedObjectIntegrationTests.java index 991324cc8..268227455 100644 --- a/src/test/java/org/springframework/data/elasticsearch/NestedObjectIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/NestedObjectIntegrationTests.java @@ -29,6 +29,7 @@ import java.util.Map; import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -49,7 +50,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Rizwan Idrees diff --git a/src/test/java/org/springframework/data/elasticsearch/NullabilityArchitectureTests.java b/src/test/java/org/springframework/data/elasticsearch/NullabilityArchitectureTests.java new file mode 100644 index 000000000..a086f251e --- /dev/null +++ b/src/test/java/org/springframework/data/elasticsearch/NullabilityArchitectureTests.java @@ -0,0 +1,21 @@ +package org.springframework.data.elasticsearch; + +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.lang.ArchRule; +import com.tngtech.archunit.lang.syntax.ArchRuleDefinition; + +@AnalyzeClasses(packages = { "org.springframework.data.elasticsearch" }) +class NullabilityArchitectureTests { + + @ArchTest public static final ArchRule shouldNotUseSpringNullability = ArchRuleDefinition + .noClasses() + .that() + .resideInAPackage("org.springframework.data.elasticsearch..") + .should() + .dependOnClassesThat() + .haveFullyQualifiedName("org.springframework.lang.NonNull") + .orShould() + .dependOnClassesThat() + .haveFullyQualifiedName("org.springframework.lang.Nullable"); +} diff --git a/src/test/java/org/springframework/data/elasticsearch/annotations/ComposableAnnotationsUnitTest.java b/src/test/java/org/springframework/data/elasticsearch/annotations/ComposableAnnotationsUnitTest.java index e376c0beb..8c64053a8 100644 --- a/src/test/java/org/springframework/data/elasticsearch/annotations/ComposableAnnotationsUnitTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/annotations/ComposableAnnotationsUnitTest.java @@ -28,6 +28,7 @@ import java.time.LocalDate; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.core.annotation.AliasFor; @@ -39,7 +40,6 @@ import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchPersistentEntity; import org.springframework.data.elasticsearch.core.suggest.Completion; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryMappingUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryMappingUnitTests.java index e53a33df6..c0f3641db 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryMappingUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/CriteriaQueryMappingUnitTests.java @@ -30,6 +30,7 @@ import org.assertj.core.api.SoftAssertions; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -49,7 +50,6 @@ import org.springframework.data.elasticsearch.core.query.FetchSourceFilterBuilder; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.SourceFilter; -import org.springframework.lang.Nullable; /** * Tests for the mapping of {@link CriteriaQuery} by a {@link MappingElasticsearchConverter}. In the same package as diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/DevTests.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/DevTests.java index d80e08ce9..25308b569 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/elc/DevTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/DevTests.java @@ -48,6 +48,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.elasticsearch.client.RequestOptions; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.MethodOrderer; import org.junit.jupiter.api.Order; @@ -57,7 +58,6 @@ import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.elasticsearch.support.HttpHeaders; -import org.springframework.lang.Nullable; /** * Not really tests, but a class to check the first implementations of the new Elasticsearch client. Needs Elasticsearch diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/ELCWiremockTests.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/ELCWiremockTests.java index 4e6c09230..875fd752e 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/elc/ELCWiremockTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/ELCWiremockTests.java @@ -18,6 +18,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -29,13 +30,13 @@ import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.lang.Nullable; import org.springframework.test.context.junit.jupiter.SpringExtension; import com.github.tomakehurst.wiremock.junit5.WireMockExtension; /** * Tests that need to check the data produced by the Elasticsearch client + * * @author Peter-Josef Meisch */ @SuppressWarnings("UastIncorrectHttpHeaderInspection") diff --git a/src/test/java/org/springframework/data/elasticsearch/client/elc/RequestConverterTest.java b/src/test/java/org/springframework/data/elasticsearch/client/elc/RequestConverterTest.java index a789eb4ad..cdb597e38 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/elc/RequestConverterTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/elc/RequestConverterTest.java @@ -21,6 +21,7 @@ import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; @@ -35,7 +36,6 @@ import org.springframework.data.elasticsearch.core.query.DeleteQuery; import org.springframework.data.elasticsearch.core.query.DocValueField; import org.springframework.data.elasticsearch.core.query.StringQuery; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch @@ -83,8 +83,8 @@ void refreshSetByDeleteRequest() { var deleteQuery = DeleteQuery.builder(query).withRefresh(true).build(); var deleteByQueryRequest = requestConverter.documentDeleteByQueryRequest(deleteQuery, null, SampleEntity.class, - IndexCoordinates.of("foo"), - null); + IndexCoordinates.of("foo"), + null); assertThat(deleteByQueryRequest.refresh()).isTrue(); } diff --git a/src/test/java/org/springframework/data/elasticsearch/client/util/package-info.java b/src/test/java/org/springframework/data/elasticsearch/client/util/package-info.java index 79701328c..3e0be8092 100644 --- a/src/test/java/org/springframework/data/elasticsearch/client/util/package-info.java +++ b/src/test/java/org/springframework/data/elasticsearch/client/util/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.client.util; diff --git a/src/test/java/org/springframework/data/elasticsearch/config/AuditingIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/config/AuditingIntegrationTests.java index 4ee583aaa..eb2785108 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/AuditingIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/AuditingIntegrationTests.java @@ -20,6 +20,7 @@ import java.time.LocalDateTime; import java.util.Optional; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -37,7 +38,6 @@ import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.mapping.callback.EntityCallbacks; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/config/AuditingReactiveIntegrationTest.java b/src/test/java/org/springframework/data/elasticsearch/config/AuditingReactiveIntegrationTest.java index 2dfaee370..84a308166 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/AuditingReactiveIntegrationTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/AuditingReactiveIntegrationTest.java @@ -21,6 +21,7 @@ import java.time.LocalDateTime; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -38,7 +39,6 @@ import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.mapping.callback.ReactiveEntityCallbacks; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ElasticsearchConfigurationELCTests.java b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ElasticsearchConfigurationELCTests.java index 489daba24..973f129b3 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ElasticsearchConfigurationELCTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ElasticsearchConfigurationELCTests.java @@ -20,6 +20,7 @@ import co.elastic.clients.elasticsearch.ElasticsearchClient; import org.elasticsearch.client.RestClient; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +32,6 @@ import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; -import org.springframework.lang.Nullable; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; diff --git a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationELCTests.java b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationELCTests.java index a01485c99..77b290eec 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationELCTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/configuration/ReactiveElasticsearchConfigurationELCTests.java @@ -17,6 +17,7 @@ import static org.assertj.core.api.Assertions.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -29,7 +30,6 @@ import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.repository.config.EnableReactiveElasticsearchRepositories; -import org.springframework.lang.Nullable; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; diff --git a/src/test/java/org/springframework/data/elasticsearch/config/nested/EnableNestedRepositoriesIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/config/nested/EnableNestedRepositoriesIntegrationTests.java index de50ad46e..76bf50ccf 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/nested/EnableNestedRepositoriesIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/nested/EnableNestedRepositoriesIntegrationTests.java @@ -18,9 +18,7 @@ import static org.assertj.core.api.Assertions.*; import static org.springframework.data.elasticsearch.annotations.FieldType.*; -import java.lang.Double; -import java.lang.Long; - +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -36,7 +34,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.repository.Repository; -import org.springframework.lang.Nullable; /** * @author Kevin Leturc diff --git a/src/test/java/org/springframework/data/elasticsearch/config/notnested/EnableRepositoriesIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/config/notnested/EnableRepositoriesIntegrationTests.java index a40aa5eaa..8222e2ef8 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/notnested/EnableRepositoriesIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/notnested/EnableRepositoriesIntegrationTests.java @@ -20,6 +20,7 @@ import java.util.UUID; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -40,7 +41,6 @@ import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.repository.Repository; -import org.springframework.lang.Nullable; /** * @author Rizwan Idrees @@ -158,12 +158,11 @@ public void setRate(int rate) { this.rate = rate; } - @Nullable - public java.lang.Double getScriptedRate() { + public java.lang.@Nullable Double getScriptedRate() { return scriptedRate; } - public void setScriptedRate(@Nullable java.lang.Double scriptedRate) { + public void setScriptedRate(java.lang.@Nullable Double scriptedRate) { this.scriptedRate = scriptedRate; } @@ -193,12 +192,11 @@ public void setLocation(@Nullable GeoPoint location) { this.location = location; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } @@ -254,12 +252,11 @@ public void setRate(int rate) { this.rate = rate; } - @Nullable - public java.lang.Long getScriptedRate() { + public java.lang.@Nullable Long getScriptedRate() { return scriptedRate; } - public void setScriptedRate(@Nullable java.lang.Long scriptedRate) { + public void setScriptedRate(java.lang.@Nullable Long scriptedRate) { this.scriptedRate = scriptedRate; } @@ -289,12 +286,11 @@ public void setLocation(@Nullable GeoPoint location) { this.location = location; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } diff --git a/src/test/java/org/springframework/data/elasticsearch/config/notnested/package-info.java b/src/test/java/org/springframework/data/elasticsearch/config/notnested/package-info.java index 55d936ed9..c32f6a26e 100644 --- a/src/test/java/org/springframework/data/elasticsearch/config/notnested/package-info.java +++ b/src/test/java/org/springframework/data/elasticsearch/config/notnested/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.config.notnested; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchELCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchELCIntegrationTests.java index a88a36dbb..884fde8d9 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchELCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchELCIntegrationTests.java @@ -30,6 +30,7 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Bean; @@ -49,7 +50,6 @@ import org.springframework.data.elasticsearch.core.query.ScriptedField; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; import org.springframework.test.context.ContextConfiguration; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java index 98449b4cc..3a2e89212 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java @@ -24,13 +24,13 @@ import static org.springframework.data.elasticsearch.utils.IdGenerator.*; import static org.springframework.data.elasticsearch.utils.IndexBuilder.*; -import java.time.Duration; import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; import org.assertj.core.api.InstanceOfAssertFactories; import org.assertj.core.api.SoftAssertions; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -67,7 +67,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.util.StreamUtils; -import org.springframework.lang.Nullable; /** * All the integration tests that are not in separate files. @@ -4004,12 +4003,11 @@ public void setRate(int rate) { this.rate = rate; } - @Nullable - public java.lang.Double getScriptedRate() { + public java.lang.@Nullable Double getScriptedRate() { return scriptedRate; } - public void setScriptedRate(@Nullable java.lang.Double scriptedRate) { + public void setScriptedRate(java.lang.@Nullable Double scriptedRate) { this.scriptedRate = scriptedRate; } @@ -4030,12 +4028,11 @@ public void setLocation(@Nullable GeoPoint location) { this.location = location; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } @@ -4164,12 +4161,11 @@ public void setRate(int rate) { this.rate = rate; } - @Nullable - public java.lang.Long getScriptedRate() { + public java.lang.@Nullable Long getScriptedRate() { return scriptedRate; } - public void setScriptedRate(@Nullable java.lang.Long scriptedRate) { + public void setScriptedRate(java.lang.@Nullable Long scriptedRate) { this.scriptedRate = scriptedRate; } @@ -4190,12 +4186,11 @@ public void setLocation(@Nullable GeoPoint location) { this.location = location; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } @@ -4341,12 +4336,11 @@ private static class GTEVersionEntity { @Id private String id; @Nullable private String name; - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } @@ -4401,12 +4395,11 @@ public void setFirstName(@Nullable String firstName) { this.firstName = firstName; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } @@ -4444,12 +4437,11 @@ public void setLastName(@Nullable String lastName) { this.lastName = lastName; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } @@ -4534,7 +4526,7 @@ static class SearchHitsEntity { public SearchHitsEntity() {} - public SearchHitsEntity(@Nullable String id, @Nullable java.lang.Long number, @Nullable String keyword) { + public SearchHitsEntity(@Nullable String id, java.lang.@Nullable Long number, @Nullable String keyword) { this.id = id; this.number = number; this.keyword = keyword; @@ -4549,12 +4541,11 @@ public void setId(@Nullable String id) { this.id = id; } - @Nullable - public java.lang.Long getNumber() { + public java.lang.@Nullable Long getNumber() { return number; } - public void setNumber(@Nullable java.lang.Long number) { + public void setNumber(java.lang.@Nullable Long number) { this.number = number; } @@ -4669,12 +4660,11 @@ public void setSeqNoPrimaryTerm(@Nullable SeqNoPrimaryTerm seqNoPrimaryTerm) { this.seqNoPrimaryTerm = seqNoPrimaryTerm; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } @@ -4688,7 +4678,7 @@ static class VersionedEntity { public VersionedEntity() {} - public VersionedEntity(@Nullable String id, @Nullable java.lang.Long version) { + public VersionedEntity(@Nullable String id, java.lang.@Nullable Long version) { this.id = id; this.version = version; } @@ -4702,12 +4692,11 @@ public void setId(@Nullable String id) { this.id = id; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } @@ -4825,7 +4814,7 @@ public static final class ImmutableWithScriptedEntity { @Nullable @ScriptedField private final Double scriptedRate; - public ImmutableWithScriptedEntity(String id, int rate, @Nullable java.lang.Double scriptedRate) { + public ImmutableWithScriptedEntity(String id, int rate, java.lang.@Nullable Double scriptedRate) { this.id = id; this.rate = rate; this.scriptedRate = scriptedRate; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/EntityOperationsUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/EntityOperationsUnitTests.java index c7ada87d8..c85621b8b 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/EntityOperationsUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/EntityOperationsUnitTests.java @@ -21,6 +21,7 @@ import java.util.HashSet; import org.assertj.core.api.SoftAssertions; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -39,7 +40,6 @@ import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.elasticsearch.core.query.SeqNoPrimaryTerm; import org.springframework.data.elasticsearch.core.routing.DefaultRoutingResolver; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/InnerHitsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/InnerHitsIntegrationTests.java index 1f50ee60f..6dcb12cb7 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/InnerHitsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/InnerHitsIntegrationTests.java @@ -23,6 +23,7 @@ import java.util.List; import org.assertj.core.api.SoftAssertions; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -36,7 +37,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * Testing the querying and parsing of inner_hits. diff --git a/src/test/java/org/springframework/data/elasticsearch/core/LogEntityIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/LogEntityIntegrationTests.java index c189c6863..c7c7c463c 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/LogEntityIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/LogEntityIntegrationTests.java @@ -23,6 +23,7 @@ import java.util.Arrays; import java.util.Date; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -37,7 +38,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * LogEntityIntegrationTests @@ -137,8 +137,7 @@ static class LogEntity { @Nullable private long sequenceCode; @Nullable @Field(type = Ip) private String ip; - @Nullable - @Field(type = Date, format = DateFormat.date_time) private java.util.Date date; + @Field(type = Date, format = DateFormat.date_time) private java.util.@Nullable Date date; private LogEntity() {} diff --git a/src/test/java/org/springframework/data/elasticsearch/core/PointInTimeIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/PointInTimeIntegrationTests.java index 63ec4fec9..4f640f843 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/PointInTimeIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/PointInTimeIntegrationTests.java @@ -19,6 +19,7 @@ import java.time.Duration; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -35,7 +36,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchELCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchELCIntegrationTests.java index f6ead65ff..4e465de68 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchELCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchELCIntegrationTests.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.concurrent.atomic.AtomicInteger; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Bean; @@ -42,7 +43,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.ReactiveElasticsearchTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; import org.springframework.test.context.ContextConfiguration; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchIntegrationTests.java index e39131dfa..7090ea507 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchIntegrationTests.java @@ -42,6 +42,7 @@ import org.assertj.core.api.InstanceOfAssertFactories; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -74,7 +75,6 @@ import org.springframework.data.elasticsearch.core.query.*; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** @@ -1335,12 +1335,11 @@ public void setRate(int rate) { this.rate = rate; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } @@ -1448,12 +1447,11 @@ public void setSeqNoPrimaryTerm(@Nullable SeqNoPrimaryTerm seqNoPrimaryTerm) { this.seqNoPrimaryTerm = seqNoPrimaryTerm; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } @@ -1474,12 +1472,11 @@ public void setId(@Nullable String id) { this.id = id; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactivePointInTimeIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactivePointInTimeIntegrationTests.java index b6b269592..e8163f899 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactivePointInTimeIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactivePointInTimeIntegrationTests.java @@ -21,6 +21,7 @@ import java.time.Duration; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -37,7 +38,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; import org.springframework.util.StringUtils; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveReindexIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveReindexIntegrationTests.java index e1dddee38..43e501936 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveReindexIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveReindexIntegrationTests.java @@ -23,6 +23,7 @@ import java.util.regex.Pattern; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -35,7 +36,6 @@ import org.springframework.data.elasticsearch.core.reindex.ReindexRequest; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * x * Note: the imperative version of these tests have more details and test methods, but they test that the request is diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveSearchTemplateIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveSearchTemplateIntegrationTests.java index 7b3abbd9e..f9f143d7d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReactiveSearchTemplateIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReactiveSearchTemplateIntegrationTests.java @@ -25,6 +25,7 @@ import java.util.Map; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -40,7 +41,6 @@ import org.springframework.data.elasticsearch.core.script.Script; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * Integration tests for the point in time API. diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ReindexIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ReindexIntegrationTests.java index 03d2485ef..2e7778108 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ReindexIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ReindexIntegrationTests.java @@ -20,6 +20,7 @@ import java.util.regex.Pattern; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -34,7 +35,6 @@ import org.springframework.data.elasticsearch.core.reindex.ReindexResponse; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/SearchAsYouTypeIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/SearchAsYouTypeIntegrationTests.java index 429abe919..b463ecaab 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/SearchAsYouTypeIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/SearchAsYouTypeIntegrationTests.java @@ -22,6 +22,7 @@ import java.util.Objects; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -35,7 +36,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Aleksei Arsenev diff --git a/src/test/java/org/springframework/data/elasticsearch/core/SearchTemplateIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/SearchTemplateIntegrationTests.java index e6339c208..e22c6e3b4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/SearchTemplateIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/SearchTemplateIntegrationTests.java @@ -22,6 +22,7 @@ import java.util.Map; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -37,7 +38,6 @@ import org.springframework.data.elasticsearch.core.script.Script; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * Integration tests search template API. diff --git a/src/test/java/org/springframework/data/elasticsearch/core/SourceFilterIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/SourceFilterIntegrationTests.java index 11137ce88..f08bc810a 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/SourceFilterIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/SourceFilterIntegrationTests.java @@ -20,6 +20,7 @@ import java.util.Collections; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -36,7 +37,6 @@ import org.springframework.data.elasticsearch.core.query.SourceFilter; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch @@ -208,7 +208,7 @@ void shouldNotReturnAnyFieldsWhenSourceIsSetToFalse() { void shouldReturnAllFieldsWhenSourceIsSetToTrue() { Query query = Query.findAll(); - query.addSourceFilter(FetchSourceFilter.of(b -> b.withFetchSource(true))); + query.addSourceFilter(FetchSourceFilter.of(b -> b.withFetchSource(true))); SearchHits entities = operations.search(query, Entity.class); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/aggregation/AggregationIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/aggregation/AggregationIntegrationTests.java index ec6fa95fb..106eb3123 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/aggregation/AggregationIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/aggregation/AggregationIntegrationTests.java @@ -17,12 +17,11 @@ import static org.assertj.core.api.Assertions.*; import static org.springframework.data.elasticsearch.annotations.FieldType.*; -import static org.springframework.data.elasticsearch.annotations.FieldType.Integer; -import java.lang.Integer; import java.util.ArrayList; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -41,7 +40,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Rizwan Idrees diff --git a/src/test/java/org/springframework/data/elasticsearch/core/convert/MappingElasticsearchConverterUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/convert/MappingElasticsearchConverterUnitTests.java index 985a17ad3..659e461d9 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/convert/MappingElasticsearchConverterUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/convert/MappingElasticsearchConverterUnitTests.java @@ -30,6 +30,7 @@ import org.intellij.lang.annotations.Language; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -73,7 +74,6 @@ import org.springframework.data.geo.Circle; import org.springframework.data.geo.Point; import org.springframework.data.geo.Polygon; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -1807,18 +1807,16 @@ void shouldReadASingleStringIntoAListPropertyImmutable() { void shouldPopulateScriptedFields() { SearchDocumentAdapter document = new SearchDocumentAdapter(Document.create(), 0.0f, - new Object[]{}, + new Object[] {}, Map.of( - "scriptedField" , List.of("scriptedField"), - "custom-name-scripted-field" , List.of("custom-name-scripted-field") - ), + "scriptedField", List.of("scriptedField"), + "custom-name-scripted-field", List.of("custom-name-scripted-field")), emptyMap(), emptyMap(), null, null, null, - null - ); + null); // Create a SearchDocument instance var entity = mappingElasticsearchConverter.read(ScriptedEntity.class, document); assertThat(entity.customScriptedField).isEqualTo("custom-name-scripted-field"); @@ -1826,8 +1824,7 @@ void shouldPopulateScriptedFields() { } static class ScriptedEntity { - @ScriptedField - private String scriptedField; + @ScriptedField private String scriptedField; @ScriptedField(name = "custom-name-scripted-field") String customScriptedField; ScriptedEntity() { @@ -1853,9 +1850,11 @@ public void setCustomScriptedField(String customScriptedField) { @Override public boolean equals(Object o) { - if (o == null || getClass() != o.getClass()) return false; + if (o == null || getClass() != o.getClass()) + return false; ScriptedEntity that = (ScriptedEntity) o; - return Objects.equals(scriptedField, that.scriptedField) && Objects.equals(customScriptedField, that.customScriptedField); + return Objects.equals(scriptedField, that.scriptedField) + && Objects.equals(customScriptedField, that.customScriptedField); } @Override @@ -1864,7 +1863,6 @@ public int hashCode() { } } - @Test // #2280 @DisplayName("should read a String array into a List property immutable") void shouldReadAStringArrayIntoAListPropertyImmutable() { diff --git a/src/test/java/org/springframework/data/elasticsearch/core/convert/PropertyValueConvertersUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/convert/PropertyValueConvertersUnitTests.java index 273e0cf42..9465a1bd4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/convert/PropertyValueConvertersUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/convert/PropertyValueConvertersUnitTests.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.stream.Stream; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Named; import org.junit.jupiter.params.ParameterizedTest; @@ -33,7 +34,6 @@ import org.springframework.data.elasticsearch.core.mapping.PropertyValueConverter; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchPersistentEntity; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/event/AuditingEntityCallbackTests.java b/src/test/java/org/springframework/data/elasticsearch/core/event/AuditingEntityCallbackTests.java index f3e0e2969..d95c34232 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/event/AuditingEntityCallbackTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/event/AuditingEntityCallbackTests.java @@ -21,6 +21,7 @@ import java.time.LocalDateTime; import java.util.Objects; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -34,7 +35,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.mapping.context.PersistentEntities; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/event/CallbackIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/event/CallbackIntegrationTests.java index 991b31c6d..86ae92305 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/event/CallbackIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/event/CallbackIntegrationTests.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -41,7 +42,6 @@ import org.springframework.data.elasticsearch.core.query.SeqNoPrimaryTerm; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; /** @@ -240,7 +240,7 @@ static class SampleEntity { @Id private String id; @Nullable private String text; -// @ReadOnlyProperty + // @ReadOnlyProperty @Nullable private String className; @Nullable diff --git a/src/test/java/org/springframework/data/elasticsearch/core/event/ReactiveAuditingEntityCallbackTests.java b/src/test/java/org/springframework/data/elasticsearch/core/event/ReactiveAuditingEntityCallbackTests.java index d00a8d690..aafc41293 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/event/ReactiveAuditingEntityCallbackTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/event/ReactiveAuditingEntityCallbackTests.java @@ -24,6 +24,7 @@ import java.time.LocalDateTime; import java.util.Objects; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -37,7 +38,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; import org.springframework.data.mapping.context.PersistentEntities; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/event/ReactiveCallbackIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/event/ReactiveCallbackIntegrationTests.java index eb5f7f407..de896111c 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/event/ReactiveCallbackIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/event/ReactiveCallbackIntegrationTests.java @@ -21,6 +21,7 @@ import reactor.core.publisher.Mono; import reactor.test.StepVerifier; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -33,7 +34,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoIntegrationTests.java index 20e3b6eb5..786afe8e7 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoIntegrationTests.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -39,7 +40,6 @@ import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.elasticsearch.utils.geohash.Geohash; import org.springframework.data.geo.Point; -import org.springframework.lang.Nullable; /** * @author Rizwan Idrees diff --git a/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoJsonEntity.java b/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoJsonEntity.java index 87c1fd095..b18e02ed6 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoJsonEntity.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoJsonEntity.java @@ -17,10 +17,10 @@ import java.util.Objects; +import org.jspecify.annotations.Nullable; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.geo.Point; -import org.springframework.lang.Nullable; /** * this class contains each GeoJson type as explicit type and as GeoJson interface. Used by several test classes diff --git a/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoJsonIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoJsonIntegrationTests.java index 8a5e78903..633aa97aa 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoJsonIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/geo/GeoJsonIntegrationTests.java @@ -19,6 +19,7 @@ import java.util.Arrays; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -35,7 +36,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.geo.Point; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/IndexOperationsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/IndexOperationsIntegrationTests.java index 3e2c8101d..0431ec73a 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/IndexOperationsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/IndexOperationsIntegrationTests.java @@ -26,6 +26,7 @@ import org.assertj.core.api.InstanceOfAssertFactories; import org.assertj.core.api.SoftAssertions; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -47,7 +48,6 @@ import org.springframework.data.elasticsearch.core.query.StringQuery; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/IndexTemplateIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/IndexTemplateIntegrationTests.java index 06209cc24..8d73d6079 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/IndexTemplateIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/IndexTemplateIntegrationTests.java @@ -23,6 +23,7 @@ import java.util.UUID; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -38,7 +39,6 @@ import org.springframework.data.elasticsearch.core.query.CriteriaQuery; import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/MappingBuilderIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/MappingBuilderIntegrationTests.java index 36efe8182..c65867fe4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/MappingBuilderIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/MappingBuilderIntegrationTests.java @@ -30,6 +30,7 @@ import java.util.Map; import java.util.Set; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -43,7 +44,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Stuart Stevenson @@ -711,12 +711,11 @@ public void setText(@Nullable String text) { this.text = text; } - @Nullable - public java.lang.Object getObject() { + public java.lang.@Nullable Object getObject() { return object; } - public void setObject(@Nullable java.lang.Object object) { + public void setObject(java.lang.@Nullable Object object) { this.object = object; } } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/MappingBuilderUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/MappingBuilderUnitTests.java index 673d56b1f..d7a1e30a8 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/MappingBuilderUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/MappingBuilderUnitTests.java @@ -31,6 +31,7 @@ import java.util.Map; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; @@ -47,7 +48,6 @@ import org.springframework.data.geo.Point; import org.springframework.data.geo.Polygon; import org.springframework.data.mapping.MappingException; -import org.springframework.lang.Nullable; /** * @author Stuart Stevenson @@ -1126,49 +1126,49 @@ void shouldAddFieldsThatAreExcludedFromSource() throws JSONException { String expected = """ { - "properties": { - "_class": { - "type": "keyword", - "index": false, - "doc_values": false - }, - "excluded-date": { - "type": "date", - "format": "date" - }, - "nestedEntity": { - "type": "nested", - "properties": { - "_class": { - "type": "keyword", - "index": false, - "doc_values": false - }, - "excluded-text": { - "type": "text" - } - } - }, - "excluded-multifield": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword" - } - } - } - }, - "_source": { - "excludes": [ - "excluded-date", - "nestedEntity.excluded-text", - "excluded-multifield" - ] - } + "properties": { + "_class": { + "type": "keyword", + "index": false, + "doc_values": false + }, + "excluded-date": { + "type": "date", + "format": "date" + }, + "nestedEntity": { + "type": "nested", + "properties": { + "_class": { + "type": "keyword", + "index": false, + "doc_values": false + }, + "excluded-text": { + "type": "text" + } + } + }, + "excluded-multifield": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + } + }, + "_source": { + "excludes": [ + "excluded-date", + "nestedEntity.excluded-text", + "excluded-multifield" + ] + } } - - """; // + + """; // String mapping = getMappingBuilder().buildPropertyMapping(ExcludedFieldEntity.class); @@ -2141,21 +2141,19 @@ public void setId(@Nullable String id) { this.id = id; } - @Nullable - public java.lang.Integer getPageRank() { + public java.lang.@Nullable Integer getPageRank() { return pageRank; } - public void setPageRank(@Nullable java.lang.Integer pageRank) { + public void setPageRank(java.lang.@Nullable Integer pageRank) { this.pageRank = pageRank; } - @Nullable - public java.lang.Integer getUrlLength() { + public java.lang.@Nullable Integer getUrlLength() { return urlLength; } - public void setUrlLength(@Nullable java.lang.Integer urlLength) { + public void setUrlLength(java.lang.@Nullable Integer urlLength) { this.urlLength = urlLength; } @@ -2309,12 +2307,11 @@ public void setText(@Nullable String text) { this.text = text; } - @Nullable - public java.lang.Object getObject() { + public java.lang.@Nullable Object getObject() { return object; } - public void setObject(@Nullable java.lang.Object object) { + public void setObject(java.lang.@Nullable Object object) { this.object = object; } } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/MappingParametersTest.java b/src/test/java/org/springframework/data/elasticsearch/core/index/MappingParametersTest.java index 7d424d049..1a41c6487 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/MappingParametersTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/MappingParametersTest.java @@ -2,10 +2,10 @@ import static org.assertj.core.api.Assertions.*; import static org.springframework.data.elasticsearch.annotations.FieldType.*; -import static org.springframework.data.elasticsearch.annotations.FieldType.Object; import java.lang.annotation.Annotation; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.data.elasticsearch.annotations.Field; @@ -14,7 +14,6 @@ import org.springframework.data.elasticsearch.annotations.MultiField; import org.springframework.data.elasticsearch.core.MappingContextBaseTests; import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveIndexOperationsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveIndexOperationsIntegrationTests.java index ef892bc45..ba8313703 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveIndexOperationsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveIndexOperationsIntegrationTests.java @@ -29,6 +29,7 @@ import org.assertj.core.api.InstanceOfAssertFactories; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -50,7 +51,6 @@ import org.springframework.data.elasticsearch.core.query.StringQuery; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveIndexTemplateIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveIndexTemplateIntegrationTests.java index b832a3285..4cb038324 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveIndexTemplateIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveIndexTemplateIntegrationTests.java @@ -27,6 +27,7 @@ import org.assertj.core.api.SoftAssertions; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -46,7 +47,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveMappingBuilderUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveMappingBuilderUnitTests.java index d9a944927..d2b171d28 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveMappingBuilderUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/ReactiveMappingBuilderUnitTests.java @@ -25,6 +25,7 @@ import java.util.List; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; @@ -36,7 +37,6 @@ import org.springframework.data.elasticsearch.annotations.Mapping; import org.springframework.data.elasticsearch.annotations.MultiField; import org.springframework.data.elasticsearch.core.MappingContextBaseTests; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/SimpleDynamicTemplatesMappingTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/SimpleDynamicTemplatesMappingTests.java index 2026a5815..c827bef66 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/SimpleDynamicTemplatesMappingTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/SimpleDynamicTemplatesMappingTests.java @@ -21,6 +21,7 @@ import java.util.Map; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; @@ -29,7 +30,6 @@ import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.data.elasticsearch.annotations.Setting; import org.springframework.data.elasticsearch.core.MappingContextBaseTests; -import org.springframework.lang.Nullable; /** * Dynamic templates tests diff --git a/src/test/java/org/springframework/data/elasticsearch/core/index/SimpleElasticsearchDateMappingTests.java b/src/test/java/org/springframework/data/elasticsearch/core/index/SimpleElasticsearchDateMappingTests.java index f45158c93..a4a963c71 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/index/SimpleElasticsearchDateMappingTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/index/SimpleElasticsearchDateMappingTests.java @@ -21,6 +21,7 @@ import java.time.LocalDateTime; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.DateFormat; @@ -28,7 +29,6 @@ import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.data.elasticsearch.core.MappingContextBaseTests; -import org.springframework.lang.Nullable; /** * @author Jakub Vavrik diff --git a/src/test/java/org/springframework/data/elasticsearch/core/mapping/EntityCustomConversionIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/mapping/EntityCustomConversionIntegrationTests.java index 9ad3d8337..19da497cd 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/mapping/EntityCustomConversionIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/mapping/EntityCustomConversionIntegrationTests.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Objects; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -39,7 +40,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * Test that a whole entity can be converted using custom conversions diff --git a/src/test/java/org/springframework/data/elasticsearch/core/mapping/FieldNamingStrategyIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/mapping/FieldNamingStrategyIntegrationTests.java index 2ee3e39ab..35964e683 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/mapping/FieldNamingStrategyIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/mapping/FieldNamingStrategyIntegrationTests.java @@ -17,6 +17,7 @@ import static org.assertj.core.api.Assertions.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -32,7 +33,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/mapping/ReactiveFieldNamingStrategyIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/mapping/ReactiveFieldNamingStrategyIntegrationTests.java index 61f839cdf..374a610e1 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/mapping/ReactiveFieldNamingStrategyIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/mapping/ReactiveFieldNamingStrategyIntegrationTests.java @@ -19,6 +19,7 @@ import reactor.test.StepVerifier; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -32,7 +33,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntityTests.java b/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntityTests.java index 858ccaaa5..7c59723d3 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntityTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntityTests.java @@ -19,6 +19,7 @@ import static org.skyscreamer.jsonassert.JSONAssert.*; import org.json.JSONException; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -37,7 +38,6 @@ import org.springframework.data.mapping.model.PropertyNameFieldNamingStrategy; import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.util.TypeInformation; -import org.springframework.lang.Nullable; import org.springframework.util.ReflectionUtils; /** @@ -172,7 +172,7 @@ void shouldErrorIfIndexSortingParametersDoNotHaveTheSameNumberOfArguments() { assertThatThrownBy(() -> elasticsearchConverter.get().getMappingContext() .getRequiredPersistentEntity(SettingsInvalidSortParameterSizes.class).getDefaultSettings()) - .isInstanceOf(IllegalArgumentException.class); + .isInstanceOf(IllegalArgumentException.class); } @Test // #1719, #2158 diff --git a/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentPropertyUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentPropertyUnitTests.java index e723143cf..ac5fab3bd 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentPropertyUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentPropertyUnitTests.java @@ -25,6 +25,7 @@ import java.util.GregorianCalendar; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; @@ -44,7 +45,6 @@ import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.mapping.model.SnakeCaseFieldNamingStrategy; import org.springframework.data.util.TypeInformation; -import org.springframework.lang.Nullable; import org.springframework.util.ReflectionUtils; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/core/paginating/ReactiveSearchAfterIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/paginating/ReactiveSearchAfterIntegrationTests.java index 62951e4c7..fc75eacc9 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/paginating/ReactiveSearchAfterIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/paginating/ReactiveSearchAfterIntegrationTests.java @@ -26,6 +26,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -43,7 +44,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/paginating/SearchAfterIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/paginating/SearchAfterIntegrationTests.java index 674a03162..89d350385 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/paginating/SearchAfterIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/paginating/SearchAfterIntegrationTests.java @@ -23,6 +23,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -41,7 +42,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/paginating/package-info.java b/src/test/java/org/springframework/data/elasticsearch/core/paginating/package-info.java index d242ad337..d82a51c47 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/paginating/package-info.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/paginating/package-info.java @@ -1,6 +1,5 @@ /** * Test for paginating support with search_after and point_in_time API */ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.core.paginating; diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/CriteriaQueryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/CriteriaQueryIntegrationTests.java index 2d91462e1..24acedc9d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/CriteriaQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/CriteriaQueryIntegrationTests.java @@ -20,10 +20,10 @@ import static org.springframework.data.elasticsearch.utils.IdGenerator.*; import static org.springframework.data.elasticsearch.utils.IndexBuilder.*; -import java.lang.Long; import java.util.ArrayList; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -38,7 +38,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Rizwan Idrees @@ -762,12 +761,11 @@ public void setRate(int rate) { this.rate = rate; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/NativeQueryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/NativeQueryIntegrationTests.java index 30a29af12..21f613f16 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/NativeQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/NativeQueryIntegrationTests.java @@ -22,6 +22,7 @@ import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -38,7 +39,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/RepositoryPartQueryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/RepositoryPartQueryIntegrationTests.java index 0a5c963f5..617ea0ef3 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/RepositoryPartQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/RepositoryPartQueryIntegrationTests.java @@ -25,6 +25,7 @@ import org.json.JSONException; import org.junit.jupiter.api.DisplayName; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.annotation.Id; @@ -39,7 +40,6 @@ import org.springframework.data.projection.SpelAwareProxyProjectionFactory; import org.springframework.data.repository.core.support.DefaultRepositoryMetadata; import org.springframework.data.repository.query.ValueExpressionDelegate; -import org.springframework.lang.Nullable; /** * Tests for {@link RepositoryPartQuery}. The tests make sure that queries are built according to the method naming. diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ReactiveScriptedAndRuntimeFieldsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ReactiveScriptedAndRuntimeFieldsIntegrationTests.java index b093d1246..deef102e0 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ReactiveScriptedAndRuntimeFieldsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ReactiveScriptedAndRuntimeFieldsIntegrationTests.java @@ -25,6 +25,7 @@ import java.util.Map; import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -51,7 +52,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ScriptedAndRuntimeFieldsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ScriptedAndRuntimeFieldsIntegrationTests.java index 14cedf76b..20f29ab66 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ScriptedAndRuntimeFieldsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ScriptedAndRuntimeFieldsIntegrationTests.java @@ -22,6 +22,7 @@ import java.util.Map; import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -48,7 +49,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/sort/NestedSortIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/sort/NestedSortIntegrationTests.java index 513923554..f6ee3aaa4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/sort/NestedSortIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/sort/NestedSortIntegrationTests.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -38,7 +39,6 @@ import org.springframework.data.elasticsearch.core.query.StringQuery; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * Integration tests for nested sorts. diff --git a/src/test/java/org/springframework/data/elasticsearch/core/routing/DefaultRoutingResolverUnitTest.java b/src/test/java/org/springframework/data/elasticsearch/core/routing/DefaultRoutingResolverUnitTest.java index 5ad256b03..349f8a3f4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/routing/DefaultRoutingResolverUnitTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/routing/DefaultRoutingResolverUnitTest.java @@ -17,6 +17,7 @@ import static org.assertj.core.api.Assertions.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -29,7 +30,6 @@ import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Routing; import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext; -import org.springframework.lang.Nullable; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; /** @@ -40,7 +40,7 @@ class DefaultRoutingResolverUnitTest { @Autowired private ApplicationContext applicationContext; - @Nullable private RoutingResolver routingResolver; + @Nullable private RoutingResolver routingResolver; @Configuration static class Config { @@ -52,7 +52,7 @@ SpelRouting spelRouting() { @BeforeEach void setUp() { - SimpleElasticsearchMappingContext mappingContext = new SimpleElasticsearchMappingContext(); + SimpleElasticsearchMappingContext mappingContext = new SimpleElasticsearchMappingContext(); mappingContext.setApplicationContext(applicationContext); routingResolver = new DefaultRoutingResolver(mappingContext); @@ -92,7 +92,8 @@ void shouldReturnRoutingFromSpElExpression() { @Document(indexName = "routing-resolver-test") @Routing("theRouting") static class ValidRoutingEntity { - @Nullable @Id private String id; + @Nullable + @Id private String id; @Nullable private String theRouting; public ValidRoutingEntity(@Nullable String id, @Nullable String theRouting) { @@ -122,7 +123,8 @@ public void setTheRouting(@Nullable String theRouting) { @Document(indexName = "routing-resolver-test") @Routing(value = "@spelRouting.getRouting(#entity)") static class ValidSpelRoutingEntity { - @Nullable @Id private String id; + @Nullable + @Id private String id; @Nullable private String theRouting; public ValidSpelRoutingEntity(@Nullable String id, @Nullable String theRouting) { @@ -152,7 +154,8 @@ public void setTheRouting(@Nullable String theRouting) { @Document(indexName = "routing-resolver-test") @Routing("unknownProperty") static class InvalidRoutingEntity { - @Nullable @Id private String id; + @Nullable + @Id private String id; @Nullable private String theRouting; public InvalidRoutingEntity(@Nullable String id, @Nullable String theRouting) { diff --git a/src/test/java/org/springframework/data/elasticsearch/core/routing/ReactiveRoutingTests.java b/src/test/java/org/springframework/data/elasticsearch/core/routing/ReactiveRoutingTests.java index 95345858a..f80111f8d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/routing/ReactiveRoutingTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/routing/ReactiveRoutingTests.java @@ -21,6 +21,7 @@ import java.util.Objects; import java.util.function.Function; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -37,7 +38,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/routing/RoutingIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/routing/RoutingIntegrationTests.java index ddbc4949a..901af03ca 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/routing/RoutingIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/routing/RoutingIntegrationTests.java @@ -25,6 +25,7 @@ import org.apache.commons.codec.digest.MurmurHash3; import org.assertj.core.api.SoftAssertions; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -45,7 +46,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/core/sql/ReactiveSqlOperationsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/sql/ReactiveSqlOperationsIntegrationTests.java index 8d6ddcc4f..a47eba4da 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/sql/ReactiveSqlOperationsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/sql/ReactiveSqlOperationsIntegrationTests.java @@ -21,6 +21,7 @@ import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -34,7 +35,6 @@ import org.springframework.data.elasticsearch.core.query.SqlQuery; import org.springframework.data.elasticsearch.junit.jupiter.ReactiveElasticsearchTemplateConfiguration; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; -import org.springframework.lang.Nullable; import org.springframework.test.context.ContextConfiguration; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/core/sql/SqlOperationsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/sql/SqlOperationsIntegrationTests.java index 6e3ce29c9..b62cc7ee4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/sql/SqlOperationsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/sql/SqlOperationsIntegrationTests.java @@ -18,6 +18,7 @@ import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -32,7 +33,6 @@ import org.springframework.data.elasticsearch.core.query.SqlQuery; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; -import org.springframework.lang.Nullable; import org.springframework.test.context.ContextConfiguration; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionIntegrationTests.java index fc52f8c5b..e167a8314 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionIntegrationTests.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -36,7 +37,6 @@ import org.springframework.data.elasticsearch.core.suggest.response.Suggest; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Rizwan Idrees diff --git a/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionWithContextsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionWithContextsIntegrationTests.java index 148b7183b..24e495af4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionWithContextsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/suggest/CompletionWithContextsIntegrationTests.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -38,7 +39,6 @@ import org.springframework.data.elasticsearch.core.suggest.response.Suggest; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Robert Gruendler diff --git a/src/test/java/org/springframework/data/elasticsearch/core/suggest/ReactiveSuggestIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/suggest/ReactiveSuggestIntegrationTests.java index 8a629516c..69f4fc8a4 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/suggest/ReactiveSuggestIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/suggest/ReactiveSuggestIntegrationTests.java @@ -24,6 +24,7 @@ import java.util.Arrays; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -40,7 +41,6 @@ import org.springframework.data.elasticsearch.core.suggest.response.Suggest; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/immutable/ImmutableRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/immutable/ImmutableRepositoryIntegrationTests.java index a6407d15e..1236b8897 100644 --- a/src/test/java/org/springframework/data/elasticsearch/immutable/ImmutableRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/immutable/ImmutableRepositoryIntegrationTests.java @@ -19,6 +19,7 @@ import java.util.Optional; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -30,7 +31,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.repository.CrudRepository; -import org.springframework.lang.Nullable; /** * @author Young Gu diff --git a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ClusterConnection.java b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ClusterConnection.java index 8ac75d000..30112fa26 100644 --- a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ClusterConnection.java +++ b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ClusterConnection.java @@ -26,10 +26,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.extension.ExtensionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.lang.Nullable; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.utility.DockerImageName; @@ -195,7 +195,6 @@ private Map testcontainersProperties(String propertiesFile) { @Override public void close() { - } private static class SpringDataElasticsearchContainer extends ElasticsearchContainer { diff --git a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ClusterConnectionInfo.java b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ClusterConnectionInfo.java index 76c837783..1a3266a9f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ClusterConnectionInfo.java +++ b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/ClusterConnectionInfo.java @@ -15,7 +15,7 @@ */ package org.springframework.data.elasticsearch.junit.jupiter; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; import org.testcontainers.elasticsearch.ElasticsearchContainer; diff --git a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/package-info.java b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/package-info.java index e6e754267..bf18bbf1e 100644 --- a/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/package-info.java +++ b/src/test/java/org/springframework/data/elasticsearch/junit/jupiter/package-info.java @@ -1,5 +1,5 @@ /** * interfaces, annotations and classes related to JUnit 5 test handling. */ -@org.springframework.lang.NonNullApi +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.junit.jupiter; diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryClient.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryClient.java index e6b5536b2..ad7f72ec1 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryClient.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryClient.java @@ -17,7 +17,7 @@ import jakarta.inject.Inject; -import org.springframework.lang.Nullable; +import org.jspecify.annotations.Nullable; /** * @author Mohsin Husen diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryTests.java index a0b7cab66..f0236249f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/CdiRepositoryTests.java @@ -17,6 +17,9 @@ import static org.assertj.core.api.Assertions.*; +import jakarta.enterprise.inject.se.SeContainer; +import jakarta.enterprise.inject.se.SeContainerInitializer; + import java.util.Collection; import java.util.Date; import java.util.HashMap; @@ -24,9 +27,7 @@ import java.util.Map; import java.util.Optional; -import jakarta.enterprise.inject.se.SeContainer; -import jakarta.enterprise.inject.se.SeContainerInitializer; - +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -40,7 +41,6 @@ import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.junit.jupiter.IntegrationTest; -import org.springframework.lang.Nullable; /** * @author Mohsin Husen diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/package-info.java b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/package-info.java index 00c6f2bb9..065343171 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/package-info.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/cdi/package-info.java @@ -1,3 +1,2 @@ -@org.springframework.lang.NonNullApi -@org.springframework.lang.NonNullFields +@org.jspecify.annotations.NullMarked package org.springframework.data.elasticsearch.repositories.cdi; diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/complex/custommethod/autowiring/ComplexCustomMethodRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/complex/custommethod/autowiring/ComplexCustomMethodRepositoryIntegrationTests.java index 856efdf0a..435c018c8 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/complex/custommethod/autowiring/ComplexCustomMethodRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/complex/custommethod/autowiring/ComplexCustomMethodRepositoryIntegrationTests.java @@ -18,6 +18,7 @@ import static org.assertj.core.api.Assertions.*; import static org.springframework.data.elasticsearch.annotations.FieldType.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -29,7 +30,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Artur Konczak diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/complex/custommethod/manualwiring/ComplexCustomMethodRepositoryManualWiringIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/complex/custommethod/manualwiring/ComplexCustomMethodRepositoryManualWiringIntegrationTests.java index 5f5490b49..4f74e728a 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/complex/custommethod/manualwiring/ComplexCustomMethodRepositoryManualWiringIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/complex/custommethod/manualwiring/ComplexCustomMethodRepositoryManualWiringIntegrationTests.java @@ -18,6 +18,7 @@ import static org.assertj.core.api.Assertions.*; import static org.springframework.data.elasticsearch.annotations.FieldType.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -29,7 +30,6 @@ import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Artur Konczak diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/custommethod/CustomMethodRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/custommethod/CustomMethodRepositoryIntegrationTests.java index 1b19b0cbe..bdbc8b775 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/custommethod/CustomMethodRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/custommethod/CustomMethodRepositoryIntegrationTests.java @@ -29,6 +29,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -66,7 +67,6 @@ import org.springframework.data.geo.Metrics; import org.springframework.data.geo.Point; import org.springframework.data.repository.query.Param; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** @@ -2534,12 +2534,11 @@ public void setLocation(@Nullable GeoPoint location) { this.location = location; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } } diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/geo/GeoRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/geo/GeoRepositoryIntegrationTests.java index 4ab491863..c876044d8 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/geo/GeoRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/geo/GeoRepositoryIntegrationTests.java @@ -20,6 +20,7 @@ import java.util.Locale; import java.util.Optional; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -38,7 +39,6 @@ import org.springframework.data.geo.Circle; import org.springframework.data.geo.Point; import org.springframework.data.geo.Polygon; -import org.springframework.lang.Nullable; /** * @author Mark Paluch diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/knn/KnnSearchIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/knn/KnnSearchIntegrationTests.java index 2c7027c34..12af3ecce 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/knn/KnnSearchIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/knn/KnnSearchIntegrationTests.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.UUID; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -43,7 +44,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Haibo Liu diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/nestedobject/InnerObjectIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/nestedobject/InnerObjectIntegrationTests.java index 90f3a2a10..8c744e28f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/nestedobject/InnerObjectIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/nestedobject/InnerObjectIntegrationTests.java @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -38,7 +39,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Mohsin Husen diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/synonym/SynonymRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/synonym/SynonymRepositoryIntegrationTests.java index ea418a2be..d28685a16 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/synonym/SynonymRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/synonym/SynonymRepositoryIntegrationTests.java @@ -17,6 +17,7 @@ import static org.assertj.core.api.Assertions.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -34,7 +35,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * SynonymRepositoryIntegrationTests diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/uuidkeyed/UUIDElasticsearchRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repositories/uuidkeyed/UUIDElasticsearchRepositoryIntegrationTests.java index 00dae64e2..cb279b7ee 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/uuidkeyed/UUIDElasticsearchRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/uuidkeyed/UUIDElasticsearchRepositoryIntegrationTests.java @@ -24,6 +24,7 @@ import java.util.Optional; import java.util.UUID; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -38,13 +39,11 @@ import org.springframework.data.elasticsearch.annotations.FieldType; import org.springframework.data.elasticsearch.annotations.ScriptedField; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.IndexOperations; import org.springframework.data.elasticsearch.core.geo.GeoPoint; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Gad Akuka @@ -61,12 +60,12 @@ public abstract class UUIDElasticsearchRepositoryIntegrationTests { @Autowired private SampleUUIDKeyedElasticsearchRepository repository; @Autowired ElasticsearchOperations operations; - @Autowired IndexNameProvider indexNameProvider; + @Autowired IndexNameProvider indexNameProvider; @BeforeEach public void before() { indexNameProvider.increment(); - operations.indexOps(SampleEntityUUIDKeyed.class).createWithMapping(); + operations.indexOps(SampleEntityUUIDKeyed.class).createWithMapping(); } @Test diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/config/ReactiveElasticsearchRepositoriesRegistrarTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/config/ReactiveElasticsearchRepositoriesRegistrarTests.java index 79b43c3e6..67066c220 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/config/ReactiveElasticsearchRepositoriesRegistrarTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/config/ReactiveElasticsearchRepositoriesRegistrarTests.java @@ -18,6 +18,7 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*; import org.assertj.core.api.Assertions; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -30,7 +31,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.ReactiveElasticsearchTemplateConfiguration; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; -import org.springframework.lang.Nullable; import org.springframework.test.context.ContextConfiguration; /** diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethodUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethodUnitTests.java index abf2f4157..00ec7a663 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethodUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/ElasticsearchQueryMethodUnitTests.java @@ -20,6 +20,7 @@ import java.lang.reflect.Method; import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -32,7 +33,6 @@ import org.springframework.data.projection.SpelAwareProxyProjectionFactory; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.support.DefaultRepositoryMetadata; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveElasticsearchQueryMethodUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveElasticsearchQueryMethodUnitTests.java index 84adf695d..460ede866 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveElasticsearchQueryMethodUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveElasticsearchQueryMethodUnitTests.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -45,7 +46,6 @@ import org.springframework.data.projection.SpelAwareProxyProjectionFactory; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.support.DefaultRepositoryMetadata; -import org.springframework.lang.Nullable; /** * @author Christoph Strobl @@ -77,7 +77,7 @@ public void rejectsNullMappingContext() throws Exception { assertThatThrownBy(() -> new ReactiveElasticsearchQueryMethod(method, new DefaultRepositoryMetadata(PersonRepository.class), new SpelAwareProxyProjectionFactory(), null)) - .isInstanceOf(IllegalArgumentException.class); + .isInstanceOf(IllegalArgumentException.class); } @Test // DATAES-519 diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositorySearchTemplateQueryUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositorySearchTemplateQueryUnitTests.java index 9572e8e3b..9e6e89c19 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositorySearchTemplateQueryUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositorySearchTemplateQueryUnitTests.java @@ -19,6 +19,7 @@ import java.util.Arrays; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; @@ -29,7 +30,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.repository.query.ValueExpressionDelegate; -import org.springframework.lang.Nullable; public class ReactiveRepositorySearchTemplateQueryUnitTests extends ReactiveRepositoryQueryUnitTestsBase { diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQueryUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQueryUnitTests.java index 345f9816e..c6b93802b 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQueryUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/ReactiveRepositoryStringQueryUnitTests.java @@ -17,7 +17,6 @@ import static org.assertj.core.api.Assertions.*; -import org.springframework.data.repository.query.ValueExpressionDelegate; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -28,6 +27,7 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -49,7 +49,7 @@ import org.springframework.data.elasticsearch.core.query.StringQuery; import org.springframework.data.elasticsearch.repositories.custommethod.QueryParameter; import org.springframework.data.repository.Repository; -import org.springframework.lang.Nullable; +import org.springframework.data.repository.query.ValueExpressionDelegate; /** * @author Christoph Strobl diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/RepositorySearchTemplateQueryUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/RepositorySearchTemplateQueryUnitTests.java index b3c346bf2..6f0d996cf 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/RepositorySearchTemplateQueryUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/RepositorySearchTemplateQueryUnitTests.java @@ -19,6 +19,7 @@ import java.util.Arrays; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.data.annotation.Id; @@ -29,7 +30,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.repository.query.ValueExpressionDelegate; -import org.springframework.lang.Nullable; public class RepositorySearchTemplateQueryUnitTests extends RepositoryQueryUnitTestsBase { diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/RepositoryStringQueryUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/RepositoryStringQueryUnitTests.java index 68c36d7ca..bb4595e47 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/RepositoryStringQueryUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/RepositoryStringQueryUnitTests.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; @@ -44,7 +45,6 @@ import org.springframework.data.elasticsearch.repositories.custommethod.QueryParameter; import org.springframework.data.repository.Repository; import org.springframework.data.repository.query.ValueExpressionDelegate; -import org.springframework.lang.Nullable; /** * @author Christoph Strobl diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/keywords/QueryKeywordsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/keywords/QueryKeywordsIntegrationTests.java index 442d49ea2..32b92dc69 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/keywords/QueryKeywordsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/keywords/QueryKeywordsIntegrationTests.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.stream.Collectors; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -37,7 +38,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * base class for query keyword tests. Implemented by subclasses using ElasticsearchClient and ElasticsearchRestClient diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/keywords/ReactiveQueryKeywordsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/keywords/ReactiveQueryKeywordsIntegrationTests.java index a2a4c7443..e5d05446d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/keywords/ReactiveQueryKeywordsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/keywords/ReactiveQueryKeywordsIntegrationTests.java @@ -22,6 +22,7 @@ import reactor.core.publisher.Mono; import reactor.test.StepVerifier; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -36,7 +37,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @author Peter-Josef Meisch diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/valueconverter/ReactiveValueConverterIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/valueconverter/ReactiveValueConverterIntegrationTests.java index 3d8044844..ad36038f7 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/valueconverter/ReactiveValueConverterIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/valueconverter/ReactiveValueConverterIntegrationTests.java @@ -15,21 +15,10 @@ */ package org.springframework.data.elasticsearch.repository.query.valueconverter; -import static org.assertj.core.api.Assertions.*; -import static org.springframework.data.elasticsearch.annotations.FieldType.*; - -import org.springframework.data.elasticsearch.annotations.FieldType; -import org.springframework.data.elasticsearch.annotations.Query; -import org.springframework.data.elasticsearch.annotations.ValueConverter; -import org.springframework.data.elasticsearch.core.SearchHits; -import org.springframework.data.elasticsearch.core.mapping.PropertyValueConverter; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import java.lang.Boolean; - +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -38,13 +27,16 @@ import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; +import org.springframework.data.elasticsearch.annotations.Query; +import org.springframework.data.elasticsearch.annotations.ValueConverter; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.core.SearchHit; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; +import org.springframework.data.elasticsearch.core.mapping.PropertyValueConverter; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * Integration tests to check that {@link org.springframework.data.elasticsearch.annotations.ValueConverter} annotated @@ -73,7 +65,6 @@ void cleanup() { operations.indexOps(IndexCoordinates.of(indexNameProvider.getPrefix() + '*')).delete().block(); } - @Test // #2338 @DisplayName("should apply ValueConverter") void shouldApplyValueConverter() { @@ -84,14 +75,14 @@ void shouldApplyValueConverter() { operations.save(entity).block(); repository.queryByText("text-answer") // - .as(StepVerifier::create) // - .expectNextCount(1) // - .verifyComplete(); + .as(StepVerifier::create) // + .expectNextCount(1) // + .verifyComplete(); repository.findByText("answer") // - .as(StepVerifier::create) // - .expectNextCount(1) // - .verifyComplete(); + .as(StepVerifier::create) // + .expectNextCount(1) // + .verifyComplete(); } interface EntityRepository extends ReactiveElasticsearchRepository { diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/query/valueconverter/ValueConverterIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/query/valueconverter/ValueConverterIntegrationTests.java index 6fdbfc75b..f4054676d 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/query/valueconverter/ValueConverterIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/query/valueconverter/ValueConverterIntegrationTests.java @@ -17,6 +17,7 @@ import static org.assertj.core.api.Assertions.*; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Order; @@ -35,7 +36,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * Integration tests to check that {@link org.springframework.data.elasticsearch.annotations.ValueConverter} annotated diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryIntegrationTests.java index 7c037b823..d4576de5f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/ElasticsearchRepositoryIntegrationTests.java @@ -28,6 +28,7 @@ import java.util.stream.Collectors; import org.assertj.core.api.Assertions; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -47,7 +48,6 @@ import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.util.StreamUtils; -import org.springframework.lang.Nullable; /** * @author Rizwan Idrees @@ -712,12 +712,11 @@ public void setAvailable(boolean available) { this.available = available; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/ReactiveRepositoryQueryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/ReactiveRepositoryQueryIntegrationTests.java index 674db9bfa..f5729f347 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/support/ReactiveRepositoryQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/ReactiveRepositoryQueryIntegrationTests.java @@ -22,6 +22,7 @@ import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -38,7 +39,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; /** * @since 5.5 diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/RepositoryQueryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/RepositoryQueryIntegrationTests.java index 4787d7773..39db45c18 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/support/RepositoryQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/RepositoryQueryIntegrationTests.java @@ -19,6 +19,7 @@ import java.util.List; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -35,7 +36,6 @@ import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; -import org.springframework.lang.Nullable; @SpringIntegrationTest abstract class RepositoryQueryIntegrationTests { diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepositoryIntegrationTests.java index 17fddb928..6141870f6 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleReactiveElasticsearchRepositoryIntegrationTests.java @@ -33,6 +33,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -63,7 +64,6 @@ import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.repository.query.Param; import org.springframework.data.repository.reactive.ReactiveCrudRepository; -import org.springframework.lang.Nullable; /** * @author Christoph Strobl @@ -1378,12 +1378,11 @@ public void setAvailable(boolean available) { this.available = available; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/querybyexample/QueryByExampleElasticsearchExecutorIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/querybyexample/QueryByExampleElasticsearchExecutorIntegrationTests.java index 9bace28ed..e8c89e35c 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/support/querybyexample/QueryByExampleElasticsearchExecutorIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/querybyexample/QueryByExampleElasticsearchExecutorIntegrationTests.java @@ -23,6 +23,7 @@ import java.util.Optional; import org.assertj.core.api.AbstractThrowableAssert; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -43,7 +44,6 @@ import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.repository.query.QueryByExampleExecutor; -import org.springframework.lang.Nullable; /** * @author Ezequiel Antúnez Camacho @@ -526,12 +526,11 @@ public void setSampleNestedEntity(SampleNestedEntity sampleNestedEntity) { this.sampleNestedEntity = sampleNestedEntity; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/querybyexample/ReactiveQueryByExampleElasticsearchExecutorIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/querybyexample/ReactiveQueryByExampleElasticsearchExecutorIntegrationTests.java index 7593d5c25..3a0948224 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repository/support/querybyexample/ReactiveQueryByExampleElasticsearchExecutorIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/querybyexample/ReactiveQueryByExampleElasticsearchExecutorIntegrationTests.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Objects; +import org.jspecify.annotations.Nullable; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -43,7 +44,6 @@ import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; import org.springframework.data.repository.query.ReactiveQueryByExampleExecutor; -import org.springframework.lang.Nullable; /** * @author Ezequiel Antúnez Camacho @@ -483,9 +483,9 @@ static class SampleEntity { @Field(type = FieldType.Keyword, store = true) private String message; @Nullable private Integer rate; @Nullable private Boolean available; - @Nullable + @Field(type = FieldType.Nested, store = true, - fielddata = true) private SampleEntity.SampleNestedEntity sampleNestedEntity; + fielddata = true) private SampleEntity.@Nullable SampleNestedEntity sampleNestedEntity; @Nullable @Version private Long version; @@ -534,8 +534,7 @@ public void setAvailable(Boolean available) { this.available = available; } - @Nullable - public SampleEntity.SampleNestedEntity getSampleNestedEntity() { + public SampleEntity.@Nullable SampleNestedEntity getSampleNestedEntity() { return sampleNestedEntity; } @@ -543,12 +542,11 @@ public void setSampleNestedEntity(SampleEntity.SampleNestedEntity sampleNestedEn this.sampleNestedEntity = sampleNestedEntity; } - @Nullable - public java.lang.Long getVersion() { + public java.lang.@Nullable Long getVersion() { return version; } - public void setVersion(@Nullable java.lang.Long version) { + public void setVersion(java.lang.@Nullable Long version) { this.version = version; } From e81810c0d7f576ede999ff7e0f54d2b0452d1d89 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 22 Apr 2025 14:29:21 +0200 Subject: [PATCH 11/25] Prepare 6.0 M2 (2025.1.0). See #3047 --- pom.xml | 20 ++++---------------- src/main/resources/notice.txt | 3 ++- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 924646d62..44e911b65 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.springframework.data.build spring-data-parent - 4.0.0-SNAPSHOT + 4.0.0-M2 Spring Data Elasticsearch @@ -18,7 +18,7 @@ https://github.com/spring-projects/spring-data-elasticsearch - 4.0.0-SNAPSHOT + 4.0.0-M2 8.18.1 @@ -462,20 +462,8 @@ - - spring-snapshot - https://repo.spring.io/snapshot - - true - - - false - - - - spring-milestone - https://repo.spring.io/milestone - + + diff --git a/src/main/resources/notice.txt b/src/main/resources/notice.txt index c9ad4c05b..0ca3a372e 100644 --- a/src/main/resources/notice.txt +++ b/src/main/resources/notice.txt @@ -1,4 +1,4 @@ -Spring Data Elasticsearch 6.0 M1 (2025.1.0) +Spring Data Elasticsearch 6.0 M2 (2025.1.0) Copyright (c) [2013-2022] Pivotal Software, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). @@ -8,3 +8,4 @@ This product may include a number of subcomponents with separate copyright notices and license terms. Your use of the source code for the these subcomponents is subject to the terms and conditions of the subcomponent's license, as noted in the LICENSE file. + From af13fe0247a8f37ce13fda14e928e21f97304ee1 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 22 Apr 2025 14:29:39 +0200 Subject: [PATCH 12/25] Release version 6.0 M2 (2025.1.0). See #3047 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 44e911b65..d1b63a796 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-elasticsearch - 6.0.0-SNAPSHOT + 6.0.0-M2 org.springframework.data.build From eb42312ebecae28dbe2377bbe3459ced8e709769 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 22 Apr 2025 14:32:03 +0200 Subject: [PATCH 13/25] Prepare next development iteration. See #3047 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d1b63a796..44e911b65 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-elasticsearch - 6.0.0-M2 + 6.0.0-SNAPSHOT org.springframework.data.build From 2678cdc7b62aa72cf98cd63803a0e7e4eab6da07 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 22 Apr 2025 14:32:04 +0200 Subject: [PATCH 14/25] After release cleanups. See #3047 --- pom.xml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 44e911b65..924646d62 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.springframework.data.build spring-data-parent - 4.0.0-M2 + 4.0.0-SNAPSHOT Spring Data Elasticsearch @@ -18,7 +18,7 @@ https://github.com/spring-projects/spring-data-elasticsearch - 4.0.0-M2 + 4.0.0-SNAPSHOT 8.18.1 @@ -462,8 +462,20 @@ - - + + spring-snapshot + https://repo.spring.io/snapshot + + true + + + false + + + + spring-milestone + https://repo.spring.io/milestone + From a8557a36dcaa0950e420b1fc6bfee7a6140d5c9e Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 12 May 2025 08:54:46 +0200 Subject: [PATCH 15/25] Update CI Properties. See #3097 --- ci/pipeline.properties | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ci/pipeline.properties b/ci/pipeline.properties index 8dd2295ac..cde4a8e88 100644 --- a/ci/pipeline.properties +++ b/ci/pipeline.properties @@ -1,5 +1,5 @@ # Java versions -java.main.tag=17.0.15_6-jdk-focal +java.main.tag=24.0.1_9-jdk-noble java.next.tag=24.0.1_9-jdk-noble # Docker container images - standard @@ -14,7 +14,6 @@ docker.mongodb.8.0.version=8.0.9 # Supported versions of Redis docker.redis.6.version=6.2.13 docker.redis.7.version=7.2.4 -docker.valkey.8.version=8.1.1 # Docker environment settings docker.java.inside.basic=-v $HOME:/tmp/jenkins-home From 897cb0a957ab33fb5e011969f19155bcf97be84e Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 12 May 2025 12:05:42 +0200 Subject: [PATCH 16/25] Add optional Querydsl dependency. Closes #3107 --- pom.xml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pom.xml b/pom.xml index 924646d62..5a5bbef47 100644 --- a/pom.xml +++ b/pom.xml @@ -144,6 +144,13 @@ + + com.querydsl + querydsl-core + ${querydsl} + true + + com.fasterxml.jackson.core From 06704d974d6ffa15da779a1e60029bdd2e43bb5a Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 16 May 2025 14:15:56 +0200 Subject: [PATCH 17/25] Prepare 6.0 M3 (2025.1.0). See #3097 --- pom.xml | 20 ++++---------------- src/main/resources/notice.txt | 3 ++- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index 5a5bbef47..b1e596204 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.springframework.data.build spring-data-parent - 4.0.0-SNAPSHOT + 4.0.0-M3 Spring Data Elasticsearch @@ -18,7 +18,7 @@ https://github.com/spring-projects/spring-data-elasticsearch - 4.0.0-SNAPSHOT + 4.0.0-M3 8.18.1 @@ -469,20 +469,8 @@ - - spring-snapshot - https://repo.spring.io/snapshot - - true - - - false - - - - spring-milestone - https://repo.spring.io/milestone - + + diff --git a/src/main/resources/notice.txt b/src/main/resources/notice.txt index 0ca3a372e..1966e7743 100644 --- a/src/main/resources/notice.txt +++ b/src/main/resources/notice.txt @@ -1,4 +1,4 @@ -Spring Data Elasticsearch 6.0 M2 (2025.1.0) +Spring Data Elasticsearch 6.0 M3 (2025.1.0) Copyright (c) [2013-2022] Pivotal Software, Inc. This product is licensed to you under the Apache License, Version 2.0 (the "License"). @@ -9,3 +9,4 @@ separate copyright notices and license terms. Your use of the source code for the these subcomponents is subject to the terms and conditions of the subcomponent's license, as noted in the LICENSE file. + From 77ba620fc6d1881ad72af61cadabd269cc4e0a26 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 16 May 2025 14:16:18 +0200 Subject: [PATCH 18/25] Release version 6.0 M3 (2025.1.0). See #3097 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b1e596204..5c527ecf2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-elasticsearch - 6.0.0-SNAPSHOT + 6.0.0-M3 org.springframework.data.build From 62fcbd44fafd5149c8a0f6263f7a91d4f734867d Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 16 May 2025 14:18:47 +0200 Subject: [PATCH 19/25] Prepare next development iteration. See #3097 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5c527ecf2..b1e596204 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-elasticsearch - 6.0.0-M3 + 6.0.0-SNAPSHOT org.springframework.data.build From 923787c2d15a475bcdc6baa88a121a1a5443c91b Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 16 May 2025 14:18:48 +0200 Subject: [PATCH 20/25] After release cleanups. See #3097 --- pom.xml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index b1e596204..5a5bbef47 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ org.springframework.data.build spring-data-parent - 4.0.0-M3 + 4.0.0-SNAPSHOT Spring Data Elasticsearch @@ -18,7 +18,7 @@ https://github.com/spring-projects/spring-data-elasticsearch - 4.0.0-M3 + 4.0.0-SNAPSHOT 8.18.1 @@ -469,8 +469,20 @@ - - + + spring-snapshot + https://repo.spring.io/snapshot + + true + + + false + + + + spring-milestone + https://repo.spring.io/milestone + From 62681335063f0a35042ba25b6f6656a316942ca8 Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Sat, 24 May 2025 14:58:04 +0200 Subject: [PATCH 21/25] Update versions documentation Signed-off-by: Peter-Josef Meisch --- .../antora/modules/ROOT/pages/elasticsearch/versions.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc index b626405a8..23990e2a7 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc @@ -6,8 +6,8 @@ The following table shows the Elasticsearch and Spring versions that are used by [cols="^,^,^,^",options="header"] |=== | Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework -| 2025.1 (in development) | 6.0.x | 8.17.2 | 6.2.x -| 2025.0 | 5.5.x | 8.17.2 | 6.2.x +| 2025.1 (in development) | 6.0.x | 8.18.1 | 7.0.x +| 2025.0 | 5.5.x | 8.18.1 | 6.2.x | 2024.1 | 5.4.x | 8.15.5 | 6.1.x | 2024.0 | 5.3.xfootnote:oom[Out of maintenance] | 8.13.4 | 6.1.x | 2023.1 (Vaughan) | 5.2.xfootnote:oom[] | 8.11.1 | 6.1.x From 158f5fc342a0933a09ad2beacb17c5b0540e861f Mon Sep 17 00:00:00 2001 From: Laura Trotta <153528055+l-trotta@users.noreply.github.com> Date: Thu, 29 May 2025 15:56:35 +0200 Subject: [PATCH 22/25] es java client major update. Original Pull Request #3116 Closes #3110 Signed-off-by: Laura Trotta --- pom.xml | 2 +- .../client/elc/DocumentAdapters.java | 2 +- .../ReactiveElasticsearchIndicesClient.java | 8 --- .../client/elc/RequestConverter.java | 63 ++++++++++--------- .../client/elc/ResponseConverter.java | 8 +-- .../data/elasticsearch/core/SearchHit.java | 8 +-- .../core/document/SearchDocument.java | 2 +- .../core/document/SearchDocumentAdapter.java | 6 +- .../elasticsearch/core/query/ScriptData.java | 24 ++----- .../elasticsearch/core/query/ScriptType.java | 27 -------- .../elasticsearch/core/query/UpdateQuery.java | 19 ++---- .../core/reindex/ReindexRequest.java | 7 +-- .../elasticsearch/core/script/Script.java | 4 -- .../client/elc/DocumentAdaptersUnitTests.java | 9 +-- .../ElasticsearchELCIntegrationTests.java | 3 +- .../core/ElasticsearchIntegrationTests.java | 1 - ...iptedAndRuntimeFieldsIntegrationTests.java | 2 - ...iptedAndRuntimeFieldsIntegrationTests.java | 2 - .../testcontainers-elasticsearch.properties | 2 +- 19 files changed, 68 insertions(+), 131 deletions(-) delete mode 100644 src/main/java/org/springframework/data/elasticsearch/core/query/ScriptType.java diff --git a/pom.xml b/pom.xml index 5a5bbef47..4396ce5a6 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 4.0.0-SNAPSHOT - 8.18.1 + 9.0.1 0.19.0 2.23.1 diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java index ccb937bf7..ea38dfe58 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java @@ -83,7 +83,7 @@ public static SearchDocument from(Hit hit, JsonpMapper jsonpMapper) { Explanation explanation = from(hit.explanation()); - List matchedQueries = hit.matchedQueries(); + Map matchedQueries = hit.matchedQueries(); Function, EntityAsMap> fromFields = fields -> { StringBuilder sb = new StringBuilder("{"); diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchIndicesClient.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchIndicesClient.java index e5f6df392..3ebde9776 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchIndicesClient.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ReactiveElasticsearchIndicesClient.java @@ -539,14 +539,6 @@ public Mono stats() { return stats(builder -> builder); } - public Mono unfreeze(UnfreezeRequest request) { - return Mono.fromFuture(transport.performRequestAsync(request, UnfreezeRequest._ENDPOINT, transportOptions)); - } - - public Mono unfreeze(Function> fn) { - return unfreeze(fn.apply(new UnfreezeRequest.Builder()).build()); - } - public Mono updateAliases(UpdateAliasesRequest request) { return Mono.fromFuture(transport.performRequestAsync(request, UpdateAliasesRequest._ENDPOINT, transportOptions)); } diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java index a8d8beabe..e1a6c0927 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/RequestConverter.java @@ -42,10 +42,10 @@ import co.elastic.clients.elasticsearch.core.bulk.IndexOperation; import co.elastic.clients.elasticsearch.core.bulk.UpdateOperation; import co.elastic.clients.elasticsearch.core.mget.MultiGetOperation; -import co.elastic.clients.elasticsearch.core.msearch.MultisearchBody; import co.elastic.clients.elasticsearch.core.msearch.MultisearchHeader; import co.elastic.clients.elasticsearch.core.search.Highlight; import co.elastic.clients.elasticsearch.core.search.Rescore; +import co.elastic.clients.elasticsearch.core.search.SearchRequestBody; import co.elastic.clients.elasticsearch.core.search.SourceConfig; import co.elastic.clients.elasticsearch.indices.*; import co.elastic.clients.elasticsearch.indices.ExistsIndexTemplateRequest; @@ -751,11 +751,10 @@ private CreateOperation bulkCreateOperation(IndexQuery query, IndexCoordinate } return co.elastic.clients.elasticsearch._types.Script.of(sb -> { sb.lang(scriptData.language()) - .params(params); - if (scriptData.type() == ScriptType.INLINE) { - sb.source(scriptData.script()); - } else if (scriptData.type() == ScriptType.STORED) { - sb.id(scriptData.script()); + .params(params) + .id(scriptData.scriptName()); + if (scriptData.script() != null){ + sb.source(s -> s.scriptString(scriptData.script())); } return sb; }); @@ -927,9 +926,13 @@ public co.elastic.clients.elasticsearch.core.ReindexRequest reindex(ReindexReque ReindexRequest.Script script = reindexRequest.getScript(); if (script != null) { - builder.script(sb -> sb - .lang(script.getLang()) - .source(script.getSource())); + builder.script(sb -> { + if (script.getSource() != null){ + sb.source(s -> s.scriptString(script.getSource())); + } + sb.lang(script.getLang()); + return sb; + }); } builder.timeout(time(reindexRequest.getTimeout())) // @@ -1086,12 +1089,11 @@ public DeleteByQueryRequest documentDeleteByQueryRequest(DeleteQuery query, @Nul uqb.script(sb -> { sb.lang(query.getLang()).params(params); - - if (query.getScriptType() == ScriptType.INLINE) { - sb.source(query.getScript()); // - } else if (query.getScriptType() == ScriptType.STORED) { - sb.id(query.getScript()); + if (query.getScript() != null){ + sb.source(s -> s.scriptString(query.getScript())); } + sb.id(query.getId()); + return sb; }); } @@ -1254,11 +1256,11 @@ public MsearchTemplateRequest searchMsearchTemplateRequest( mtrb.searchTemplates(stb -> stb .header(msearchHeaderBuilder(query, param.index(), routing)) .body(bb -> { - bb // - .explain(query.getExplain()) // - .id(query.getId()) // - .source(query.getSource()) // - ; + bb.explain(query.getExplain()) // + .id(query.getId()); // + if (query.getSource() != null){ + bb.source(s -> s.scriptString(query.getSource())); + } if (!CollectionUtils.isEmpty(query.getParams())) { Map params = getTemplateParams(query.getParams().entrySet()); @@ -1349,7 +1351,9 @@ public MsearchRequest searchMsearchRequest( if (script != null) { rfb.script(s -> { - s.source(script); + if (script != null) { + s.source(so -> so.scriptString(script)); + } if (runtimeField.getParams() != null) { s.params(TypeUtils.paramsMap(runtimeField.getParams())); @@ -1551,7 +1555,9 @@ private void prepareSearchRequest(Query query, @Nullable String routing, @Nu String script = runtimeField.getScript(); if (script != null) { rfb.script(s -> { - s.source(script); + if (script != null) { + s.source(so -> so.scriptString(script)); + } if (runtimeField.getParams() != null) { s.params(TypeUtils.paramsMap(runtimeField.getParams())); @@ -1648,7 +1654,7 @@ private void addHighlight(Query query, SearchRequest.Builder builder) { builder.highlight(highlight); } - private void addHighlight(Query query, MultisearchBody.Builder builder) { + private void addHighlight(Query query, SearchRequestBody.Builder builder) { Highlight highlight = query.getHighlightQuery() .map(highlightQuery -> new HighlightQueryBuilder(elasticsearchConverter.getMappingContext(), this) @@ -1772,7 +1778,7 @@ private void prepareNativeSearch(NativeQuery query, SearchRequest.Builder builde } @SuppressWarnings("DuplicatedCode") - private void prepareNativeSearch(NativeQuery query, MultisearchBody.Builder builder) { + private void prepareNativeSearch(NativeQuery query, SearchRequestBody.Builder builder) { builder // .suggest(query.getSuggester()) // @@ -1891,10 +1897,11 @@ public SearchTemplateRequest searchTemplate(SearchTemplateQuery query, @Nullable .id(query.getId()) // .index(Arrays.asList(index.getIndexNames())) // .preference(query.getPreference()) // - .searchType(searchType(query.getSearchType())) // - .source(query.getSource()) // - ; + .searchType(searchType(query.getSearchType())); // + if (query.getSource() != null) { + builder.source(so -> so.scriptString(query.getSource())); + } if (query.getRoute() != null) { builder.routing(query.getRoute()); } else if (StringUtils.hasText(routing)) { @@ -1936,8 +1943,8 @@ public PutScriptRequest scriptPut(Script script) { return PutScriptRequest.of(b -> b // .id(script.id()) // .script(sb -> sb // - .lang(script.language()) // - .source(script.source()))); + .lang(script.language()) // + .source(s -> s.scriptString(script.source())))); } public GetScriptRequest scriptGet(String name) { diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java index 7024584f3..771b1104a 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java @@ -191,7 +191,7 @@ public Document indicesGetMapping(GetMappingResponse getMappingResponse, IndexCo Assert.notNull(getMappingResponse, "getMappingResponse must not be null"); Assert.notNull(indexCoordinates, "indexCoordinates must not be null"); - Map mappings = getMappingResponse.result(); + Map mappings = getMappingResponse.mappings(); if (mappings == null || mappings.isEmpty()) { return Document.create(); @@ -219,7 +219,7 @@ public List indicesGetIndexInformations(GetIndexResponse getIn List indexInformationList = new ArrayList<>(); - getIndexResponse.result().forEach((indexName, indexState) -> { + getIndexResponse.indices().forEach((indexName, indexState) -> { Settings settings = indexState.settings() != null ? Settings.parse(toJson(indexState.settings(), jsonpMapper)) : new Settings(); Document mappings = indexState.mappings() != null ? Document.parse(toJson(indexState.mappings(), jsonpMapper)) @@ -239,7 +239,7 @@ public Map> indicesGetAliasData(GetAliasResponse getAlias Assert.notNull(getAliasResponse, "getAliasResponse must not be null"); Map> aliasDataMap = new HashMap<>(); - getAliasResponse.result().forEach((indexName, alias) -> { + getAliasResponse.aliases().forEach((indexName, alias) -> { Set aliasDataSet = new HashSet<>(); alias.aliases() .forEach((aliasName, aliasDefinition) -> aliasDataSet.add(indicesGetAliasData(aliasName, aliasDefinition))); @@ -535,7 +535,7 @@ public Script scriptResponse(GetScriptResponse response) { ? Script.builder() // .withId(response.id()) // .withLanguage(response.script().lang()) // - .withSource(response.script().source()).build() // + .withSource(response.script().source().scriptString()).build() // : null; } // endregion diff --git a/src/main/java/org/springframework/data/elasticsearch/core/SearchHit.java b/src/main/java/org/springframework/data/elasticsearch/core/SearchHit.java index da59efdf5..6a6f21920 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/SearchHit.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/SearchHit.java @@ -48,12 +48,12 @@ public class SearchHit { @Nullable private final NestedMetaData nestedMetaData; @Nullable private final String routing; @Nullable private final Explanation explanation; - private final List matchedQueries = new ArrayList<>(); + private final Map matchedQueries = new LinkedHashMap<>(); public SearchHit(@Nullable String index, @Nullable String id, @Nullable String routing, float score, @Nullable Object[] sortValues, @Nullable Map> highlightFields, @Nullable Map> innerHits, @Nullable NestedMetaData nestedMetaData, - @Nullable Explanation explanation, @Nullable List matchedQueries, T content) { + @Nullable Explanation explanation, @Nullable Map matchedQueries, T content) { this.index = index; this.id = id; this.routing = routing; @@ -73,7 +73,7 @@ public SearchHit(@Nullable String index, @Nullable String id, @Nullable String r this.content = content; if (matchedQueries != null) { - this.matchedQueries.addAll(matchedQueries); + this.matchedQueries.putAll(matchedQueries); } } @@ -194,7 +194,7 @@ public Explanation getExplanation() { * @return the matched queries for this SearchHit. */ @Nullable - public List getMatchedQueries() { + public Map getMatchedQueries() { return matchedQueries; } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocument.java b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocument.java index 63192272e..b51c028e7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocument.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocument.java @@ -125,5 +125,5 @@ default String getRouting() { * @return the matched queries for the SearchHit. */ @Nullable - List getMatchedQueries(); + Map getMatchedQueries(); } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentAdapter.java b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentAdapter.java index de424c719..4a1bf2f35 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentAdapter.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/document/SearchDocumentAdapter.java @@ -41,12 +41,12 @@ public class SearchDocumentAdapter implements SearchDocument { private final Map innerHits = new HashMap<>(); @Nullable private final NestedMetaData nestedMetaData; @Nullable private final Explanation explanation; - @Nullable private final List matchedQueries; + @Nullable private final Map matchedQueries; @Nullable private final String routing; public SearchDocumentAdapter(Document delegate, float score, Object[] sortValues, Map> fields, Map> highlightFields, Map innerHits, - @Nullable NestedMetaData nestedMetaData, @Nullable Explanation explanation, @Nullable List matchedQueries, + @Nullable NestedMetaData nestedMetaData, @Nullable Explanation explanation, @Nullable Map matchedQueries, @Nullable String routing) { this.delegate = delegate; @@ -249,7 +249,7 @@ public Explanation getExplanation() { @Override @Nullable - public List getMatchedQueries() { + public Map getMatchedQueries() { return matchedQueries; } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java b/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java index 1a81988cd..1597f064f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java @@ -27,15 +27,12 @@ * @author Peter-Josef Meisch * @since 4.4 */ -public record ScriptData(ScriptType type, @Nullable String language, @Nullable String script, +public record ScriptData(@Nullable String language, @Nullable String script, @Nullable String scriptName, @Nullable Map params) { - public ScriptData(ScriptType type, @Nullable String language, @Nullable String script, @Nullable String scriptName, + public ScriptData(@Nullable String language, @Nullable String script, @Nullable String scriptName, @Nullable Map params) { - Assert.notNull(type, "type must not be null"); - - this.type = type; this.language = language; this.script = script; this.scriptName = scriptName; @@ -45,9 +42,9 @@ public ScriptData(ScriptType type, @Nullable String language, @Nullable String s /** * @since 5.2 */ - public static ScriptData of(ScriptType type, @Nullable String language, @Nullable String script, + public static ScriptData of(@Nullable String language, @Nullable String script, @Nullable String scriptName, @Nullable Map params) { - return new ScriptData(type, language, script, scriptName, params); + return new ScriptData(language, script, scriptName, params); } public static ScriptData of(Function builderFunction) { @@ -68,7 +65,6 @@ public static Builder builder() { * @since 5.2 */ public static final class Builder { - @Nullable private ScriptType type; @Nullable private String language; @Nullable private String script; @Nullable private String scriptName; @@ -76,14 +72,6 @@ public static final class Builder { private Builder() {} - public Builder withType(ScriptType type) { - - Assert.notNull(type, "type must not be null"); - - this.type = type; - return this; - } - public Builder withLanguage(@Nullable String language) { this.language = language; return this; @@ -106,9 +94,7 @@ public Builder withParams(@Nullable Map params) { public ScriptData build() { - Assert.notNull(type, "type must be set"); - - return new ScriptData(type, language, script, scriptName, params); + return new ScriptData(language, script, scriptName, params); } } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptType.java b/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptType.java deleted file mode 100644 index 1c6ceecab..000000000 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptType.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2021-2025 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.elasticsearch.core.query; - -/** - * Define script types for update queries. - * - * @author Farid Faoudi - * @since 4.2 - */ - -public enum ScriptType { - INLINE, STORED -} diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java index 087f0c105..75959bb56 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java @@ -76,7 +76,7 @@ private UpdateQuery(String id, @Nullable String script, @Nullable Map searchHit = new Hit.Builder() // .index("index") // .id("42") // - .matchedQueries("query1", "query2") // + .matchedQueries("query1", 1D) // .build(); SearchDocument searchDocument = DocumentAdapters.from(searchHit, jsonpMapper); SoftAssertions softly = new SoftAssertions(); - List matchedQueries = searchDocument.getMatchedQueries(); + Map matchedQueries = searchDocument.getMatchedQueries(); softly.assertThat(matchedQueries).isNotNull(); - softly.assertThat(matchedQueries).hasSize(2); - softly.assertThat(matchedQueries).isEqualTo(Arrays.asList("query1", "query2")); + softly.assertThat(matchedQueries).hasSize(1); + softly.assertThat(matchedQueries).isEqualTo(Map.of("query1",1D)); softly.assertAll(); } } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchELCIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchELCIntegrationTests.java index 884fde8d9..826c2e416 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchELCIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchELCIntegrationTests.java @@ -46,7 +46,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.RescorerQuery; import org.springframework.data.elasticsearch.core.query.ScriptData; -import org.springframework.data.elasticsearch.core.query.ScriptType; import org.springframework.data.elasticsearch.core.query.ScriptedField; import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchTemplateConfiguration; import org.springframework.data.elasticsearch.utils.IndexNameProvider; @@ -183,7 +182,7 @@ protected Query getMatchAllQueryWithIncludesAndInlineExpressionScript(@Nullable return nativeQueryBuilder.withScriptedField(new ScriptedField( // fieldName, // - new ScriptData(ScriptType.INLINE, "expression", script, null, params))) // + new ScriptData( "expression", script, null, params))) // .build(); } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java index 3a2e89212..195b11b3d 100755 --- a/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java @@ -1630,7 +1630,6 @@ void shouldDoUpdateByQueryForExistingDocument() { final Query query = operations.matchAllQuery(); final UpdateQuery updateQuery = UpdateQuery.builder(query) - .withScriptType(ScriptType.INLINE) .withScript("ctx._source['message'] = params['newMessage']").withLang("painless") .withParams(Collections.singletonMap("newMessage", messageAfterUpdate)).withAbortOnVersionConflict(true) .build(); diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ReactiveScriptedAndRuntimeFieldsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ReactiveScriptedAndRuntimeFieldsIntegrationTests.java index deef102e0..c17b4a8df 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ReactiveScriptedAndRuntimeFieldsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ReactiveScriptedAndRuntimeFieldsIntegrationTests.java @@ -48,7 +48,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.RuntimeField; import org.springframework.data.elasticsearch.core.query.ScriptData; -import org.springframework.data.elasticsearch.core.query.ScriptType; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; @@ -165,7 +164,6 @@ private static org.springframework.data.elasticsearch.core.query.ScriptedField g return org.springframework.data.elasticsearch.core.query.ScriptedField.of( fieldName, ScriptData.of(b -> b - .withType(ScriptType.INLINE) .withScript("doc['value'].size() > 0 ? doc['value'].value * params['factor'] : 0") .withParams(Map.of("factor", factor)))); } diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ScriptedAndRuntimeFieldsIntegrationTests.java b/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ScriptedAndRuntimeFieldsIntegrationTests.java index 20f29ab66..d4b147d46 100644 --- a/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ScriptedAndRuntimeFieldsIntegrationTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/scriptedandruntimefields/ScriptedAndRuntimeFieldsIntegrationTests.java @@ -45,7 +45,6 @@ import org.springframework.data.elasticsearch.core.query.Query; import org.springframework.data.elasticsearch.core.query.RuntimeField; import org.springframework.data.elasticsearch.core.query.ScriptData; -import org.springframework.data.elasticsearch.core.query.ScriptType; import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.data.elasticsearch.utils.IndexNameProvider; @@ -314,7 +313,6 @@ private static org.springframework.data.elasticsearch.core.query.ScriptedField b return org.springframework.data.elasticsearch.core.query.ScriptedField.of( fieldName, ScriptData.of(b -> b - .withType(ScriptType.INLINE) .withScript("doc['value'].size() > 0 ? doc['value'].value * params['factor'] : 0") .withParams(Map.of("factor", factor)))); } diff --git a/src/test/resources/testcontainers-elasticsearch.properties b/src/test/resources/testcontainers-elasticsearch.properties index 6860b4150..a16e4a2af 100644 --- a/src/test/resources/testcontainers-elasticsearch.properties +++ b/src/test/resources/testcontainers-elasticsearch.properties @@ -15,7 +15,7 @@ # # sde.testcontainers.image-name=docker.elastic.co/elasticsearch/elasticsearch -sde.testcontainers.image-version=8.18.1 +sde.testcontainers.image-version=9.0.1 # # # needed as we do a DELETE /* at the end of the tests, will be required from 8.0 on, produces a warning since 7.13 From a9d2aaa93dc1c80a74638755ca83b98048e02dbb Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Thu, 29 May 2025 18:10:48 +0200 Subject: [PATCH 23/25] Polishing. Signed-off-by: Peter-Josef Meisch --- src/main/antora/modules/ROOT/nav.adoc | 1 + .../elasticsearch/elasticsearch-new.adoc | 8 + .../ROOT/pages/elasticsearch/versions.adoc | 2 +- .../migration-guide-5.5-6.0.adoc | 21 + .../client/elc/DocumentAdapters.java | 382 +++++++++--------- .../elasticsearch/core/query/ScriptData.java | 168 ++++---- .../elasticsearch/core/script/Script.java | 3 + 7 files changed, 321 insertions(+), 264 deletions(-) create mode 100644 src/main/antora/modules/ROOT/pages/migration-guides/migration-guide-5.5-6.0.adoc diff --git a/src/main/antora/modules/ROOT/nav.adoc b/src/main/antora/modules/ROOT/nav.adoc index 53580343a..fa1ee8110 100644 --- a/src/main/antora/modules/ROOT/nav.adoc +++ b/src/main/antora/modules/ROOT/nav.adoc @@ -12,6 +12,7 @@ *** xref:migration-guides/migration-guide-5.2-5.3.adoc[] *** xref:migration-guides/migration-guide-5.3-5.4.adoc[] *** xref:migration-guides/migration-guide-5.4-5.5.adoc[] +*** xref:migration-guides/migration-guide-5.5-6.0.adoc[] * xref:elasticsearch.adoc[] diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc index 5dca4fab6..f1e07dd19 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc @@ -1,6 +1,14 @@ [[new-features]] = What's new +[[new-features.6-0-0]] +== New in Spring Data Elasticsearch 6.6 + +* Upgarde to Spring 7 +* Switch to jspecify nullability annotations +* Upgrade to Elasticsearch 9.0.1 + + [[new-features.5-5-0]] == New in Spring Data Elasticsearch 5.5 diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc index 23990e2a7..8fb6d7261 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc @@ -6,7 +6,7 @@ The following table shows the Elasticsearch and Spring versions that are used by [cols="^,^,^,^",options="header"] |=== | Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework -| 2025.1 (in development) | 6.0.x | 8.18.1 | 7.0.x +| 2025.1 (in development) | 6.0.x | 9.0.1 | 7.0.x | 2025.0 | 5.5.x | 8.18.1 | 6.2.x | 2024.1 | 5.4.x | 8.15.5 | 6.1.x | 2024.0 | 5.3.xfootnote:oom[Out of maintenance] | 8.13.4 | 6.1.x diff --git a/src/main/antora/modules/ROOT/pages/migration-guides/migration-guide-5.5-6.0.adoc b/src/main/antora/modules/ROOT/pages/migration-guides/migration-guide-5.5-6.0.adoc new file mode 100644 index 000000000..7667701a1 --- /dev/null +++ b/src/main/antora/modules/ROOT/pages/migration-guides/migration-guide-5.5-6.0.adoc @@ -0,0 +1,21 @@ +[[elasticsearch-migration-guide-5.5-6.0]] += Upgrading from 5.5.x to 6.0.x + +This section describes breaking changes from version 5.5.x to 6.0.x and how removed features can be replaced by new introduced features. + +[[elasticsearch-migration-guide-5.5-6.0.breaking-changes]] +== Breaking Changes + +[[elasticsearch-migration-guide-5.5-6.0.deprecations]] +== Deprecations + + +=== Removals + +The `org.springframework.data.elasticsearch.core.query.ScriptType` enum has been removed. To distinguish between an inline and a stored script set the appropriate values in the `org.springframework.data.elasticsearch.core.query.ScriptData` record. + +These methods have been removed because the Elasticsearch Client 9 does not support them anymore: +``` +org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchIndicesClient.unfreeze(UnfreezeRequest) +org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchIndicesClient.unfreeze(Function>) +``` diff --git a/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java b/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java index ea38dfe58..53e8cefa7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java +++ b/src/main/java/org/springframework/data/elasticsearch/client/elc/DocumentAdapters.java @@ -24,14 +24,6 @@ import co.elastic.clients.elasticsearch.core.search.NestedIdentity; import co.elastic.clients.json.JsonData; import co.elastic.clients.json.JsonpMapper; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jspecify.annotations.Nullable; @@ -44,6 +36,13 @@ import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse; import org.springframework.util.Assert; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + /** * Utility class to adapt different Elasticsearch responses to a * {@link org.springframework.data.elasticsearch.core.document.Document} @@ -55,187 +54,188 @@ */ final class DocumentAdapters { - private static final Log LOGGER = LogFactory.getLog(DocumentAdapters.class); - - private DocumentAdapters() {} - - /** - * Creates a {@link SearchDocument} from a {@link Hit} returned by the Elasticsearch client. - * - * @param hit the hit object - * @param jsonpMapper to map JsonData objects - * @return the created {@link SearchDocument} - */ - public static SearchDocument from(Hit hit, JsonpMapper jsonpMapper) { - - Assert.notNull(hit, "hit must not be null"); - - Map> highlightFields = hit.highlight(); - - Map innerHits = new LinkedHashMap<>(); - hit.innerHits().forEach((name, innerHitsResult) -> { - // noinspection ReturnOfNull - innerHits.put(name, SearchDocumentResponseBuilder.from(innerHitsResult.hits(), null, null, null, 0, null, null, - searchDocument -> null, jsonpMapper)); - }); - - NestedMetaData nestedMetaData = from(hit.nested()); - - Explanation explanation = from(hit.explanation()); - - Map matchedQueries = hit.matchedQueries(); - - Function, EntityAsMap> fromFields = fields -> { - StringBuilder sb = new StringBuilder("{"); - final boolean[] firstField = { true }; - hit.fields().forEach((key, jsonData) -> { - if (!firstField[0]) { - sb.append(','); - } - sb.append('"').append(key).append("\":") // - .append(jsonData.toJson(jsonpMapper).toString()); - firstField[0] = false; - }); - sb.append('}'); - return new EntityAsMap().fromJson(sb.toString()); - }; - - EntityAsMap hitFieldsAsMap = fromFields.apply(hit.fields()); - - Map> documentFields = new LinkedHashMap<>(); - hitFieldsAsMap.forEach((key, value) -> { - if (value instanceof List) { - // noinspection unchecked - documentFields.put(key, (List) value); - } else { - documentFields.put(key, Collections.singletonList(value)); - } - }); - - Document document; - Object source = hit.source(); - if (source == null) { - document = Document.from(hitFieldsAsMap); - } else { - if (source instanceof EntityAsMap entityAsMap) { - document = Document.from(entityAsMap); - } else if (source instanceof JsonData jsonData) { - document = Document.from(jsonData.to(EntityAsMap.class)); - } else { - - if (LOGGER.isWarnEnabled()) { - LOGGER.warn(String.format("Cannot map from type " + source.getClass().getName())); - } - document = Document.create(); - } - } - document.setIndex(hit.index()); - document.setId(hit.id()); - - if (hit.version() != null) { - document.setVersion(hit.version()); - } - document.setSeqNo(hit.seqNo() != null && hit.seqNo() >= 0 ? hit.seqNo() : -2); // -2 was the default value in the - // old client - document.setPrimaryTerm(hit.primaryTerm() != null && hit.primaryTerm() > 0 ? hit.primaryTerm() : 0); - - float score = hit.score() != null ? hit.score().floatValue() : Float.NaN; - return new SearchDocumentAdapter(document, score, hit.sort().stream().map(TypeUtils::toObject).toArray(), - documentFields, highlightFields, innerHits, nestedMetaData, explanation, matchedQueries, hit.routing()); - } - - public static SearchDocument from(CompletionSuggestOption completionSuggestOption) { - - Document document = completionSuggestOption.source() != null ? Document.from(completionSuggestOption.source()) - : Document.create(); - document.setIndex(completionSuggestOption.index()); - - if (completionSuggestOption.id() != null) { - document.setId(completionSuggestOption.id()); - } - - float score = completionSuggestOption.score() != null ? completionSuggestOption.score().floatValue() : Float.NaN; - return new SearchDocumentAdapter(document, score, new Object[] {}, Collections.emptyMap(), Collections.emptyMap(), - Collections.emptyMap(), null, null, null, completionSuggestOption.routing()); - } - - @Nullable - private static Explanation from(co.elastic.clients.elasticsearch.core.explain.@Nullable Explanation explanation) { - - if (explanation == null) { - return null; - } - List details = explanation.details().stream().map(DocumentAdapters::from).collect(Collectors.toList()); - return new Explanation(true, (double) explanation.value(), explanation.description(), details); - } - - private static Explanation from(ExplanationDetail explanationDetail) { - - List details = explanationDetail.details().stream().map(DocumentAdapters::from) - .collect(Collectors.toList()); - return new Explanation(null, (double) explanationDetail.value(), explanationDetail.description(), details); - } - - @Nullable - private static NestedMetaData from(@Nullable NestedIdentity nestedIdentity) { - - if (nestedIdentity == null) { - return null; - } - - NestedMetaData child = from(nestedIdentity.nested()); - return NestedMetaData.of(nestedIdentity.field(), nestedIdentity.offset(), child); - } - - /** - * Creates a {@link Document} from a {@link GetResponse} where the found document is contained as {@link EntityAsMap}. - * - * @param getResponse the response instance - * @return the Document - */ - @Nullable - public static Document from(GetResult getResponse) { - - Assert.notNull(getResponse, "getResponse must not be null"); - - if (!getResponse.found()) { - return null; - } - - Document document = getResponse.source() != null ? Document.from(getResponse.source()) : Document.create(); - document.setIndex(getResponse.index()); - document.setId(getResponse.id()); - - if (getResponse.version() != null) { - document.setVersion(getResponse.version()); - } - - if (getResponse.seqNo() != null) { - document.setSeqNo(getResponse.seqNo()); - } - - if (getResponse.primaryTerm() != null) { - document.setPrimaryTerm(getResponse.primaryTerm()); - } - - return document; - } - - /** - * Creates a list of {@link MultiGetItem}s from a {@link MgetResponse} where the data is contained as - * {@link EntityAsMap} instances. - * - * @param mgetResponse the response instance - * @return list of multiget items - */ - public static List> from(MgetResponse mgetResponse) { - - Assert.notNull(mgetResponse, "mgetResponse must not be null"); - - return mgetResponse.docs().stream() // - .map(itemResponse -> MultiGetItem.of( // - itemResponse.isFailure() ? null : from(itemResponse.result()), // - ResponseConverter.getFailure(itemResponse))) - .collect(Collectors.toList()); - } + private static final Log LOGGER = LogFactory.getLog(DocumentAdapters.class); + + private DocumentAdapters() { + } + + /** + * Creates a {@link SearchDocument} from a {@link Hit} returned by the Elasticsearch client. + * + * @param hit the hit object + * @param jsonpMapper to map JsonData objects + * @return the created {@link SearchDocument} + */ + public static SearchDocument from(Hit hit, JsonpMapper jsonpMapper) { + + Assert.notNull(hit, "hit must not be null"); + + Map> highlightFields = hit.highlight(); + + Map innerHits = new LinkedHashMap<>(); + hit.innerHits().forEach((name, innerHitsResult) -> { + // noinspection ReturnOfNull + innerHits.put(name, SearchDocumentResponseBuilder.from(innerHitsResult.hits(), null, null, null, 0, null, null, + searchDocument -> null, jsonpMapper)); + }); + + NestedMetaData nestedMetaData = from(hit.nested()); + + Explanation explanation = from(hit.explanation()); + + Map matchedQueries = hit.matchedQueries(); + + Function, EntityAsMap> fromFields = fields -> { + StringBuilder sb = new StringBuilder("{"); + final boolean[] firstField = {true}; + hit.fields().forEach((key, jsonData) -> { + if (!firstField[0]) { + sb.append(','); + } + sb.append('"').append(key).append("\":") // + .append(jsonData.toJson(jsonpMapper).toString()); + firstField[0] = false; + }); + sb.append('}'); + return new EntityAsMap().fromJson(sb.toString()); + }; + + EntityAsMap hitFieldsAsMap = fromFields.apply(hit.fields()); + + Map> documentFields = new LinkedHashMap<>(); + hitFieldsAsMap.forEach((key, value) -> { + if (value instanceof List) { + // noinspection unchecked + documentFields.put(key, (List) value); + } else { + documentFields.put(key, Collections.singletonList(value)); + } + }); + + Document document; + Object source = hit.source(); + if (source == null) { + document = Document.from(hitFieldsAsMap); + } else { + if (source instanceof EntityAsMap entityAsMap) { + document = Document.from(entityAsMap); + } else if (source instanceof JsonData jsonData) { + document = Document.from(jsonData.to(EntityAsMap.class)); + } else { + + if (LOGGER.isWarnEnabled()) { + LOGGER.warn(String.format("Cannot map from type " + source.getClass().getName())); + } + document = Document.create(); + } + } + document.setIndex(hit.index()); + document.setId(hit.id()); + + if (hit.version() != null) { + document.setVersion(hit.version()); + } + document.setSeqNo(hit.seqNo() != null && hit.seqNo() >= 0 ? hit.seqNo() : -2); // -2 was the default value in the + // old client + document.setPrimaryTerm(hit.primaryTerm() != null && hit.primaryTerm() > 0 ? hit.primaryTerm() : 0); + + float score = hit.score() != null ? hit.score().floatValue() : Float.NaN; + return new SearchDocumentAdapter(document, score, hit.sort().stream().map(TypeUtils::toObject).toArray(), + documentFields, highlightFields, innerHits, nestedMetaData, explanation, matchedQueries, hit.routing()); + } + + public static SearchDocument from(CompletionSuggestOption completionSuggestOption) { + + Document document = completionSuggestOption.source() != null ? Document.from(completionSuggestOption.source()) + : Document.create(); + document.setIndex(completionSuggestOption.index()); + + if (completionSuggestOption.id() != null) { + document.setId(completionSuggestOption.id()); + } + + float score = completionSuggestOption.score() != null ? completionSuggestOption.score().floatValue() : Float.NaN; + return new SearchDocumentAdapter(document, score, new Object[]{}, Collections.emptyMap(), Collections.emptyMap(), + Collections.emptyMap(), null, null, null, completionSuggestOption.routing()); + } + + @Nullable + private static Explanation from(co.elastic.clients.elasticsearch.core.explain.@Nullable Explanation explanation) { + + if (explanation == null) { + return null; + } + List details = explanation.details().stream().map(DocumentAdapters::from).collect(Collectors.toList()); + return new Explanation(true, (double) explanation.value(), explanation.description(), details); + } + + private static Explanation from(ExplanationDetail explanationDetail) { + + List details = explanationDetail.details().stream().map(DocumentAdapters::from) + .collect(Collectors.toList()); + return new Explanation(null, (double) explanationDetail.value(), explanationDetail.description(), details); + } + + @Nullable + private static NestedMetaData from(@Nullable NestedIdentity nestedIdentity) { + + if (nestedIdentity == null) { + return null; + } + + NestedMetaData child = from(nestedIdentity.nested()); + return NestedMetaData.of(nestedIdentity.field(), nestedIdentity.offset(), child); + } + + /** + * Creates a {@link Document} from a {@link GetResponse} where the found document is contained as {@link EntityAsMap}. + * + * @param getResponse the response instance + * @return the Document + */ + @Nullable + public static Document from(GetResult getResponse) { + + Assert.notNull(getResponse, "getResponse must not be null"); + + if (!getResponse.found()) { + return null; + } + + Document document = getResponse.source() != null ? Document.from(getResponse.source()) : Document.create(); + document.setIndex(getResponse.index()); + document.setId(getResponse.id()); + + if (getResponse.version() != null) { + document.setVersion(getResponse.version()); + } + + if (getResponse.seqNo() != null) { + document.setSeqNo(getResponse.seqNo()); + } + + if (getResponse.primaryTerm() != null) { + document.setPrimaryTerm(getResponse.primaryTerm()); + } + + return document; + } + + /** + * Creates a list of {@link MultiGetItem}s from a {@link MgetResponse} where the data is contained as + * {@link EntityAsMap} instances. + * + * @param mgetResponse the response instance + * @return list of multiget items + */ + public static List> from(MgetResponse mgetResponse) { + + Assert.notNull(mgetResponse, "mgetResponse must not be null"); + + return mgetResponse.docs().stream() // + .map(itemResponse -> MultiGetItem.of( // + itemResponse.isFailure() ? null : from(itemResponse.result()), // + ResponseConverter.getFailure(itemResponse))) + .collect(Collectors.toList()); + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java b/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java index 1597f064f..fc81b95d4 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/ScriptData.java @@ -15,86 +15,110 @@ */ package org.springframework.data.elasticsearch.core.query; -import java.util.Map; -import java.util.function.Function; - import org.jspecify.annotations.Nullable; import org.springframework.util.Assert; +import java.util.Map; +import java.util.function.Function; + /** * value class combining script information. + *

+ * A script is either an inline script, then the script parameters must be set + * or it refers to a stored script, then the name parameter is required. * + * @param language the language when the script is passed in the script parameter + * @param script the script to use as inline script + * @param scriptName the name when using a stored script + * @param params the script parameters * @author Peter-Josef Meisch * @since 4.4 */ public record ScriptData(@Nullable String language, @Nullable String script, - @Nullable String scriptName, @Nullable Map params) { - - public ScriptData(@Nullable String language, @Nullable String script, @Nullable String scriptName, - @Nullable Map params) { - - this.language = language; - this.script = script; - this.scriptName = scriptName; - this.params = params; - } - - /** - * @since 5.2 - */ - public static ScriptData of(@Nullable String language, @Nullable String script, - @Nullable String scriptName, @Nullable Map params) { - return new ScriptData(language, script, scriptName, params); - } - - public static ScriptData of(Function builderFunction) { - - Assert.notNull(builderFunction, "f must not be null"); - - return builderFunction.apply(new Builder()).build(); - } - - /** - * @since 5.2 - */ - public static Builder builder() { - return new Builder(); - } - - /** - * @since 5.2 - */ - public static final class Builder { - @Nullable private String language; - @Nullable private String script; - @Nullable private String scriptName; - @Nullable private Map params; - - private Builder() {} - - public Builder withLanguage(@Nullable String language) { - this.language = language; - return this; - } - - public Builder withScript(@Nullable String script) { - this.script = script; - return this; - } - - public Builder withScriptName(@Nullable String scriptName) { - this.scriptName = scriptName; - return this; - } - - public Builder withParams(@Nullable Map params) { - this.params = params; - return this; - } - - public ScriptData build() { - - return new ScriptData(language, script, scriptName, params); - } - } + @Nullable String scriptName, @Nullable Map params) { + + /* + * constructor overload to check the parameters + */ + public ScriptData(@Nullable String language, @Nullable String script, @Nullable String scriptName, + @Nullable Map params) { + + Assert.isTrue(script != null || scriptName != null, "script or scriptName is required"); + + this.language = language; + this.script = script; + this.scriptName = scriptName; + this.params = params; + } + + /** + * factory method to create a ScriptData object. + * + * @since 5.2 + */ + public static ScriptData of(@Nullable String language, @Nullable String script, + @Nullable String scriptName, @Nullable Map params) { + return new ScriptData(language, script, scriptName, params); + } + + /** + * factory method to create a ScriptData object using a ScriptBuilder callback. + * + * @param builderFunction function called to populate the builder + * @return + */ + public static ScriptData of(Function builderFunction) { + + Assert.notNull(builderFunction, "builderFunction must not be null"); + + return builderFunction.apply(new Builder()).build(); + } + + /** + * @since 5.2 + */ + public static Builder builder() { + return new Builder(); + } + + /** + * @since 5.2 + */ + public static final class Builder { + @Nullable + private String language; + @Nullable + private String script; + @Nullable + private String scriptName; + @Nullable + private Map params; + + private Builder() { + } + + public Builder withLanguage(@Nullable String language) { + this.language = language; + return this; + } + + public Builder withScript(@Nullable String script) { + this.script = script; + return this; + } + + public Builder withScriptName(@Nullable String scriptName) { + this.scriptName = scriptName; + return this; + } + + public Builder withParams(@Nullable Map params) { + this.params = params; + return this; + } + + public ScriptData build() { + return new ScriptData(language, script, scriptName, params); + } + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/script/Script.java b/src/main/java/org/springframework/data/elasticsearch/core/script/Script.java index b1f35896b..1f29c6c22 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/script/Script.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/script/Script.java @@ -28,6 +28,7 @@ public record Script(String id, String language, String source) { Assert.notNull(id, "id must not be null"); Assert.notNull(language, "language must not be null"); + Assert.notNull(source, "source must not be null"); } public static ScriptBuilder builder() { @@ -60,6 +61,8 @@ public ScriptBuilder withLanguage(String language) { public ScriptBuilder withSource(String source) { + Assert.notNull(source, "source must not be null"); + this.source = source; return this; } From 7f53944e1b51f5bd044b5da9b0b0002ed3d1f7fb Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 12 Jun 2025 09:14:22 +0200 Subject: [PATCH 24/25] Adapt to generics changes in `CoroutineCrudRepository`. Closes #3118 --- .../repository/CoroutineElasticsearchRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/org/springframework/data/elasticsearch/repository/CoroutineElasticsearchRepository.kt b/src/main/kotlin/org/springframework/data/elasticsearch/repository/CoroutineElasticsearchRepository.kt index 221db17db..79c932fea 100644 --- a/src/main/kotlin/org/springframework/data/elasticsearch/repository/CoroutineElasticsearchRepository.kt +++ b/src/main/kotlin/org/springframework/data/elasticsearch/repository/CoroutineElasticsearchRepository.kt @@ -24,4 +24,4 @@ import org.springframework.data.repository.kotlin.CoroutineSortingRepository * @since 5.2 */ @NoRepositoryBean -interface CoroutineElasticsearchRepository : CoroutineCrudRepository, CoroutineSortingRepository +interface CoroutineElasticsearchRepository : CoroutineCrudRepository, CoroutineSortingRepository From f9509f26965235880c92b6a058d2b4ea8ceb7bdf Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Sat, 14 Jun 2025 17:30:22 +0200 Subject: [PATCH 25/25] Upgrade to Elasticsearch 9.0.2. Original Pull Request #3122 Closes #3121 Signed-off-by: Peter-Josef Meisch --- pom.xml | 2 +- .../modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc | 4 ++-- .../antora/modules/ROOT/pages/elasticsearch/versions.adoc | 2 +- src/test/resources/testcontainers-elasticsearch.properties | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 4396ce5a6..4fcfd20c4 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ 4.0.0-SNAPSHOT - 9.0.1 + 9.0.2 0.19.0 2.23.1 diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc index f1e07dd19..d4a9c565d 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/elasticsearch-new.adoc @@ -2,11 +2,11 @@ = What's new [[new-features.6-0-0]] -== New in Spring Data Elasticsearch 6.6 +== New in Spring Data Elasticsearch 6.0 * Upgarde to Spring 7 * Switch to jspecify nullability annotations -* Upgrade to Elasticsearch 9.0.1 +* Upgrade to Elasticsearch 9.0.2 [[new-features.5-5-0]] diff --git a/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc b/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc index 8fb6d7261..861e2ff3b 100644 --- a/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc +++ b/src/main/antora/modules/ROOT/pages/elasticsearch/versions.adoc @@ -6,7 +6,7 @@ The following table shows the Elasticsearch and Spring versions that are used by [cols="^,^,^,^",options="header"] |=== | Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework -| 2025.1 (in development) | 6.0.x | 9.0.1 | 7.0.x +| 2025.1 (in development) | 6.0.x | 9.0.2 | 7.0.x | 2025.0 | 5.5.x | 8.18.1 | 6.2.x | 2024.1 | 5.4.x | 8.15.5 | 6.1.x | 2024.0 | 5.3.xfootnote:oom[Out of maintenance] | 8.13.4 | 6.1.x diff --git a/src/test/resources/testcontainers-elasticsearch.properties b/src/test/resources/testcontainers-elasticsearch.properties index a16e4a2af..8784f82c3 100644 --- a/src/test/resources/testcontainers-elasticsearch.properties +++ b/src/test/resources/testcontainers-elasticsearch.properties @@ -15,7 +15,7 @@ # # sde.testcontainers.image-name=docker.elastic.co/elasticsearch/elasticsearch -sde.testcontainers.image-version=9.0.1 +sde.testcontainers.image-version=9.0.2 # # # needed as we do a DELETE /* at the end of the tests, will be required from 8.0 on, produces a warning since 7.13