From 44f9b29b6619acb7e84b010c3c1eb30b91a36160 Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Sun, 21 Nov 2021 21:08:05 +0100 Subject: [PATCH] Polishing. --- .../query/NativeSearchQueryBuilder.java | 8 +++++ .../MappingElasticsearchConverter.java | 11 +----- .../elasticsearch/core/query/BaseQuery.java | 2 ++ .../data/elasticsearch/core/query/Query.java | 3 ++ .../CriteriaQueryMappingUnitTests.java | 34 ++++++++++++------- .../elasticsearch7/RequestFactoryTests.java | 15 +++++--- 6 files changed, 46 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/backend/elasticsearch7/query/NativeSearchQueryBuilder.java b/src/main/java/org/springframework/data/elasticsearch/backend/elasticsearch7/query/NativeSearchQueryBuilder.java index 21e25e4b5..304d2cd47 100755 --- a/src/main/java/org/springframework/data/elasticsearch/backend/elasticsearch7/query/NativeSearchQueryBuilder.java +++ b/src/main/java/org/springframework/data/elasticsearch/backend/elasticsearch7/query/NativeSearchQueryBuilder.java @@ -244,7 +244,11 @@ public class NativeSearchQueryBuilder { return this; } + /** + * @since 4.4 + */ public NativeSearchQueryBuilder withStoredFields(Collection storedFields) { + if (this.storedFields == null) { this.storedFields = new ArrayList<>(storedFields); } else { @@ -253,7 +257,11 @@ public class NativeSearchQueryBuilder { return this; } + /** + * @since 4.4 + */ public NativeSearchQueryBuilder withStoredFields(String... storedFields) { + if (this.storedFields == null) { this.storedFields = new ArrayList<>(storedFields.length); } 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 c38310985..fb8d7f7f1 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 @@ -51,16 +51,7 @@ import org.springframework.data.mapping.MappingException; import org.springframework.data.mapping.PersistentPropertyAccessor; import org.springframework.data.mapping.PreferredConstructor; import org.springframework.data.mapping.context.MappingContext; -import org.springframework.data.mapping.model.ConvertingPropertyAccessor; -import org.springframework.data.mapping.model.DefaultSpELExpressionEvaluator; -import org.springframework.data.mapping.model.EntityInstantiator; -import org.springframework.data.mapping.model.EntityInstantiators; -import org.springframework.data.mapping.model.ParameterValueProvider; -import org.springframework.data.mapping.model.PersistentEntityParameterValueProvider; -import org.springframework.data.mapping.model.PropertyValueProvider; -import org.springframework.data.mapping.model.SpELContext; -import org.springframework.data.mapping.model.SpELExpressionEvaluator; -import org.springframework.data.mapping.model.SpELExpressionParameterValueProvider; +import org.springframework.data.mapping.model.*; import org.springframework.data.util.ClassTypeInformation; import org.springframework.data.util.TypeInformation; import org.springframework.format.datetime.DateFormatterRegistrar; 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 23a7ac706..e8d081c5a 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 @@ -113,9 +113,11 @@ public class BaseQuery implements Query { @Override public void addStoredFields(String... storedFields) { + if (storedFields.length == 0) { return; } + if (this.storedFields == null) { this.storedFields = new ArrayList<>(storedFields.length); } 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 5aec88cab..658b5f2db 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 @@ -113,6 +113,7 @@ public interface Query { * Add stored fields to be added as part of search request * * @param storedFields + * @since 4.4 */ void addStoredFields(String... storedFields); @@ -120,6 +121,7 @@ public interface Query { * Get stored fields to be returned as part of search request * * @return null if not set + * @since 4.4 */ @Nullable List getStoredFields(); @@ -128,6 +130,7 @@ public interface Query { * Set stored fields to be returned as part of search request * * @param storedFields + * @since 4.4 */ void setStoredFields(@Nullable List storedFields); diff --git a/src/test/java/org/springframework/data/elasticsearch/backend/elasticsearch7/CriteriaQueryMappingUnitTests.java b/src/test/java/org/springframework/data/elasticsearch/backend/elasticsearch7/CriteriaQueryMappingUnitTests.java index 939b13e81..6e4c9791a 100644 --- a/src/test/java/org/springframework/data/elasticsearch/backend/elasticsearch7/CriteriaQueryMappingUnitTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/backend/elasticsearch7/CriteriaQueryMappingUnitTests.java @@ -474,28 +474,38 @@ public class CriteriaQueryMappingUnitTests { // region test entities static class Person { - @Nullable @Id String id; - @Nullable @Field(name = "first-name") String firstName; - @Nullable @Field(name = "last-name") String lastName; - @Nullable @MultiField(mainField = @Field(name = "nick-name"), + @Nullable + @Id String id; + @Nullable + @Field(name = "first-name") String firstName; + @Nullable + @Field(name = "last-name") String lastName; + @Nullable + @MultiField(mainField = @Field(name = "nick-name"), otherFields = { @InnerField(suffix = "keyword", type = FieldType.Keyword) }) String nickName; - @Nullable @Field(name = "created-date", type = FieldType.Date, format = DateFormat.epoch_millis) Date createdDate; - @Nullable @Field(name = "birth-date", type = FieldType.Date, format = {}, - pattern = "dd.MM.uuuu") LocalDate birthDate; + @Nullable + @Field(name = "created-date", type = FieldType.Date, format = DateFormat.epoch_millis) Date createdDate; + @Nullable + @Field(name = "birth-date", type = FieldType.Date, format = {}, pattern = "dd.MM.uuuu") LocalDate birthDate; } static class House { - @Nullable @Id String id; - @Nullable @Field(name = "per-sons", type = FieldType.Nested) List persons; + @Nullable + @Id String id; + @Nullable + @Field(name = "per-sons", type = FieldType.Nested) List persons; } static class ObjectWithPerson { - @Nullable @Id String id; - @Nullable @Field(name = "per-sons", type = FieldType.Object) List persons; + @Nullable + @Id String id; + @Nullable + @Field(name = "per-sons", type = FieldType.Object) List persons; } static class GeoShapeEntity { - @Nullable @Field(name = "geo-shape-field") GeoJson geoShapeField; + @Nullable + @Field(name = "geo-shape-field") GeoJson geoShapeField; } // endregion } diff --git a/src/test/java/org/springframework/data/elasticsearch/backend/elasticsearch7/RequestFactoryTests.java b/src/test/java/org/springframework/data/elasticsearch/backend/elasticsearch7/RequestFactoryTests.java index 3be2e8882..fc686343e 100644 --- a/src/test/java/org/springframework/data/elasticsearch/backend/elasticsearch7/RequestFactoryTests.java +++ b/src/test/java/org/springframework/data/elasticsearch/backend/elasticsearch7/RequestFactoryTests.java @@ -552,19 +552,24 @@ class RequestFactoryTests { @DisplayName("should set stored fields on SearchRequest") void shouldSetStoredFieldsOnSearchRequest() { - Query query = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withStoredFields("lastName", "location").build(); + Query query = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withStoredFields("lastName", "location") + .build(); SearchRequest searchRequest = requestFactory.searchRequest(query, Person.class, IndexCoordinates.of("persons")); assertThat(searchRequest.source().storedFields()).isNotNull(); - assertThat(searchRequest.source().storedFields().fieldNames()).isEqualTo(Arrays.asList("last-name", "current-location")); + assertThat(searchRequest.source().storedFields().fieldNames()) + .isEqualTo(Arrays.asList("last-name", "current-location")); } // region entities static class Person { - @Nullable @Id String id; - @Nullable @Field(name = "last-name") String lastName; - @Nullable @Field(name = "current-location") GeoPoint location; + @Nullable + @Id String id; + @Nullable + @Field(name = "last-name") String lastName; + @Nullable + @Field(name = "current-location") GeoPoint location; public Person() {}