From 5d14313bd65fcb2e7676395a4ef9e39709c7e8b4 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 14 Nov 2023 14:01:33 +0100 Subject: [PATCH 1/6] Prepare issue branch --- pom.xml | 2 +- spring-data-mongodb-benchmarks/pom.xml | 2 +- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index f86d31444c..4721d2bf64 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 4.2.0-SNAPSHOT + 4.2.x-4555-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml index 2de4b6b635..fb38343b60 100644 --- a/spring-data-mongodb-benchmarks/pom.xml +++ b/spring-data-mongodb-benchmarks/pom.xml @@ -7,7 +7,7 @@ org.springframework.data spring-data-mongodb-parent - 4.2.0-SNAPSHOT + 4.2.x-4555-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 41b81f9aa6..c76e7dec19 100644 --- a/spring-data-mongodb-distribution/pom.xml +++ b/spring-data-mongodb-distribution/pom.xml @@ -15,7 +15,7 @@ org.springframework.data spring-data-mongodb-parent - 4.2.0-SNAPSHOT + 4.2.x-4555-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index d7a9ddaa63..6f917a4a42 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -13,7 +13,7 @@ org.springframework.data spring-data-mongodb-parent - 4.2.0-SNAPSHOT + 4.2.x-4555-SNAPSHOT ../pom.xml From f30bf7aa8a9f3c5c91df43e452d7a7436cc10684 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 14 Nov 2023 10:02:54 +0100 Subject: [PATCH 2/6] Introduce MongoConverterConfigurationAdapter#withPropertyValueConversions. Introduce new builder style method and deprecate exiting setter. Closes: #4555 --- .../core/convert/MongoCustomConversions.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java index 3b38d99b6f..2d774d9c59 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java @@ -308,8 +308,24 @@ public MongoConverterConfigurationAdapter registerPropertyValueConverterFactory( * @param valueConversions must not be {@literal null}. * @return this. * @since 3.4 + * @deprecated since 4.2. Use {@link #withPropertyValueConversions(PropertyValueConversions)} instead. */ + @Deprecated(since = "4.2.0") public MongoConverterConfigurationAdapter setPropertyValueConversions(PropertyValueConversions valueConversions) { + return withPropertyValueConversions(valueConversions); + } + + /** + * Optionally set the {@link PropertyValueConversions} to be applied during mapping. + *

+ * Use this method if {@link #configurePropertyConversions(Consumer)} and + * {@link #registerPropertyValueConverterFactory(PropertyValueConverterFactory)} are not sufficient. + * + * @param valueConversions must not be {@literal null}. + * @return this. + * @since 4.2 + */ + public MongoConverterConfigurationAdapter withPropertyValueConversions(PropertyValueConversions valueConversions) { Assert.notNull(valueConversions, "PropertyValueConversions must not be null"); this.propertyValueConversions = valueConversions; From ddb8e5c7787712977604a42e77574bd067cec9e4 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 14 Nov 2023 10:04:25 +0100 Subject: [PATCH 3/6] Polishing. Reorder methods. See: #4555 --- .../core/convert/MongoCustomConversions.java | 104 +++++++++--------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java index 2d774d9c59..fca782db6c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java @@ -179,55 +179,62 @@ public static MongoConverterConfigurationAdapter from(List converters) { } /** - * Set whether to or not to use the native MongoDB Java Driver {@link org.bson.codecs.Codec codes} for - * {@link org.bson.codecs.jsr310.LocalDateCodec LocalDate}, {@link org.bson.codecs.jsr310.LocalTimeCodec LocalTime} - * and {@link org.bson.codecs.jsr310.LocalDateTimeCodec LocalDateTime} using a {@link ZoneOffset#UTC}. + * Add a custom {@link Converter} implementation. * - * @param useNativeDriverJavaTimeCodecs + * @param converter must not be {@literal null}. * @return this. */ - public MongoConverterConfigurationAdapter useNativeDriverJavaTimeCodecs(boolean useNativeDriverJavaTimeCodecs) { + public MongoConverterConfigurationAdapter registerConverter(Converter converter) { - this.useNativeDriverJavaTimeCodecs = useNativeDriverJavaTimeCodecs; + Assert.notNull(converter, "Converter must not be null"); + customConverters.add(converter); return this; } /** - * Use the native MongoDB Java Driver {@link org.bson.codecs.Codec codes} for - * {@link org.bson.codecs.jsr310.LocalDateCodec LocalDate}, {@link org.bson.codecs.jsr310.LocalTimeCodec LocalTime} - * and {@link org.bson.codecs.jsr310.LocalDateTimeCodec LocalDateTime} using a {@link ZoneOffset#UTC}. + * Add {@link Converter converters}, {@link ConverterFactory factories}, {@link ConverterBuilder.ConverterAware + * converter-aware objects}, and {@link GenericConverter generic converters}. * + * @param converters must not be {@literal null} nor contain {@literal null} values. * @return this. - * @see #useNativeDriverJavaTimeCodecs(boolean) */ - public MongoConverterConfigurationAdapter useNativeDriverJavaTimeCodecs() { - return useNativeDriverJavaTimeCodecs(true); + public MongoConverterConfigurationAdapter registerConverters(Collection converters) { + + Assert.notNull(converters, "Converters must not be null"); + Assert.noNullElements(converters, "Converters must not be null nor contain null values"); + + customConverters.addAll(converters); + return this; } /** - * Use SpringData {@link Converter Jsr310 converters} for - * {@link org.springframework.data.convert.Jsr310Converters.LocalDateToDateConverter LocalDate}, - * {@link org.springframework.data.convert.Jsr310Converters.LocalTimeToDateConverter LocalTime} and - * {@link org.springframework.data.convert.Jsr310Converters.LocalDateTimeToDateConverter LocalDateTime} using the - * {@link ZoneId#systemDefault()}. + * Add a custom {@link ConverterFactory} implementation. * + * @param converterFactory must not be {@literal null}. * @return this. - * @see #useNativeDriverJavaTimeCodecs(boolean) */ - public MongoConverterConfigurationAdapter useSpringDataJavaTimeCodecs() { - return useNativeDriverJavaTimeCodecs(false); + public MongoConverterConfigurationAdapter registerConverterFactory(ConverterFactory converterFactory) { + + Assert.notNull(converterFactory, "ConverterFactory must not be null"); + customConverters.add(converterFactory); + return this; } /** - * Add a custom {@link Converter} implementation. + * Add a custom/default {@link PropertyValueConverterFactory} implementation used to serve + * {@link PropertyValueConverter}. * - * @param converter must not be {@literal null}. + * @param converterFactory must not be {@literal null}. * @return this. + * @since 3.4 */ - public MongoConverterConfigurationAdapter registerConverter(Converter converter) { + public MongoConverterConfigurationAdapter registerPropertyValueConverterFactory( + PropertyValueConverterFactory converterFactory) { - Assert.notNull(converter, "Converter must not be null"); - customConverters.add(converter); + Assert.state(valueConversions() instanceof SimplePropertyValueConversions, + "Configured PropertyValueConversions does not allow setting custom ConverterRegistry"); + + ((SimplePropertyValueConversions) valueConversions()).setConverterFactory(converterFactory); return this; } @@ -253,50 +260,43 @@ public MongoConverterConfigurationAdapter configurePropertyConversions( } /** - * Add a custom {@link ConverterFactory} implementation. + * Set whether to or not to use the native MongoDB Java Driver {@link org.bson.codecs.Codec codes} for + * {@link org.bson.codecs.jsr310.LocalDateCodec LocalDate}, {@link org.bson.codecs.jsr310.LocalTimeCodec LocalTime} + * and {@link org.bson.codecs.jsr310.LocalDateTimeCodec LocalDateTime} using a {@link ZoneOffset#UTC}. * - * @param converterFactory must not be {@literal null}. + * @param useNativeDriverJavaTimeCodecs * @return this. */ - public MongoConverterConfigurationAdapter registerConverterFactory(ConverterFactory converterFactory) { + public MongoConverterConfigurationAdapter useNativeDriverJavaTimeCodecs(boolean useNativeDriverJavaTimeCodecs) { - Assert.notNull(converterFactory, "ConverterFactory must not be null"); - customConverters.add(converterFactory); + this.useNativeDriverJavaTimeCodecs = useNativeDriverJavaTimeCodecs; return this; } /** - * Add {@link Converter converters}, {@link ConverterFactory factories}, {@link ConverterBuilder.ConverterAware - * converter-aware objects}, and {@link GenericConverter generic converters}. + * Use the native MongoDB Java Driver {@link org.bson.codecs.Codec codes} for + * {@link org.bson.codecs.jsr310.LocalDateCodec LocalDate}, {@link org.bson.codecs.jsr310.LocalTimeCodec LocalTime} + * and {@link org.bson.codecs.jsr310.LocalDateTimeCodec LocalDateTime} using a {@link ZoneOffset#UTC}. * - * @param converters must not be {@literal null} nor contain {@literal null} values. * @return this. + * @see #useNativeDriverJavaTimeCodecs(boolean) */ - public MongoConverterConfigurationAdapter registerConverters(Collection converters) { - - Assert.notNull(converters, "Converters must not be null"); - Assert.noNullElements(converters, "Converters must not be null nor contain null values"); - - customConverters.addAll(converters); - return this; + public MongoConverterConfigurationAdapter useNativeDriverJavaTimeCodecs() { + return useNativeDriverJavaTimeCodecs(true); } /** - * Add a custom/default {@link PropertyValueConverterFactory} implementation used to serve - * {@link PropertyValueConverter}. + * Use SpringData {@link Converter Jsr310 converters} for + * {@link org.springframework.data.convert.Jsr310Converters.LocalDateToDateConverter LocalDate}, + * {@link org.springframework.data.convert.Jsr310Converters.LocalTimeToDateConverter LocalTime} and + * {@link org.springframework.data.convert.Jsr310Converters.LocalDateTimeToDateConverter LocalDateTime} using the + * {@link ZoneId#systemDefault()}. * - * @param converterFactory must not be {@literal null}. * @return this. - * @since 3.4 + * @see #useNativeDriverJavaTimeCodecs(boolean) */ - public MongoConverterConfigurationAdapter registerPropertyValueConverterFactory( - PropertyValueConverterFactory converterFactory) { - - Assert.state(valueConversions() instanceof SimplePropertyValueConversions, - "Configured PropertyValueConversions does not allow setting custom ConverterRegistry"); - - ((SimplePropertyValueConversions) valueConversions()).setConverterFactory(converterFactory); - return this; + public MongoConverterConfigurationAdapter useSpringDataJavaTimeCodecs() { + return useNativeDriverJavaTimeCodecs(false); } /** From 171388ab73eeee53a2b04463f6f551fdb3b9c6f4 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 14 Nov 2023 12:10:38 +0100 Subject: [PATCH 4/6] Polishing. Remove unused imports. Simplify if & switch statements. Use Set.of, List.of for unmodifiable collections. Remove redundant usage of semicolon. Fix broken references in Javadoc. --- .../SessionAwareMethodInterceptor.java | 8 +- .../data/mongodb/SessionSynchronization.java | 2 +- .../data/mongodb/aot/MongoAotPredicates.java | 2 +- .../config/MappingMongoConverterParser.java | 7 +- .../config/MongoCredentialPropertyEditor.java | 8 +- .../mongodb/config/MongoDbFactoryParser.java | 13 +--- .../data/mongodb/core/AggregationUtil.java | 6 +- .../data/mongodb/core/BulkOperations.java | 2 +- .../data/mongodb/core/EntityOperations.java | 2 +- .../data/mongodb/core/MappedDocument.java | 2 +- .../mongodb/core/MongoActionOperation.java | 2 +- .../core/MongoExceptionTranslator.java | 21 ++---- .../data/mongodb/core/MongoTemplate.java | 21 ++---- .../data/mongodb/core/QueryOperations.java | 2 +- .../mongodb/core/ReactiveMongoTemplate.java | 3 +- .../data/mongodb/core/ScrollUtils.java | 2 +- .../core/aggregation/AggregationOptions.java | 6 +- .../core/aggregation/AggregationUtils.java | 2 +- .../aggregation/BucketOperationSupport.java | 4 +- .../core/aggregation/ExposedFields.java | 6 +- .../aggregation/GraphLookupOperation.java | 6 +- .../core/aggregation/GroupOperation.java | 7 +- .../core/aggregation/LimitOperation.java | 2 +- .../core/aggregation/LookupOperation.java | 8 +- .../core/aggregation/ObjectOperators.java | 1 - .../core/aggregation/OutOperation.java | 2 +- .../core/aggregation/ScriptOperators.java | 2 +- .../core/aggregation/SkipOperation.java | 2 +- .../SpelExpressionTransformer.java | 24 ++---- .../core/aggregation/UnwindOperation.java | 6 +- .../core/convert/DefaultMongoTypeMapper.java | 2 +- .../mongodb/core/convert/GeoConverters.java | 6 +- .../core/convert/MappingMongoConverter.java | 7 +- .../core/convert/MongoCustomConversions.java | 11 +-- .../mongodb/core/convert/QueryMapper.java | 37 ++++------ .../encryption/ExplicitEncryptionContext.java | 1 - .../data/mongodb/core/geo/GeoJsonPoint.java | 2 +- .../mongodb/core/index/DurationStyle.java | 4 +- .../mongodb/core/index/GeospatialIndex.java | 25 ++----- .../mongodb/core/index/IndexDirection.java | 2 +- .../data/mongodb/core/index/IndexField.java | 2 +- .../data/mongodb/core/index/IndexInfo.java | 17 ++--- .../index/MongoMappingEventPublisher.java | 2 - .../MongoPersistentEntityIndexResolver.java | 2 +- .../core/index/TextIndexDefinition.java | 4 +- .../mapping/BasicMongoPersistentEntity.java | 6 +- .../mapping/BasicMongoPersistentProperty.java | 18 +---- .../core/mapping/MongoPersistentProperty.java | 2 +- .../core/mapping/MongoSimpleTypes.java | 73 +++---------------- .../core/mapreduce/MapReduceOptions.java | 12 +-- .../core/messaging/CursorReadingTask.java | 6 +- .../core/messaging/TailableCursorTask.java | 1 - .../data/mongodb/core/messaging/Task.java | 2 +- .../data/mongodb/core/query/BasicUpdate.java | 2 +- .../data/mongodb/core/query/Meta.java | 2 +- .../mongodb/core/query/MongoRegexCreator.java | 2 +- .../data/mongodb/core/query/Term.java | 2 +- .../data/mongodb/core/query/TextQuery.java | 2 +- .../data/mongodb/core/query/Update.java | 2 +- .../core/schema/TypedJsonSchemaObject.java | 4 +- .../mongodb/core/spel/ExpressionNode.java | 2 +- .../data/mongodb/core/spel/LiteralNode.java | 19 +---- .../data/mongodb/core/spel/OperatorNode.java | 53 +++----------- .../repository/query/MongoParameters.java | 10 +-- .../repository/query/MongoQueryCreator.java | 44 ++++------- .../repository/query/MongoQueryMethod.java | 2 +- .../query/ReactiveMongoQueryMethod.java | 2 +- .../query/ReactivePartTreeMongoQuery.java | 2 +- .../IndexEnsuringQueryCreationListener.java | 5 +- .../ReactiveSpringDataMongodbQuery.java | 2 +- .../support/SpringDataMongodbSerializer.java | 15 +--- .../data/mongodb/util/DBObjectUtils.java | 8 +- .../util/encryption/EncryptionUtils.java | 1 - .../EvaluationContextExpressionEvaluator.java | 2 +- .../convert/MappingMongoConverterTests.java | 4 +- .../data/mongodb/core/geo/GeoJsonTests.java | 5 +- .../test/util/MappingContextConfigurer.java | 2 +- 77 files changed, 184 insertions(+), 435 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/SessionAwareMethodInterceptor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/SessionAwareMethodInterceptor.java index 3dda12af12..853271c19c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/SessionAwareMethodInterceptor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/SessionAwareMethodInterceptor.java @@ -135,12 +135,8 @@ protected Object decorate(Object target) { private static boolean requiresSession(Method method) { - if (method.getParameterCount() == 0 - || !ClassUtils.isAssignable(ClientSession.class, method.getParameterTypes()[0])) { - return true; - } - - return false; + return method.getParameterCount() == 0 + || !ClassUtils.isAssignable(ClientSession.class, method.getParameterTypes()[0]); } private static Object[] prependSessionToArguments(ClientSession session, MethodInvocation invocation) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/SessionSynchronization.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/SessionSynchronization.java index 714648a291..5adb4cc4ba 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/SessionSynchronization.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/SessionSynchronization.java @@ -48,5 +48,5 @@ public enum SessionSynchronization { * * @since 3.2.5 */ - NEVER; + NEVER } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/MongoAotPredicates.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/MongoAotPredicates.java index 746cea3ecb..86da1cc4bb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/MongoAotPredicates.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/aot/MongoAotPredicates.java @@ -31,7 +31,7 @@ public class MongoAotPredicates { public static final Predicate> IS_SIMPLE_TYPE = (type) -> MongoSimpleTypes.HOLDER.isSimpleType(type) || TypeUtils.type(type).isPartOf("org.bson"); - public static final Predicate IS_REACTIVE_LIBARARY_AVAILABLE = (lib) -> ReactiveWrappers.isAvailable(lib); + public static final Predicate IS_REACTIVE_LIBARARY_AVAILABLE = ReactiveWrappers::isAvailable; public static final Predicate IS_SYNC_CLIENT_PRESENT = (classLoader) -> ClassUtils.isPresent("com.mongodb.client.MongoClient", classLoader); public static boolean isReactorPresent() { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java index 99b7384f1d..32d11f8255 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java @@ -18,8 +18,6 @@ import static org.springframework.data.mongodb.config.BeanNames.*; import java.io.IOException; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; import java.util.Set; @@ -63,7 +61,6 @@ import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; - import org.w3c.dom.Element; /** @@ -97,7 +94,7 @@ public BeanDefinition parse(Element element, ParserContext parserContext) { id = StringUtils.hasText(id) ? id : DEFAULT_CONVERTER_BEAN_NAME; String autoIndexCreation = element.getAttribute("auto-index-creation"); - boolean autoIndexCreationEnabled = StringUtils.hasText(autoIndexCreation) && Boolean.valueOf(autoIndexCreation); + boolean autoIndexCreationEnabled = StringUtils.hasText(autoIndexCreation) && Boolean.parseBoolean(autoIndexCreation); parserContext.pushContainingComponent(new CompositeComponentDefinition("Mapping Mongo Converter", element)); @@ -371,7 +368,7 @@ public NegatingFilter(TypeFilter... filters) { Assert.notNull(filters, "TypeFilters must not be null"); - this.delegates = new HashSet<>(Arrays.asList(filters)); + this.delegates = Set.of(filters); } public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java index c682fb57d8..3ace9f6325 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoCredentialPropertyEditor.java @@ -16,9 +16,9 @@ package org.springframework.data.mongodb.config; import java.beans.PropertyEditorSupport; -import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -228,10 +228,6 @@ private static void verifyUserNamePresent(String[] source) { } private static String decodeParameter(String it) { - try { - return URLDecoder.decode(it, "UTF-8"); - } catch (UnsupportedEncodingException e) { - throw new IllegalArgumentException("o_O UTF-8 not supported", e); - } + return URLDecoder.decode(it, StandardCharsets.UTF_8); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoDbFactoryParser.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoDbFactoryParser.java index 9cc3e56745..4c72af7157 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoDbFactoryParser.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoDbFactoryParser.java @@ -18,8 +18,6 @@ import static org.springframework.data.config.ParsingUtils.*; import static org.springframework.data.mongodb.config.MongoParsingUtils.*; -import java.util.Collections; -import java.util.HashSet; import java.util.Set; import org.springframework.beans.factory.BeanDefinitionStoreException; @@ -51,16 +49,7 @@ */ public class MongoDbFactoryParser extends AbstractBeanDefinitionParser { - private static final Set MONGO_URI_ALLOWED_ADDITIONAL_ATTRIBUTES; - - static { - - Set mongoUriAllowedAdditionalAttributes = new HashSet(); - mongoUriAllowedAdditionalAttributes.add("id"); - mongoUriAllowedAdditionalAttributes.add("write-concern"); - - MONGO_URI_ALLOWED_ADDITIONAL_ATTRIBUTES = Collections.unmodifiableSet(mongoUriAllowedAdditionalAttributes); - } + private static final Set MONGO_URI_ALLOWED_ADDITIONAL_ATTRIBUTES = Set.of("id", "write-concern"); @Override protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/AggregationUtil.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/AggregationUtil.java index 97635d5d90..190a196dfc 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/AggregationUtil.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/AggregationUtil.java @@ -43,9 +43,9 @@ */ class AggregationUtil { - QueryMapper queryMapper; - MappingContext, MongoPersistentProperty> mappingContext; - Lazy untypedMappingContext; + final QueryMapper queryMapper; + final MappingContext, MongoPersistentProperty> mappingContext; + final Lazy untypedMappingContext; AggregationUtil(QueryMapper queryMapper, MappingContext, MongoPersistentProperty> mappingContext) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/BulkOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/BulkOperations.java index c9d67d1e36..e04bcfb78a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/BulkOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/BulkOperations.java @@ -60,7 +60,7 @@ enum BulkMode { /** Perform bulk operations in parallel. Processing will continue on errors. */ UNORDERED - }; + } /** * Add a single insert to the bulk operation. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/EntityOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/EntityOperations.java index 8d95fd9331..a730d24d68 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/EntityOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/EntityOperations.java @@ -642,7 +642,7 @@ private Object resolveValue(String key, @Nullable MongoPersistentEntity sourc PropertyPath from = PropertyPath.from(key, sourceEntity.getTypeInformation()); PersistentPropertyPath persistentPropertyPath = entityOperations.context .getPersistentPropertyPath(from); - return BsonUtils.resolveValue(map, persistentPropertyPath.toDotPath(p -> p.getFieldName())); + return BsonUtils.resolveValue(map, persistentPropertyPath.toDotPath(MongoPersistentProperty::getFieldName)); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappedDocument.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappedDocument.java index d25d93fef0..2d86404b13 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappedDocument.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappedDocument.java @@ -115,7 +115,7 @@ public void updateId(Object value) { * @author Christoph Strobl * @since 2.2 */ - class MappedUpdate implements UpdateDefinition { + static class MappedUpdate implements UpdateDefinition { private final Update delegate; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoActionOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoActionOperation.java index 467f6586fc..6914263d00 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoActionOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoActionOperation.java @@ -26,5 +26,5 @@ */ public enum MongoActionOperation { - REMOVE, UPDATE, INSERT, INSERT_LIST, SAVE, BULK, REPLACE; + REMOVE, UPDATE, INSERT, INSERT_LIST, SAVE, BULK, REPLACE } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java index 78329b9ff8..9937021f9d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java @@ -15,13 +15,9 @@ */ package org.springframework.data.mongodb.core; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; import java.util.Set; import org.bson.BsonInvalidOperationException; - import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.dao.DataIntegrityViolationException; @@ -55,18 +51,17 @@ */ public class MongoExceptionTranslator implements PersistenceExceptionTranslator { - private static final Set DUPLICATE_KEY_EXCEPTIONS = new HashSet<>( - Arrays.asList("MongoException.DuplicateKey", "DuplicateKeyException")); + private static final Set DUPLICATE_KEY_EXCEPTIONS = Set.of("MongoException.DuplicateKey", + "DuplicateKeyException"); - private static final Set RESOURCE_FAILURE_EXCEPTIONS = new HashSet<>( - Arrays.asList("MongoException.Network", "MongoSocketException", "MongoException.CursorNotFound", - "MongoCursorNotFoundException", "MongoServerSelectionException", "MongoTimeoutException")); + private static final Set RESOURCE_FAILURE_EXCEPTIONS = Set.of("MongoException.Network", + "MongoSocketException", "MongoException.CursorNotFound", "MongoCursorNotFoundException", + "MongoServerSelectionException", "MongoTimeoutException"); - private static final Set RESOURCE_USAGE_EXCEPTIONS = new HashSet<>( - Collections.singletonList("MongoInternalException")); + private static final Set RESOURCE_USAGE_EXCEPTIONS = Set.of("MongoInternalException"); - private static final Set DATA_INTEGRITY_EXCEPTIONS = new HashSet<>( - Arrays.asList("WriteConcernException", "MongoWriteException", "MongoBulkWriteException")); + private static final Set DATA_INTEGRITY_EXCEPTIONS = Set.of("WriteConcernException", "MongoWriteException", + "MongoBulkWriteException"); private static final Set SECURITY_EXCEPTIONS = Set.of("MongoCryptException"); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index ed85da9eb5..351bbd63a5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -1379,12 +1379,7 @@ protected Collection doInsertAll(Collection listToSave, Mong } String collection = getCollectionName(ClassUtils.getUserClass(element)); - List collectionElements = elementsByCollection.get(collection); - - if (null == collectionElements) { - collectionElements = new ArrayList<>(); - elementsByCollection.put(collection, collectionElements); - } + List collectionElements = elementsByCollection.computeIfAbsent(collection, k -> new ArrayList<>()); collectionElements.add(element); } @@ -2315,11 +2310,9 @@ public ExecutableInsert insert(Class domainType) { protected String replaceWithResourceIfNecessary(String function) { - String func = function; - if (this.resourceLoader != null && ResourceUtils.isUrl(function)) { - Resource functionResource = resourceLoader.getResource(func); + Resource functionResource = resourceLoader.getResource(function); if (!functionResource.exists()) { throw new InvalidDataAccessApiUsageException(String.format("Resource %s not found", function)); @@ -2339,7 +2332,7 @@ protected String replaceWithResourceIfNecessary(String function) { } } - return func; + return function; } @Override @@ -2698,8 +2691,6 @@ Document getMappedValidator(Validator validator, Class domainType) { protected T doFindAndRemove(CollectionPreparer collectionPreparer, String collectionName, Document query, Document fields, Document sort, @Nullable Collation collation, Class entityClass) { - EntityReader readerToUse = this.mongoConverter; - if (LOGGER.isDebugEnabled()) { LOGGER.debug(String.format("findAndRemove using query: %s fields: %s sort: %s for class: %s in collection: %s", serializeToJsonSafely(query), fields, sort, entityClass, collectionName)); @@ -2709,7 +2700,7 @@ protected T doFindAndRemove(CollectionPreparer collectionPreparer, String co return executeFindOneInternal(new FindAndRemoveCallback(collectionPreparer, queryMapper.getMappedObject(query, entity), fields, sort, collation), - new ReadDocumentCallback<>(readerToUse, entityClass, collectionName), collectionName); + new ReadDocumentCallback<>(this.mongoConverter, entityClass, collectionName), collectionName); } @SuppressWarnings("ConstantConditions") @@ -2717,8 +2708,6 @@ protected T doFindAndModify(CollectionPreparer collectionPreparer, String co Document fields, Document sort, Class entityClass, UpdateDefinition update, @Nullable FindAndModifyOptions options) { - EntityReader readerToUse = this.mongoConverter; - if (options == null) { options = new FindAndModifyOptions(); } @@ -2742,7 +2731,7 @@ protected T doFindAndModify(CollectionPreparer collectionPreparer, String co return executeFindOneInternal( new FindAndModifyCallback(collectionPreparer, mappedQuery, fields, sort, mappedUpdate, update.getArrayFilters().stream().map(ArrayFilter::asDocument).collect(Collectors.toList()), options), - new ReadDocumentCallback<>(readerToUse, entityClass, collectionName), collectionName); + new ReadDocumentCallback<>(this.mongoConverter, entityClass, collectionName), collectionName); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java index 050149ce43..46bdb75716 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java @@ -433,7 +433,7 @@ Document getMappedSort(@Nullable MongoPersistentEntity entity) { * @param consumer must not be {@literal null}. */ void applyCollation(@Nullable Class domainType, Consumer consumer) { - getCollation(domainType).ifPresent(consumer::accept); + getCollation(domainType).ifPresent(consumer); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java index 1e2c834a3a..4d065d7bba 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java @@ -1810,8 +1810,7 @@ protected Mono doUpdate(String collectionName, Query query, @Nulla Document updateObj = updateContext.getMappedUpdate(entity); if (containsVersionProperty(queryObj, entity)) - throw new OptimisticLockingFailureException("Optimistic lock exception on saving entity: " - + updateObj.toString() + " to collection " + collectionName); + throw new OptimisticLockingFailureException("Optimistic lock exception on saving entity %s to collection %s".formatted(entity.getName(), collectionName)); } } }); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ScrollUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ScrollUtils.java index 1f193f2e7b..4934e5b0b9 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ScrollUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ScrollUtils.java @@ -199,7 +199,7 @@ protected List postPostProcessResults(List list, int limit) { } /** - * Reverse scrolling director variant applying {@link KeysetScrollPosition.Direction#Backward}. In reverse scrolling, + * Reverse scrolling director variant applying {@link KeysetScrollPosition.Direction#BACKWARD}. In reverse scrolling, * we need to flip directions for the actual query so that we do not get everything from the top position and apply * the limit but rather flip the sort direction, apply the limit and then reverse the result to restore the actual * sort order. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java index f87a656b77..a0ed40170d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java @@ -31,8 +31,8 @@ /** * Holds a set of configurable aggregation options that can be used within an aggregation pipeline. A list of support - * aggregation options can be found in the MongoDB reference documentation - * https://docs.mongodb.org/manual/reference/command/aggregate/#aggregate + * aggregation options can be found in the + * MongoDB reference documentation. * * @author Thomas Darimont * @author Oliver Gierke @@ -655,7 +655,7 @@ private enum ResultOptions { /** * Read the aggregation result from the cursor. */ - READ; + READ } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationUtils.java index bb18fad69d..7725d85f5b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationUtils.java @@ -41,7 +41,7 @@ static List toRangeValues(Range range) { List result = new ArrayList(2); result.add(range.getLowerBound().getValue() .orElseThrow(() -> new IllegalArgumentException("Lower bound of range must be bounded"))); - range.getUpperBound().getValue().ifPresent(it -> result.add(it)); + range.getUpperBound().getValue().ifPresent(result::add); return result; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperationSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperationSupport.java index 6f3af7c176..316a8693a3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperationSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketOperationSupport.java @@ -368,7 +368,7 @@ private enum Accumulators { SUM("$sum"), AVG("$avg"), FIRST("$first"), LAST("$last"), MAX("$max"), MIN("$min"), PUSH("$push"), ADDTOSET( "$addToSet"); - private String mongoOperator; + private final String mongoOperator; Accumulators(String mongoOperator) { this.mongoOperator = mongoOperator; @@ -388,7 +388,7 @@ protected static class Outputs implements AggregationExpression { protected static final Outputs EMPTY = new Outputs(); - private List outputs; + private final List outputs; /** * Creates a new, empty {@link Outputs}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ExposedFields.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ExposedFields.java index dbaee5bf8f..8ef085b049 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ExposedFields.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ExposedFields.java @@ -141,7 +141,7 @@ public ExposedFields and(ExposedField field) { Assert.notNull(field, "Exposed field must not be null"); - ArrayList result = new ArrayList(); + ArrayList result = new ArrayList<>(); result.addAll(field.synthetic ? syntheticFields : originalFields); result.add(field); @@ -300,12 +300,10 @@ public boolean equals(@Nullable Object obj) { return true; } - if (!(obj instanceof ExposedField)) { + if (!(obj instanceof ExposedField that)) { return false; } - ExposedField that = (ExposedField) obj; - return this.field.equals(that.field) && this.synthetic == that.synthetic; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java index a2fe238627..f718cc92e5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java @@ -17,7 +17,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.HashSet; import java.util.List; import java.util.Set; @@ -43,8 +42,7 @@ */ public class GraphLookupOperation implements InheritsFieldsAggregationOperation { - private static final Set> ALLOWED_START_TYPES = new HashSet>( - Arrays.> asList(AggregationExpression.class, String.class, Field.class, Document.class)); + private static final Set> ALLOWED_START_TYPES = Set.of(AggregationExpression.class, String.class, Field.class, Document.class); private final String from; private final List startWith; @@ -329,7 +327,7 @@ public static final class GraphLookupOperationBuilder { private @Nullable Field depthField; private @Nullable CriteriaDefinition restrictSearchWithMatch; - protected GraphLookupOperationBuilder(String from, List startWith, String connectFrom, + private GraphLookupOperationBuilder(String from, List startWith, String connectFrom, String connectTo) { this.from = from; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java index 30bfd95627..64c5748481 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java @@ -16,7 +16,6 @@ package org.springframework.data.mongodb.core.aggregation; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -96,7 +95,7 @@ private GroupOperation(GroupOperation groupOperation, List nextOperat * @return */ protected GroupOperation and(Operation operation) { - return new GroupOperation(this, Arrays.asList(operation)); + return new GroupOperation(this, List.of(operation)); } /** @@ -457,12 +456,12 @@ interface Keyword { String toString(); } - private static enum GroupOps implements Keyword { + private enum GroupOps implements Keyword { SUM("$sum"), LAST("$last"), FIRST("$first"), PUSH("$push"), AVG("$avg"), MIN("$min"), MAX("$max"), ADD_TO_SET( "$addToSet"), STD_DEV_POP("$stdDevPop"), STD_DEV_SAMP("$stdDevSamp"); - private String mongoOperator; + private final String mongoOperator; GroupOps(String mongoOperator) { this.mongoOperator = mongoOperator; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LimitOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LimitOperation.java index 02c613c8d1..2039f301da 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LimitOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LimitOperation.java @@ -45,7 +45,7 @@ public LimitOperation(long maxElements) { @Override public Document toDocument(AggregationOperationContext context) { - return new Document(getOperator(), Long.valueOf(maxElements)); + return new Document(getOperator(), maxElements); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LookupOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LookupOperation.java index 44d0f1569e..c7ea0ad6e5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LookupOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LookupOperation.java @@ -158,7 +158,7 @@ public static FromBuilder newLookup() { return new LookupOperationBuilder(); } - public static interface FromBuilder { + public interface FromBuilder { /** * @param name the collection in the same database to perform the join with, must not be {@literal null} or empty. @@ -167,7 +167,7 @@ public static interface FromBuilder { LocalFieldBuilder from(String name); } - public static interface LocalFieldBuilder extends PipelineBuilder { + public interface LocalFieldBuilder extends PipelineBuilder { /** * @param name the field from the documents input to the {@code $lookup} stage, must not be {@literal null} or @@ -177,7 +177,7 @@ public static interface LocalFieldBuilder extends PipelineBuilder { ForeignFieldBuilder localField(String name); } - public static interface ForeignFieldBuilder { + public interface ForeignFieldBuilder { /** * @param name the field from the documents in the {@code from} collection, must not be {@literal null} or empty. @@ -246,7 +246,7 @@ default AsBuilder pipeline(AggregationOperation... stages) { LookupOperation as(String name); } - public static interface AsBuilder extends PipelineBuilder { + public interface AsBuilder extends PipelineBuilder { /** * @param name the name of the new array field to add to the input documents, must not be {@literal null} or empty. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java index 90542fa99e..dd82119349 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java @@ -18,7 +18,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.Map; import org.bson.Document; import org.springframework.util.Assert; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/OutOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/OutOperation.java index 5db22ceb46..da6c32efdc 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/OutOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/OutOperation.java @@ -241,7 +241,7 @@ public enum OutMode { */ REPLACE_COLLECTION("replaceCollection"); - private String mode; + private final String mode; OutMode(String mode) { this.mode = mode; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ScriptOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ScriptOperators.java index 73185a67dd..d8d74e8d22 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ScriptOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ScriptOperators.java @@ -224,7 +224,7 @@ enum Fields { LANG("lang"), // MERGE("merge"); // - private String field; + private final String field; Fields(String field) { this.field = field; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SkipOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SkipOperation.java index c058880d3d..8ea2a7c30f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SkipOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SkipOperation.java @@ -21,7 +21,7 @@ /** * Encapsulates the aggregation framework {@code $skip}-operation. *

- * We recommend to use the static factory method {@link Aggregation#skip(int)} instead of creating instances of this + * We recommend to use the static factory method {@link Aggregation#skip(long)} instead of creating instances of this * class directly. * * @author Thomas Darimont diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformer.java index d979036e33..31cf81a794 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformer.java @@ -17,7 +17,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import org.bson.Document; @@ -66,19 +65,11 @@ class SpelExpressionTransformer implements AggregationExpressionTransformer { * Creates a new {@link SpelExpressionTransformer}. */ SpelExpressionTransformer() { - - List> conversions = new ArrayList>(); - conversions.add(new OperatorNodeConversion(this)); - conversions.add(new LiteralNodeConversion(this)); - conversions.add(new IndexerNodeConversion(this)); - conversions.add(new InlineListNodeConversion(this)); - conversions.add(new PropertyOrFieldReferenceNodeConversion(this)); - conversions.add(new CompoundExpressionNodeConversion(this)); - conversions.add(new MethodReferenceNodeConversion(this)); - conversions.add(new NotOperatorNodeConversion(this)); - conversions.add(new ValueRetrievingNodeConversion(this)); - - this.conversions = Collections.unmodifiableList(conversions); + this.conversions = List.of(new OperatorNodeConversion(this), new LiteralNodeConversion(this), + new IndexerNodeConversion(this), new InlineListNodeConversion(this), + new PropertyOrFieldReferenceNodeConversion(this), new CompoundExpressionNodeConversion(this), + new MethodReferenceNodeConversion(this), new NotOperatorNodeConversion(this), + new ValueRetrievingNodeConversion(this)); } /** @@ -282,7 +273,7 @@ private Object convertUnaryMinusOp(ExpressionTransformationContextSupport argList = new ArrayList<>(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnwindOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnwindOperation.java index af88d76f1b..29ed3e9829 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnwindOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnwindOperation.java @@ -128,7 +128,7 @@ public static PathBuilder newUnwind() { * @author Mark Paluch * @since 1.10 */ - public static interface PathBuilder { + public interface PathBuilder { /** * @param path the path to unwind, must not be {@literal null} or empty. @@ -141,7 +141,7 @@ public static interface PathBuilder { * @author Mark Paluch * @since 1.10 */ - public static interface IndexBuilder { + public interface IndexBuilder { /** * Exposes the array index as {@code field}. @@ -159,7 +159,7 @@ public static interface IndexBuilder { EmptyArraysBuilder noArrayIndex(); } - public static interface EmptyArraysBuilder { + public interface EmptyArraysBuilder { /** * Output documents if the array is null or empty. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultMongoTypeMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultMongoTypeMapper.java index 87e1433a18..7b34c706ff 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultMongoTypeMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/DefaultMongoTypeMapper.java @@ -124,7 +124,7 @@ private DefaultMongoTypeMapper(@Nullable String typeKey, TypeAliasAccessor } public boolean isTypeKey(String key) { - return typeKey == null ? false : typeKey.equals(key); + return typeKey != null && typeKey.equals(key); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java index 5f1f79d337..6505d3a920 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/GeoConverters.java @@ -244,7 +244,7 @@ public Document convert(Circle source) { * @since 1.5 */ @ReadingConverter - static enum DocumentToCircleConverter implements Converter { + enum DocumentToCircleConverter implements Converter { INSTANCE; @@ -281,7 +281,7 @@ public Circle convert(Document source) { * @author Thomas Darimont * @since 1.5 */ - static enum SphereToDocumentConverter implements Converter { + enum SphereToDocumentConverter implements Converter { INSTANCE; @@ -591,7 +591,7 @@ public GeoJsonPolygon convert(Document source) { * @author Christoph Strobl * @since 1.7 */ - static enum DocumentToGeoJsonMultiPolygonConverter implements Converter { + enum DocumentToGeoJsonMultiPolygonConverter implements Converter { INSTANCE; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 921eed270c..31ba77fe89 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -1488,9 +1488,7 @@ protected Map readMap(ConversionContext context, Bson bson, Type key = doConvert(key, rawKeyType); } - Object value = v; - map.put(key, value == null ? value : context.convert(value, valueType)); - + map.put(key, v == null ? v : context.convert(v, valueType)); }); return map; @@ -1611,11 +1609,10 @@ public List maybeConvertList(Iterable source, @Nullable TypeInformati @SuppressWarnings("unchecked") private Object removeTypeInfo(Object object, boolean recursively) { - if (!(object instanceof Document)) { + if (!(object instanceof Document document)) { return object; } - Document document = (Document) object; String keyToRemove = null; for (String key : document.keySet()) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java index fca782db6c..2e8d3b9cca 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java @@ -151,8 +151,7 @@ public static class MongoConverterConfigurationAdapter { * List of {@literal java.time} types having different representation when rendered via the native * {@link org.bson.codecs.Codec} than the Spring Data {@link Converter}. */ - private static final Set> JAVA_DRIVER_TIME_SIMPLE_TYPES = new HashSet<>( - Arrays.asList(LocalDate.class, LocalTime.class, LocalDateTime.class)); + private static final Set> JAVA_DRIVER_TIME_SIMPLE_TYPES = Set.of(LocalDate.class, LocalTime.class, LocalDateTime.class); private boolean useNativeDriverJavaTimeCodecs = false; private final List customConverters = new ArrayList<>(); @@ -369,12 +368,8 @@ ConverterConfiguration createConverterConfiguration() { // Avoid default registrations - if (JAVA_DRIVER_TIME_SIMPLE_TYPES.contains(convertiblePair.getSourceType()) - && Date.class.isAssignableFrom(convertiblePair.getTargetType())) { - return false; - } - - return true; + return !JAVA_DRIVER_TIME_SIMPLE_TYPES.contains(convertiblePair.getSourceType()) + || !Date.class.isAssignableFrom(convertiblePair.getTargetType()); }, this.propertyValueConversions); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java index 156108c563..e8e1cbe9cd 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java @@ -301,7 +301,7 @@ private Document filterUnwrappedObjects(Document fieldsObject, @Nullable MongoPe PropertyPath path = PropertyPath.from(field.getKey(), entity.getTypeInformation()); PersistentPropertyPath persistentPropertyPath = mappingContext .getPersistentPropertyPath(path); - MongoPersistentProperty property = mappingContext.getPersistentPropertyPath(path).getRequiredLeafProperty(); + MongoPersistentProperty property = mappingContext.getPersistentPropertyPath(path).getLeafProperty(); if (property.isUnwrapped() && property.isEntity()) { @@ -615,22 +615,17 @@ protected Object convertSimpleOrDocument(Object source, @Nullable MongoPersisten return source; } - if (source instanceof Map) { + if (source instanceof Map sourceMap) { - Map map = new LinkedHashMap<>(); - - ((Map) source).entrySet().forEach(it -> { - - String key = ObjectUtils.nullSafeToString(converter.convertToMongoType(it.getKey())); - - if (it.getValue()instanceof Document document) { - map.put(key, getMappedObject(document, entity)); - } else { - map.put(key, delegateConvertToMongoType(it.getValue(), entity)); - } - }); - - return map; + return sourceMap.entrySet().stream().collect(Collectors.toMap( + entry -> ObjectUtils.nullSafeToString(converter.convertToMongoType(entry.getKey())), + entry -> { + if (entry.getValue() instanceof Document document) { + return getMappedObject(document, entity); + } + return delegateConvertToMongoType(entry.getValue(), entity); + } + )); } return delegateConvertToMongoType(source, entity); @@ -879,8 +874,7 @@ private Object applyFieldTargetTypeHintToValue(Field documentField, @Nullable Ob */ static class Keyword { - private static final Set NON_DBREF_CONVERTING_KEYWORDS = new HashSet<>( - Arrays.asList("$", "$size", "$slice", "$gt", "$lt")); + private static final Set NON_DBREF_CONVERTING_KEYWORDS = Set.of("$", "$size", "$slice", "$gt", "$lt"); private final String key; private final Object value; @@ -1336,11 +1330,8 @@ private PropertyPath forName(String path) { private boolean isPathToJavaLangClassProperty(PropertyPath path) { - if ((path.getType() == Class.class || path.getType().equals(Object.class)) - && path.getLeafProperty().getType() == Class.class) { - return true; - } - return false; + return (path.getType() == Class.class || path.getType().equals(Object.class)) + && path.getLeafProperty().getType() == Class.class; } private static String resolvePath(String source) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/ExplicitEncryptionContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/ExplicitEncryptionContext.java index 729a5ccd46..50349ba2ae 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/ExplicitEncryptionContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/ExplicitEncryptionContext.java @@ -20,7 +20,6 @@ import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty; import org.springframework.data.util.TypeInformation; import org.springframework.expression.EvaluationContext; -import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonPoint.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonPoint.java index dc9efaaa4b..f37fe5d11f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonPoint.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/geo/GeoJsonPoint.java @@ -67,6 +67,6 @@ public String getType() { */ @Override public List getCoordinates() { - return Arrays.asList(Double.valueOf(getX()), Double.valueOf(getY())); + return Arrays.asList(getX(), getY()); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/DurationStyle.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/DurationStyle.java index cbbe62ab6e..c16c777f01 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/DurationStyle.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/DurationStyle.java @@ -176,7 +176,7 @@ enum Unit { private final String suffix; - private Function longValue; + private final Function longValue; Unit(ChronoUnit chronoUnit, String suffix, Function toUnit) { this.chronoUnit = chronoUnit; @@ -185,7 +185,7 @@ enum Unit { } public Duration parse(String value) { - return Duration.of(Long.valueOf(value), this.chronoUnit); + return Duration.of(Long.parseLong(value), this.chronoUnit); } public long longValue(Duration value) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/GeospatialIndex.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/GeospatialIndex.java index eaa00ac01c..05d43a3a65 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/GeospatialIndex.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/GeospatialIndex.java @@ -72,7 +72,7 @@ public GeospatialIndex named(String name) { * @return this. */ public GeospatialIndex withMin(int min) { - this.min = Integer.valueOf(min); + this.min = min; return this; } @@ -81,7 +81,7 @@ public GeospatialIndex withMin(int min) { * @return this. */ public GeospatialIndex withMax(int max) { - this.max = Integer.valueOf(max); + this.max = max; return this; } @@ -90,7 +90,7 @@ public GeospatialIndex withMax(int max) { * @return this. */ public GeospatialIndex withBits(int bits) { - this.bits = Integer.valueOf(bits); + this.bits = bits; return this; } @@ -163,25 +163,16 @@ public Document getIndexKeys() { Document document = new Document(); switch (type) { - - case GEO_2D: - document.put(field, "2d"); - break; - - case GEO_2DSPHERE: - document.put(field, "2dsphere"); - break; - - case GEO_HAYSTACK: + case GEO_2D -> document.put(field, "2d"); + case GEO_2DSPHERE -> document.put(field, "2dsphere"); + case GEO_HAYSTACK -> { document.put(field, "geoHaystack"); if (!StringUtils.hasText(additionalField)) { throw new IllegalArgumentException("When defining geoHaystack index, an additionnal field must be defined"); } document.put(additionalField, 1); - break; - - default: - throw new IllegalArgumentException("Unsupported geospatial index " + type); + } + default -> throw new IllegalArgumentException("Unsupported geospatial index " + type); } return document; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexDirection.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexDirection.java index c62d8895b7..25442afe24 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexDirection.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexDirection.java @@ -19,5 +19,5 @@ * @author Jon Brisbin */ public enum IndexDirection { - ASCENDING, DESCENDING; + ASCENDING, DESCENDING } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexField.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexField.java index f12a14a205..725dabbd99 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexField.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexField.java @@ -39,7 +39,7 @@ enum Type { /** * @since 3.3 */ - WILDCARD; + WILDCARD } private final String key; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexInfo.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexInfo.java index 199d98928b..c700fef494 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexInfo.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexInfo.java @@ -24,6 +24,7 @@ import java.util.Collections; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import org.bson.Document; import org.springframework.data.mongodb.util.BsonUtils; @@ -42,8 +43,8 @@ */ public class IndexInfo { - private static final Double ONE = Double.valueOf(1); - private static final Double MINUS_ONE = Double.valueOf(-1); + private static final Double ONE = 1.0; + private static final Double MINUS_ONE = (double) -1; private static final Collection TWO_D_IDENTIFIERS = Arrays.asList("2d", "2dsphere"); private final List indexFields; @@ -68,7 +69,8 @@ public IndexInfo(List indexFields, String name, boolean unique, bool this.hidden = false; } - public IndexInfo(List indexFields, String name, boolean unique, boolean sparse, String language, boolean hidden) { + public IndexInfo(List indexFields, String name, boolean unique, boolean sparse, String language, + boolean hidden) { this.indexFields = Collections.unmodifiableList(indexFields); this.name = name; @@ -188,13 +190,7 @@ public boolean isIndexForFields(Collection keys) { Assert.notNull(keys, "Collection of keys must not be null"); - List indexKeys = new ArrayList(indexFields.size()); - - for (IndexField field : indexFields) { - indexKeys.add(field.getKey()); - } - - return indexKeys.containsAll(keys); + return this.indexFields.stream().map(IndexField::getKey).collect(Collectors.toSet()).containsAll(keys); } public String getName() { @@ -276,7 +272,6 @@ public boolean isHidden() { return hidden; } - @Override public String toString() { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoMappingEventPublisher.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoMappingEventPublisher.java index 96fe5cbaae..ef6bd8ae08 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoMappingEventPublisher.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoMappingEventPublisher.java @@ -21,8 +21,6 @@ import org.springframework.context.ApplicationListener; import org.springframework.data.mapping.context.MappingContextEvent; import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; -import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty; import org.springframework.data.mongodb.core.mapping.event.AfterLoadEvent; import org.springframework.data.mongodb.core.mapping.event.AfterSaveEvent; import org.springframework.util.Assert; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java index da14cb197f..7c4325c453 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java @@ -1115,7 +1115,7 @@ public String toString() { static class TextIndexIncludeOptions { enum IncludeStrategy { - FORCE, DEFAULT; + FORCE, DEFAULT } private final IncludeStrategy strategy; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/TextIndexDefinition.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/TextIndexDefinition.java index a22cf4eed8..975501762f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/TextIndexDefinition.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/TextIndexDefinition.java @@ -205,12 +205,10 @@ public boolean equals(@Nullable Object obj) { if (obj == null) { return false; } - if (!(obj instanceof TextIndexedFieldSpec)) { + if (!(obj instanceof TextIndexedFieldSpec other)) { return false; } - TextIndexedFieldSpec other = (TextIndexedFieldSpec) obj; - return ObjectUtils.nullSafeEquals(this.fieldname, other.fieldname); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java index 0481049659..3f3820dd8b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java @@ -213,7 +213,7 @@ private void verifyFieldTypes() { * * @author Oliver Gierke */ - static enum MongoPersistentPropertyComparator implements Comparator { + enum MongoPersistentPropertyComparator implements Comparator { INSTANCE; @@ -257,7 +257,7 @@ protected MongoPersistentProperty returnPropertyIfBetterIdPropertyCandidateOrNul boolean currentIdPropertyIsSet = currentIdProperty != null; @SuppressWarnings("null") - boolean currentIdPropertyIsExplicit = currentIdPropertyIsSet ? currentIdProperty.isExplicitIdProperty() : false; + boolean currentIdPropertyIsExplicit = currentIdPropertyIsSet && currentIdProperty.isExplicitIdProperty(); boolean newIdPropertyIsExplicit = property.isExplicitIdProperty(); if (!currentIdPropertyIsSet) { @@ -333,7 +333,7 @@ private void assertUniqueness(MongoPersistentProperty property) { if (existingProperty != null) { throw new MappingException( - String.format(AMBIGUOUS_FIELD_MAPPING, property.toString(), existingProperty.toString(), fieldName)); + String.format(AMBIGUOUS_FIELD_MAPPING, property, existingProperty, fieldName)); } properties.put(fieldName, property); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java index cfd14672b7..77582047f5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java @@ -15,17 +15,14 @@ */ package org.springframework.data.mongodb.core.mapping; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.HashSet; import java.util.List; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.bson.types.ObjectId; import org.springframework.data.mapping.Association; import org.springframework.data.mapping.MappingException; import org.springframework.data.mapping.model.AnnotationBasedPersistentProperty; @@ -60,18 +57,7 @@ public class BasicMongoPersistentProperty extends AnnotationBasedPersistentPrope public static final String ID_FIELD_NAME = FieldName.ID.name(); private static final String LANGUAGE_FIELD_NAME = "language"; - private static final Set> SUPPORTED_ID_TYPES = new HashSet>(); - private static final Set SUPPORTED_ID_PROPERTY_NAMES = new HashSet(); - - static { - - SUPPORTED_ID_TYPES.add(ObjectId.class); - SUPPORTED_ID_TYPES.add(String.class); - SUPPORTED_ID_TYPES.add(BigInteger.class); - - SUPPORTED_ID_PROPERTY_NAMES.add("id"); - SUPPORTED_ID_PROPERTY_NAMES.add(ID_FIELD_NAME); - } + private static final Set SUPPORTED_ID_PROPERTY_NAMES = Set.of("id", ID_FIELD_NAME); private final FieldNamingStrategy fieldNamingStrategy; @@ -235,7 +221,7 @@ public boolean isLanguageProperty() { @Override public boolean isExplicitLanguageProperty() { return isAnnotationPresent(Language.class); - }; + } @Override public boolean isTextScoreProperty() { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java index b0ef8a1d4c..4d4e1e4986 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoPersistentProperty.java @@ -158,7 +158,7 @@ public interface MongoPersistentProperty extends PersistentProperty> AUTOGENERATED_ID_TYPES; - - static { - Set> classes = new HashSet<>(); - classes.add(ObjectId.class); - classes.add(String.class); - classes.add(BigInteger.class); - AUTOGENERATED_ID_TYPES = Collections.unmodifiableSet(classes); - - Set> simpleTypes = new HashSet<>(); - simpleTypes.add(Binary.class); - simpleTypes.add(DBRef.class); - simpleTypes.add(Decimal128.class); - simpleTypes.add(org.bson.Document.class); - simpleTypes.add(Code.class); - simpleTypes.add(CodeWScope.class); - simpleTypes.add(CodeWithScope.class); - simpleTypes.add(ObjectId.class); - simpleTypes.add(Pattern.class); - simpleTypes.add(Symbol.class); - simpleTypes.add(UUID.class); - simpleTypes.add(Instant.class); - - simpleTypes.add(BsonValue.class); - simpleTypes.add(BsonNumber.class); - simpleTypes.add(BsonType.class); - simpleTypes.add(BsonArray.class); - simpleTypes.add(BsonSymbol.class); - simpleTypes.add(BsonUndefined.class); - simpleTypes.add(BsonMinKey.class); - simpleTypes.add(BsonMaxKey.class); - simpleTypes.add(BsonNull.class); - simpleTypes.add(BsonBinary.class); - simpleTypes.add(BsonBoolean.class); - simpleTypes.add(BsonDateTime.class); - simpleTypes.add(BsonDbPointer.class); - simpleTypes.add(BsonDecimal128.class); - simpleTypes.add(BsonDocument.class); - simpleTypes.add(BsonDouble.class); - simpleTypes.add(BsonInt32.class); - simpleTypes.add(BsonInt64.class); - simpleTypes.add(BsonJavaScript.class); - simpleTypes.add(BsonJavaScriptWithScope.class); - simpleTypes.add(BsonObjectId.class); - simpleTypes.add(BsonRegularExpression.class); - simpleTypes.add(BsonString.class); - simpleTypes.add(BsonTimestamp.class); - - simpleTypes.add(Geometry.class); - simpleTypes.add(GeometryCollection.class); - simpleTypes.add(LineString.class); - simpleTypes.add(MultiLineString.class); - simpleTypes.add(MultiPoint.class); - simpleTypes.add(MultiPolygon.class); - simpleTypes.add(Point.class); - simpleTypes.add(Polygon.class); - - MONGO_SIMPLE_TYPES = Collections.unmodifiableSet(simpleTypes); - } - - private static final Set> MONGO_SIMPLE_TYPES; + public static final Set> AUTOGENERATED_ID_TYPES = Set.of(ObjectId.class, String.class, BigInteger.class); + private static final Set> MONGO_SIMPLE_TYPES = Set.of(Binary.class, DBRef.class, Decimal128.class, + org.bson.Document.class, Code.class, CodeWScope.class, CodeWithScope.class, ObjectId.class, Pattern.class, + Symbol.class, UUID.class, Instant.class, BsonValue.class, BsonNumber.class, BsonType.class, BsonArray.class, + BsonSymbol.class, BsonUndefined.class, BsonMinKey.class, BsonMaxKey.class, BsonNull.class, BsonBinary.class, + BsonBoolean.class, BsonDateTime.class, BsonDbPointer.class, BsonDecimal128.class, BsonDocument.class, + BsonDouble.class, BsonInt32.class, BsonInt64.class, BsonJavaScript.class, BsonJavaScriptWithScope.class, + BsonObjectId.class, BsonRegularExpression.class, BsonString.class, BsonTimestamp.class, Geometry.class, + GeometryCollection.class, LineString.class, MultiLineString.class, MultiPoint.class, MultiPolygon.class, + Point.class, Polygon.class); public static final SimpleTypeHolder HOLDER = new SimpleTypeHolder(MONGO_SIMPLE_TYPES, true) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceOptions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceOptions.java index d4cfd1e9a8..016643dbaa 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceOptions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapreduce/MapReduceOptions.java @@ -329,15 +329,9 @@ protected Document createOutObject() { out.put("inline", 1); } else { switch (getMapReduceAction()) { - case REPLACE: - out.put("replace", outputCollection); - break; - case MERGE: - out.put("merge", outputCollection); - break; - case REDUCE: - out.put("reduce", outputCollection); - break; + case REPLACE -> out.put("replace", outputCollection); + case MERGE -> out.put("merge", outputCollection); + case REDUCE -> out.put("reduce", outputCollection); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/CursorReadingTask.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/CursorReadingTask.java index 6a53fb12d0..e0fa50880c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/CursorReadingTask.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/CursorReadingTask.java @@ -226,11 +226,7 @@ private static boolean isValidCursor(@Nullable MongoCursor cursor) { return false; } - if (cursor.getServerCursor() == null || cursor.getServerCursor().getId() == 0) { - return false; - } - - return true; + return cursor.getServerCursor() != null && cursor.getServerCursor().getId() != 0; } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorTask.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorTask.java index 1dafe02004..eeeea2b383 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorTask.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorTask.java @@ -21,7 +21,6 @@ import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.convert.QueryMapper; import org.springframework.data.mongodb.core.messaging.SubscriptionRequest.RequestOptions; -import org.springframework.data.mongodb.core.messaging.TailableCursorRequest.TailableCursorRequestOptions; import org.springframework.data.mongodb.core.query.Query; import org.springframework.util.ErrorHandler; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/Task.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/Task.java index 6eb775f51d..babf47fbf2 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/Task.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/Task.java @@ -57,6 +57,6 @@ default boolean isActive() { * @since 2.1 */ enum State { - CREATED, STARTING, RUNNING, CANCELLED; + CREATED, STARTING, RUNNING, CANCELLED } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicUpdate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicUpdate.java index 68dabb589a..abcd2ca77c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicUpdate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/BasicUpdate.java @@ -30,7 +30,7 @@ */ public class BasicUpdate extends Update { - private Document updateObject; + private final Document updateObject; public BasicUpdate(String updateString) { super(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java index 454554a0a6..d8ce577d41 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Meta.java @@ -41,7 +41,7 @@ public class Meta { private enum MetaKey { MAX_TIME_MS("$maxTimeMS"), MAX_SCAN("$maxScan"), COMMENT("$comment"), SNAPSHOT("$snapshot"); - private String key; + private final String key; MetaKey(String key) { this.key = key; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MongoRegexCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MongoRegexCreator.java index 57469dfd7c..940dd97ee4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MongoRegexCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/MongoRegexCreator.java @@ -68,7 +68,7 @@ public enum MatchMode { */ REGEX, - LIKE; + LIKE } private static final Pattern PUNCTATION_PATTERN = Pattern.compile("\\p{Punct}"); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Term.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Term.java index b1a99edef2..6c293fd325 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Term.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Term.java @@ -29,7 +29,7 @@ public class Term { public enum Type { - WORD, PHRASE; + WORD, PHRASE } private final Type type; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/TextQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/TextQuery.java index 0cd83e2777..ceef425bc4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/TextQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/TextQuery.java @@ -72,7 +72,7 @@ public TextQuery(String wordsAndPhrases, @Nullable String language) { * @param locale can be {@literal null}. */ public TextQuery(String wordsAndPhrases, @Nullable Locale locale) { - this(wordsAndPhrases, locale != null ? locale.getLanguage() : (String) null); + this(wordsAndPhrases, locale != null ? locale.getLanguage() : null); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java index 49d62f773d..04fa60c4b5 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java @@ -982,7 +982,7 @@ private enum BitwiseOperator { @Override public String toString() { return super.toString().toLowerCase(); - }; + } } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java index 924fecd3ef..765429b696 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java @@ -20,7 +20,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Optional; @@ -517,8 +516,7 @@ protected String generateDescription() { */ public static class NumericJsonSchemaObject extends TypedJsonSchemaObject { - private static final Set NUMERIC_TYPES = new HashSet<>( - Arrays.asList(Type.doubleType(), Type.intType(), Type.longType(), Type.numberType(), Type.bigDecimalType())); + private static final Set NUMERIC_TYPES = Set.of(Type.doubleType(), Type.intType(), Type.longType(), Type.numberType(), Type.bigDecimalType()); @Nullable Number multipleOf; @Nullable Range range; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/ExpressionNode.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/ExpressionNode.java index a3eca1ce2e..cc7a396b73 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/ExpressionNode.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/ExpressionNode.java @@ -114,7 +114,7 @@ public boolean isOfType(Class type) { * @return */ boolean isOfSameTypeAs(@Nullable ExpressionNode node) { - return node == null ? false : this.node.getClass().equals(node.node.getClass()); + return node != null && this.node.getClass().equals(node.node.getClass()); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/LiteralNode.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/LiteralNode.java index 4b9fb5c232..42a6bd53ea 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/LiteralNode.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/LiteralNode.java @@ -15,8 +15,6 @@ */ package org.springframework.data.mongodb.core.spel; -import java.util.Collections; -import java.util.HashSet; import java.util.Set; import org.springframework.expression.spel.ExpressionState; @@ -39,23 +37,10 @@ */ public class LiteralNode extends ExpressionNode { - private static final Set> SUPPORTED_LITERAL_TYPES; + private static final Set> SUPPORTED_LITERAL_TYPES = Set.of(BooleanLiteral.class, FloatLiteral.class, + IntLiteral.class, LongLiteral.class, NullLiteral.class, RealLiteral.class, StringLiteral.class); private final Literal literal; - static { - - Set> supportedTypes = new HashSet>(7, 1); - supportedTypes.add(BooleanLiteral.class); - supportedTypes.add(FloatLiteral.class); - supportedTypes.add(IntLiteral.class); - supportedTypes.add(LongLiteral.class); - supportedTypes.add(NullLiteral.class); - supportedTypes.add(RealLiteral.class); - supportedTypes.add(StringLiteral.class); - - SUPPORTED_LITERAL_TYPES = Collections.unmodifiableSet(supportedTypes); - } - /** * Creates a new {@link LiteralNode} from the given {@link Literal} and {@link ExpressionState}. * diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/OperatorNode.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/OperatorNode.java index 08d7b09a79..13e0921890 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/OperatorNode.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/OperatorNode.java @@ -15,9 +15,6 @@ */ package org.springframework.data.mongodb.core.spel; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -34,47 +31,15 @@ */ public class OperatorNode extends ExpressionNode { - private static final Map OPERATORS; - private static final Set SUPPORTED_MATH_OPERATORS; - - static { - - Map map = new HashMap(14, 1); - - map.put("+", "$add"); - map.put("-", "$subtract"); - map.put("*", "$multiply"); - map.put("/", "$divide"); - map.put("%", "$mod"); - map.put("^", "$pow"); - map.put("==", "$eq"); - map.put("!=", "$ne"); - map.put(">", "$gt"); - map.put(">=", "$gte"); - map.put("<", "$lt"); - map.put("<=", "$lte"); - - map.put("and", "$and"); - map.put("or", "$or"); - - OPERATORS = Collections.unmodifiableMap(map); - - Set set = new HashSet(12, 1); - set.add(OpMinus.class); - set.add(OpPlus.class); - set.add(OpMultiply.class); - set.add(OpDivide.class); - set.add(OpModulus.class); - set.add(OperatorPower.class); - set.add(OpNE.class); - set.add(OpEQ.class); - set.add(OpGT.class); - set.add(OpGE.class); - set.add(OpLT.class); - set.add(OpLE.class); - - SUPPORTED_MATH_OPERATORS = Collections.unmodifiableSet(set); - } + private static final Map OPERATORS = Map.ofEntries(Map.entry("+", "$add"), + Map.entry("-", "$subtract"), Map.entry("*", "$multiply"), Map.entry("/", "$divide"), Map.entry("%", "$mod"), + Map.entry("^", "$pow"), Map.entry("==", "$eq"), Map.entry("!=", "$ne"), Map.entry(">", "$gt"), + Map.entry(">=", "$gte"), Map.entry("<", "$lt"), Map.entry("<=", "$lte"), Map.entry("and", "$and"), + Map.entry("or", "$or")); + + private static final Set SUPPORTED_MATH_OPERATORS = Set.of(OpMinus.class, OpPlus.class, OpMultiply.class, + OpDivide.class, OpModulus.class, OperatorPower.class, OpNE.class, OpEQ.class, OpGT.class, OpGE.class, OpLT.class, + OpLE.class); private final Operator operator; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java index ed635ba726..dd776fa367 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java @@ -92,7 +92,7 @@ private MongoParameters(List parameters, int maxDistanceIndex, @ this.updateIndex = updateIndex; } - private final int getNearIndex(List> parameterTypes) { + private int getNearIndex(List> parameterTypes) { for (Class reference : Arrays.asList(Point.class, double[].class)) { @@ -123,7 +123,7 @@ private int findNearIndexInParameters(Method method) { index = param.getIndex(); } else { throw new IllegalStateException( - String.format("Found multiple @Near annotations ond method %s; Only one allowed", method.toString())); + String.format("Found multiple @Near annotations ond method %s; Only one allowed", method)); } } @@ -166,7 +166,7 @@ public int getNearIndex() { * @since 1.6 */ public int getFullTextParameterIndex() { - return fullTextIndex != null ? fullTextIndex.intValue() : -1; + return fullTextIndex != null ? fullTextIndex : -1; } /** @@ -174,7 +174,7 @@ public int getFullTextParameterIndex() { * @since 1.6 */ public boolean hasFullTextParameter() { - return this.fullTextIndex != null && this.fullTextIndex.intValue() >= 0; + return this.fullTextIndex != null && this.fullTextIndex >= 0; } /** @@ -192,7 +192,7 @@ public int getRangeIndex() { * @since 2.2 */ public int getCollationParameterIndex() { - return collationIndex != null ? collationIndex.intValue() : -1; + return collationIndex != null ? collationIndex : -1; } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java index 1784700b5f..d128fb969e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java @@ -257,16 +257,11 @@ private Criteria from(Part part, MongoPersistentProperty property, Criteria crit private boolean isSimpleComparisionPossible(Part part) { - switch (part.shouldIgnoreCase()) { - case NEVER: - return true; - case WHEN_POSSIBLE: - return part.getProperty().getType() != String.class; - case ALWAYS: - return false; - default: - return true; - } + return switch (part.shouldIgnoreCase()) { + case NEVER -> true; + case WHEN_POSSIBLE -> part.getProperty().getType() != String.class; + case ALWAYS -> false; + }; } /** @@ -479,25 +474,14 @@ private static Criteria computeBetweenPart(Criteria criteria, Iterator p private static MatchMode toMatchMode(Type type) { - switch (type) { - case NOT_CONTAINING: - case CONTAINING: - return MatchMode.CONTAINING; - case STARTING_WITH: - return MatchMode.STARTING_WITH; - case ENDING_WITH: - return MatchMode.ENDING_WITH; - case LIKE: - case NOT_LIKE: - return MatchMode.LIKE; - case REGEX: - return MatchMode.REGEX; - case NEGATING_SIMPLE_PROPERTY: - case SIMPLE_PROPERTY: - case IN: - return MatchMode.EXACT; - default: - return MatchMode.DEFAULT; - } + return switch (type) { + case NOT_CONTAINING, CONTAINING -> MatchMode.CONTAINING; + case STARTING_WITH -> MatchMode.STARTING_WITH; + case ENDING_WITH -> MatchMode.ENDING_WITH; + case LIKE, NOT_LIKE -> MatchMode.LIKE; + case REGEX -> MatchMode.REGEX; + case NEGATING_SIMPLE_PROPERTY, SIMPLE_PROPERTY, IN -> MatchMode.EXACT; + default -> MatchMode.DEFAULT; + }; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryMethod.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryMethod.java index 124708702a..d9b89b78a7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryMethod.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryMethod.java @@ -477,7 +477,7 @@ public boolean hasAnnotatedUpdate() { * @since 3.4 */ public Update getUpdateSource() { - return lookupUpdateAnnotation().get(); + return lookupUpdateAnnotation().orElse(null); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java index 904c184a8f..d727d27d5b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveMongoQueryMethod.java @@ -156,7 +156,7 @@ public void verify() { if (!multiWrapper) { throw new IllegalStateException(String.format( "Method has to use a either multi-item reactive wrapper return type or a wrapped Page/Slice type; Offending method: %s", - method.toString())); + method)); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactivePartTreeMongoQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactivePartTreeMongoQuery.java index fcd4e09932..0def8aba91 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactivePartTreeMongoQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactivePartTreeMongoQuery.java @@ -89,7 +89,7 @@ protected Mono createCountQuery(ConvertingParameterAccessor accessor) { private Query createQueryInternal(ConvertingParameterAccessor accessor, boolean isCountQuery) { - MongoQueryCreator creator = new MongoQueryCreator(tree, accessor, context, isCountQuery ? false : isGeoNearQuery); + MongoQueryCreator creator = new MongoQueryCreator(tree, accessor, context, !isCountQuery && isGeoNearQuery); Query query = creator.createQuery(); if (isCountQuery) { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/IndexEnsuringQueryCreationListener.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/IndexEnsuringQueryCreationListener.java index 6eb35a0176..7bee6e65c6 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/IndexEnsuringQueryCreationListener.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/IndexEnsuringQueryCreationListener.java @@ -16,13 +16,10 @@ package org.springframework.data.mongodb.repository.support; import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.HashSet; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; @@ -54,7 +51,7 @@ */ class IndexEnsuringQueryCreationListener implements QueryCreationListener { - private static final Set GEOSPATIAL_TYPES = new HashSet(Arrays.asList(Type.NEAR, Type.WITHIN)); + private static final Set GEOSPATIAL_TYPES = Set.of(Type.NEAR, Type.WITHIN); private static final Log LOG = LogFactory.getLog(IndexEnsuringQueryCreationListener.class); private final IndexOperationsProvider indexOperationsProvider; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveSpringDataMongodbQuery.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveSpringDataMongodbQuery.java index 789dc12650..eb1359132a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveSpringDataMongodbQuery.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveSpringDataMongodbQuery.java @@ -252,7 +252,7 @@ private Mono allOf(@Nullable Collection> predicates) protected Flux getIds(Class targetType, Mono condition) { return condition.flatMapMany(it -> getJoinIds(targetType, it)) - .switchIfEmpty(Flux.defer(() -> getJoinIds(targetType, (Predicate) null))); + .switchIfEmpty(Flux.defer(() -> getJoinIds(targetType, null))); } /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java index 7be427b10e..2e3dcccc6c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java @@ -15,8 +15,6 @@ */ package org.springframework.data.mongodb.repository.support; -import java.util.Collections; -import java.util.HashSet; import java.util.Optional; import java.util.Set; import java.util.regex.Pattern; @@ -52,16 +50,7 @@ class SpringDataMongodbSerializer extends MongodbDocumentSerializer { private static final String ID_KEY = FieldName.ID.name(); - private static final Set PATH_TYPES; - - static { - - Set pathTypes = new HashSet<>(); - pathTypes.add(PathType.VARIABLE); - pathTypes.add(PathType.PROPERTY); - - PATH_TYPES = Collections.unmodifiableSet(pathTypes); - } + private static final Set PATH_TYPES = Set.of(PathType.VARIABLE, PathType.PROPERTY); private final MongoConverter converter; private final MappingContext, MongoPersistentProperty> mappingContext; @@ -117,7 +106,7 @@ protected Document asDocument(@Nullable String key, @Nullable Object value) { protected boolean isReference(@Nullable Path path) { MongoPersistentProperty property = getPropertyForPotentialDbRef(path); - return property == null ? false : property.isAssociation(); + return property != null && property.isAssociation(); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/DBObjectUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/DBObjectUtils.java index 02a85876b3..d90bded006 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/DBObjectUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/DBObjectUtils.java @@ -15,19 +15,21 @@ */ package org.springframework.data.mongodb.util; +import java.util.Arrays; + import com.mongodb.BasicDBList; /** * @author Thomas Darimont + * @deprecated since 4.2.0 */ +@Deprecated(since = "4.2.0", forRemoval = true) public class DBObjectUtils { public static BasicDBList dbList(Object... items) { BasicDBList list = new BasicDBList(); - for (Object item : items) { - list.add(item); - } + list.addAll(Arrays.asList(items)); return list; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/encryption/EncryptionUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/encryption/EncryptionUtils.java index a0e51a106b..8c4205ff3a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/encryption/EncryptionUtils.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/encryption/EncryptionUtils.java @@ -27,7 +27,6 @@ import org.springframework.expression.Expression; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.Base64Utils; /** * Internal utility class for dealing with encryption related matters. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/EvaluationContextExpressionEvaluator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/EvaluationContextExpressionEvaluator.java index 586e19d539..33dc7d5279 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/EvaluationContextExpressionEvaluator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/EvaluationContextExpressionEvaluator.java @@ -64,7 +64,7 @@ public T evaluateExpression(String expressionString, Map var SpelExpression expression = getParsedExpression(expressionString); EvaluationContext ctx = getEvaluationContext(expressionString); - variables.entrySet().forEach(entry -> ctx.setVariable(entry.getKey(), entry.getValue())); + variables.forEach((key, value) -> ctx.setVariable(key, value)); Object result = expression.getValue(ctx, Object.class); return (T) result; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterTests.java index c3b7190825..36471c11db 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterTests.java @@ -31,6 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import org.bson.Document; import org.junit.jupiter.api.BeforeEach; @@ -79,8 +80,7 @@ void setUp() { mappingContext = new MongoMappingContext(); mappingContext.setSimpleTypeHolder(new MongoCustomConversions(Collections.emptyList()).getSimpleTypeHolder()); - mappingContext.setInitialEntitySet(new HashSet<>( - Arrays.asList(WithLazyDBRefAsConstructorArg.class, WithLazyDBRef.class, WithJavaTimeTypes.class))); + mappingContext.setInitialEntitySet(Set.of(WithLazyDBRefAsConstructorArg.class, WithLazyDBRef.class, WithJavaTimeTypes.class)); mappingContext.setAutoIndexCreation(false); mappingContext.afterPropertiesSet(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoJsonTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoJsonTests.java index 1fe7636d75..b3418e4ba1 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoJsonTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/GeoJsonTests.java @@ -21,7 +21,6 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.HashSet; import java.util.List; import java.util.Set; @@ -84,8 +83,8 @@ public MongoClient mongoClient() { @Override protected Set> getInitialEntitySet() throws ClassNotFoundException { - return new HashSet<>(Arrays.asList(Venue2DSphere.class, VenueWithDistanceField.class, OpenGeoJson.class, - DocumentWithPropertyUsingGeoJsonType.class)); + return Set.of(Venue2DSphere.class, VenueWithDistanceField.class, OpenGeoJson.class, + DocumentWithPropertyUsingGeoJsonType.class); } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MappingContextConfigurer.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MappingContextConfigurer.java index ca3d0ac921..b0f22069fa 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MappingContextConfigurer.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MappingContextConfigurer.java @@ -41,7 +41,7 @@ public void initialEntitySet(Set> initialEntitySet) { } public void initialEntitySet(Class... initialEntitySet) { - this.intitalEntitySet = new HashSet<>(Arrays.asList(initialEntitySet)); + this.intitalEntitySet = Set.of(initialEntitySet); } Set> initialEntitySet() { From d9383875763ea32ff1cd5034eb59857d8aefe92d Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 14 Nov 2023 14:52:29 +0100 Subject: [PATCH 5/6] Extend value caching for MongoPersistentProperties. --- .../mapping/BasicMongoPersistentProperty.java | 28 +++--- .../CachingMongoPersistentProperty.java | 99 +++++++++---------- .../core/mapping/MongoMappingContext.java | 5 +- 3 files changed, 64 insertions(+), 68 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java index 77582047f5..c7a215d71e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentProperty.java @@ -75,25 +75,12 @@ public BasicMongoPersistentProperty(Property property, MongoPersistentEntity super(property, owner, simpleTypeHolder); this.fieldNamingStrategy = fieldNamingStrategy == null ? PropertyNameFieldNamingStrategy.INSTANCE : fieldNamingStrategy; - - if (isIdProperty() && hasExplicitFieldName()) { - - String annotatedName = getAnnotatedFieldName(); - if (!ID_FIELD_NAME.equals(annotatedName)) { - if(LOG.isWarnEnabled()) { - LOG.warn(String.format( - "Customizing field name for id property '%s.%s' is not allowed; Custom name ('%s') will not be considered", - owner.getName(), getName(), annotatedName)); - } - } - } } /** * Also considers fields as id that are of supported id type and name. * * @see #SUPPORTED_ID_PROPERTY_NAMES - * @see #SUPPORTED_ID_TYPES */ @Override public boolean isIdProperty() { @@ -325,4 +312,19 @@ private int doGetFieldOrder() { return annotation != null ? annotation.order() : Integer.MAX_VALUE; } + protected void validate() { + + if (isIdProperty() && hasExplicitFieldName()) { + + String annotatedName = getAnnotatedFieldName(); + if (!ID_FIELD_NAME.equals(annotatedName)) { + if(LOG.isWarnEnabled()) { + LOG.warn(String.format( + "Customizing field name for id property '%s.%s' is not allowed; Custom name ('%s') will not be considered", + getOwner().getName(), getName(), annotatedName)); + } + } + } + } + } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/CachingMongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/CachingMongoPersistentProperty.java index 8b4cf6d2e5..945e3c63b2 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/CachingMongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/CachingMongoPersistentProperty.java @@ -30,16 +30,20 @@ */ public class CachingMongoPersistentProperty extends BasicMongoPersistentProperty { - private @Nullable Boolean isIdProperty; - private @Nullable Boolean isAssociation; - private boolean dbRefResolved; - private @Nullable DBRef dbref; - private @Nullable String fieldName; - private @Nullable Boolean writeNullValues; - private @Nullable Class fieldType; - private @Nullable Boolean usePropertyAccess; - private @Nullable Boolean isTransient; - private @Nullable Lazy mongoField = Lazy.of(super::getMongoField); + private final Lazy isIdProperty = Lazy.of(super::isIdProperty); + private final Lazy isAssociation = Lazy.of(super::isAssociation); + private final Lazy dbref = Lazy.of(super::getDBRef); + private final Lazy fieldName = Lazy.of(super::getFieldName); + private final Lazy hasExplicitFieldName = Lazy.of(super::hasExplicitFieldName); + private final Lazy writeNullValues = Lazy.of(super::writeNullValues); + private final Lazy> fieldType = Lazy.of(super::getFieldType); + private final Lazy usePropertyAccess = Lazy.of(super::usePropertyAccess); + private final Lazy isTransient = Lazy.of(super::isTransient); + private final Lazy mongoField = Lazy.of(super::getMongoField); + private final Lazy isTextScoreProperty = Lazy.of(super::isTextScoreProperty); + private final Lazy isLanguageProperty = Lazy.of(super::isLanguageProperty); + private final Lazy isExplicitLanguageProperty = Lazy.of(super::isExplicitLanguageProperty); + private final Lazy documentReference = Lazy.of(super::getDocumentReference); /** * Creates a new {@link CachingMongoPersistentProperty}. @@ -56,70 +60,47 @@ public CachingMongoPersistentProperty(Property property, MongoPersistentEntity getFieldType() { - - if (this.fieldType == null) { - this.fieldType = super.getFieldType(); - } - - return this.fieldType; + return fieldType.get(); } @Override public boolean usePropertyAccess() { - - if (this.usePropertyAccess == null) { - this.usePropertyAccess = super.usePropertyAccess(); - } - - return this.usePropertyAccess; + return usePropertyAccess.get(); } @Override public boolean isTransient() { + return isTransient.get(); + } - if (this.isTransient == null) { - this.isTransient = super.isTransient(); - } - - return this.isTransient; + @Override + public boolean isTextScoreProperty() { + return isTextScoreProperty.get(); } @Override @@ -129,17 +110,27 @@ public boolean isDbReference() { @Override public DBRef getDBRef() { + return dbref.getNullable(); + } + + @Override + public DocumentReference getDocumentReference() { + return documentReference.getNullable(); + } - if (!dbRefResolved) { - this.dbref = super.getDBRef(); - this.dbRefResolved = true; - } + @Override + public boolean isLanguageProperty() { + return isLanguageProperty.get(); + } - return this.dbref; + @Override + public boolean isExplicitLanguageProperty() { + return isExplicitLanguageProperty.get(); } @Override public MongoField getMongoField() { return mongoField.get(); } + } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoMappingContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoMappingContext.java index 2877b1ba45..184da711a0 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoMappingContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/MongoMappingContext.java @@ -80,7 +80,10 @@ protected boolean shouldCreatePersistentEntityFor(TypeInformation type) { @Override public MongoPersistentProperty createPersistentProperty(Property property, MongoPersistentEntity owner, SimpleTypeHolder simpleTypeHolder) { - return new CachingMongoPersistentProperty(property, owner, simpleTypeHolder, fieldNamingStrategy); + + CachingMongoPersistentProperty cachingMongoPersistentProperty = new CachingMongoPersistentProperty(property, owner, simpleTypeHolder, fieldNamingStrategy); + cachingMongoPersistentProperty.validate(); + return cachingMongoPersistentProperty; } @Override From 8211597ed69ac96c0d4b3961f225109e90f25e7b Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 15 Nov 2023 08:18:45 +0100 Subject: [PATCH 6/6] Fix Typos. --- .../data/mongodb/core/ChangeStreamOptions.java | 2 +- .../data/mongodb/core/CursorPreparer.java | 2 +- .../data/mongodb/core/DocumentCallbackHandler.java | 2 +- .../data/mongodb/core/FindPublisherPreparer.java | 2 +- .../mongodb/core/MappingMongoJsonSchemaCreator.java | 2 +- .../core/MongoDataIntegrityViolationException.java | 2 +- .../data/mongodb/core/QueryOperations.java | 2 +- .../mongodb/core/ReactiveRemoveOperationSupport.java | 8 ++++---- .../data/mongodb/core/ScriptOperations.java | 2 +- .../mongodb/core/aggregation/AccumulatorOperators.java | 2 +- .../data/mongodb/core/aggregation/Aggregation.java | 2 +- .../mongodb/core/aggregation/ArithmeticOperators.java | 6 +++--- .../data/mongodb/core/aggregation/ArrayOperators.java | 4 ++-- .../data/mongodb/core/convert/MongoWriter.java | 4 ++-- .../data/mongodb/core/convert/QueryMapper.java | 2 +- .../core/convert/encryption/EncryptingConverter.java | 2 +- .../data/mongodb/core/index/GeospatialIndex.java | 2 +- .../core/mapping/BasicMongoPersistentEntity.java | 2 +- .../mongodb/core/messaging/ChangeStreamRequest.java | 4 ++-- .../data/mongodb/core/messaging/Message.java | 2 +- .../mongodb/core/messaging/TailableCursorRequest.java | 6 +++--- .../data/mongodb/core/messaging/TaskFactory.java | 8 ++++---- .../springframework/data/mongodb/core/query/Field.java | 10 +++++----- .../data/mongodb/repository/query/MongoParameters.java | 2 +- .../mongodb/repository/query/MongoQueryCreator.java | 8 ++++---- .../data/mongodb/core/MongoOperationsUnitTests.java | 2 +- .../core/convert/AbstractMongoConverterUnitTests.java | 2 +- 27 files changed, 47 insertions(+), 47 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ChangeStreamOptions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ChangeStreamOptions.java index c051976014..6fb90327cb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ChangeStreamOptions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ChangeStreamOptions.java @@ -132,7 +132,7 @@ public static ChangeStreamOptions empty() { /** * Obtain a shiny new {@link ChangeStreamOptionsBuilder} and start defining options in this fancy fluent way. Just - * don't forget to call {@link ChangeStreamOptionsBuilder#build() build()} when your're done. + * don't forget to call {@link ChangeStreamOptionsBuilder#build() build()} when done. * * @return new instance of {@link ChangeStreamOptionsBuilder}. */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CursorPreparer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CursorPreparer.java index 5f930de8a8..6982f0bd95 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CursorPreparer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/CursorPreparer.java @@ -49,7 +49,7 @@ public interface CursorPreparer extends ReadPreferenceAware { FindIterable prepare(FindIterable iterable); /** - * Apply query specific settings to {@link MongoCollection} and initate a find operation returning a + * Apply query specific settings to {@link MongoCollection} and initiate a find operation returning a * {@link FindIterable} via the given {@link Function find} function. * * @param collection must not be {@literal null}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DocumentCallbackHandler.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DocumentCallbackHandler.java index 4afa10b97a..cd0e783920 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DocumentCallbackHandler.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DocumentCallbackHandler.java @@ -22,7 +22,7 @@ /** * An interface used by {@link MongoTemplate} for processing documents returned from a MongoDB query on a per-document - * basis. Implementations of this interface perform the actual work of prcoessing each document but don't need to worry + * basis. Implementations of this interface perform the actual work of processing each document but don't need to worry * about exception handling. {@link MongoException}s will be caught and translated by the calling MongoTemplate An * DocumentCallbackHandler is typically stateful: It keeps the result state within the object, to be available later for * later inspection. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/FindPublisherPreparer.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/FindPublisherPreparer.java index 0913af70d5..ae1562dbcc 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/FindPublisherPreparer.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/FindPublisherPreparer.java @@ -49,7 +49,7 @@ public interface FindPublisherPreparer extends ReadPreferenceAware { FindPublisher prepare(FindPublisher findPublisher); /** - * Apply query specific settings to {@link MongoCollection} and initate a find operation returning a + * Apply query specific settings to {@link MongoCollection} and initiate a find operation returning a * {@link FindPublisher} via the given {@link Function find} function. * * @param collection must not be {@literal null}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappingMongoJsonSchemaCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappingMongoJsonSchemaCreator.java index 33bbec8a7a..6195cca823 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappingMongoJsonSchemaCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MappingMongoJsonSchemaCreator.java @@ -99,7 +99,7 @@ public PropertySpecifier property(String path) { } /** - * Specify additional types to be considered wehen rendering the schema for the given path. + * Specify additional types to be considered when rendering the schema for the given path. * * @param path path the path using {@literal dot '.'} notation. * @param types must not be {@literal null}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDataIntegrityViolationException.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDataIntegrityViolationException.java index b520698bda..831377ef13 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDataIntegrityViolationException.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoDataIntegrityViolationException.java @@ -61,7 +61,7 @@ public WriteConcernResult getWriteResult() { } /** - * Returns the {@link MongoActionOperation} in which the current exception occured. + * Returns the {@link MongoActionOperation} in which the current exception occurred. * * @return the actionOperation */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java index 46bdb75716..f2cdc271d9 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/QueryOperations.java @@ -526,7 +526,7 @@ Class getDriverCompatibleClass(Class type) { } /** - * Get the most speficic read target type based on the user {@literal requestedTargetType} an the property type + * Get the most specific read target type based on the user {@literal requestedTargetType} an the property type * based on meta information extracted from the {@literal domainType}. * * @param requestedTargetType must not be {@literal null}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveRemoveOperationSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveRemoveOperationSupport.java index 2439f610fb..c673e07666 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveRemoveOperationSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveRemoveOperationSupport.java @@ -35,10 +35,10 @@ class ReactiveRemoveOperationSupport implements ReactiveRemoveOperation { private static final Query ALL_QUERY = new Query(); - private final ReactiveMongoTemplate tempate; + private final ReactiveMongoTemplate template; - ReactiveRemoveOperationSupport(ReactiveMongoTemplate tempate) { - this.tempate = tempate; + ReactiveRemoveOperationSupport(ReactiveMongoTemplate template) { + this.template = template; } @Override @@ -46,7 +46,7 @@ public ReactiveRemove remove(Class domainType) { Assert.notNull(domainType, "DomainType must not be null"); - return new ReactiveRemoveSupport<>(tempate, domainType, ALL_QUERY, null); + return new ReactiveRemoveSupport<>(template, domainType, ALL_QUERY, null); } static class ReactiveRemoveSupport implements ReactiveRemove, RemoveWithCollection { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ScriptOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ScriptOperations.java index bbf0471c36..cec1f25711 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ScriptOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ScriptOperations.java @@ -34,7 +34,7 @@ public interface ScriptOperations { /** - * Store given {@link ExecutableMongoScript} generating a syntheitcal name so that it can be called by it + * Store given {@link ExecutableMongoScript} generating a synthetic name so that it can be called by it * subsequently. * * @param script must not be {@literal null}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AccumulatorOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AccumulatorOperators.java index 82375d27cb..1d95601449 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AccumulatorOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AccumulatorOperators.java @@ -542,7 +542,7 @@ public Max and(AggregationExpression expression) { } /** - * Creates new {@link Max} that returns the given number of maxmimum values ({@literal $maxN}). + * Creates new {@link Max} that returns the given number of maximum values ({@literal $maxN}). * NOTE: Cannot be used with more than one {@literal input} value. * * @param numberOfResults diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java index a7a9c89977..1bc178e4ae 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java @@ -381,7 +381,7 @@ public static UnwindOperation unwind(String field, String arrayIndex) { } /** - * Factory method to create a new {@link UnwindOperation} for the field with the given nameincluding the name of a new + * Factory method to create a new {@link UnwindOperation} for the field with the given name, including the name of a new * field to hold the array index of the element as {@code arrayIndex} using {@code preserveNullAndEmptyArrays}. Note * that extended unwind is supported in MongoDB version 3.2+. * diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArithmeticOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArithmeticOperators.java index 7960920cc4..b6311c0c02 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArithmeticOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArithmeticOperators.java @@ -164,7 +164,7 @@ private Add createAdd() { /** * Creates new {@link AggregationExpression} that returns the smallest integer greater than or equal to the - * assoicated number. + * associated number. * * @return new instance of {@link Ceil}. */ @@ -213,7 +213,7 @@ public Derivative derivative(@Nullable String unit) { } /** - * Creates new {@link AggregationExpression} that ivides the associated number by number referenced via + * Creates new {@link AggregationExpression} that divides the associated number by number referenced via * {@literal fieldReference}. * * @param fieldReference must not be {@literal null}. @@ -313,7 +313,7 @@ public Integral integral(String unit) { } /** - * Creates new {@link AggregationExpression} that calculates the natural logarithm ln (i.e loge) of the assoicated + * Creates new {@link AggregationExpression} that calculates the natural logarithm ln (i.e loge) of the associated * number. * * @return new instance of {@link Ln}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java index 6ec1afba4e..dc218e8e48 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ArrayOperators.java @@ -523,7 +523,7 @@ public ArrayElemAt elementAt(AggregationExpression expression) { } /** - * Use the element at the index number traken from the given field. + * Use the element at the index number taken from the given field. * * @param arrayFieldReference the field name. * @return new instance of {@link ArrayElemAt}. @@ -655,7 +655,7 @@ public static AsBuilder filter(Field field) { } /** - * Set the {@link AggregationExpression} resolving to an arry to apply the {@code $filter} to. + * Set the {@link AggregationExpression} resolving to an array to apply the {@code $filter} to. * * @param expression must not be {@literal null}. * @return never {@literal null}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoWriter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoWriter.java index 058bb1c8b0..7c7313e251 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoWriter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoWriter.java @@ -67,11 +67,11 @@ default Object convertToMongoType(@Nullable Object obj, MongoPersistentEntity * Creates a {@link DBRef} to refer to the given object. * * @param object the object to create a {@link DBRef} to link to. The object's type has to carry an id attribute. - * @param referingProperty the client-side property referring to the object which might carry additional metadata for + * @param referringProperty the client-side property referring to the object which might carry additional metadata for * the {@link DBRef} object to create. Can be {@literal null}. * @return will never be {@literal null}. */ - DBRef toDBRef(Object object, @Nullable MongoPersistentProperty referingProperty); + DBRef toDBRef(Object object, @Nullable MongoPersistentProperty referringProperty); /** * Creates a the {@link DocumentPointer} representing the link to another entity. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java index e8e1cbe9cd..30f8e47a09 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java @@ -218,7 +218,7 @@ public Document getMappedSort(Document sortObject, @Nullable MongoPersistentEnti * Also converts and potentially adds missing property {@code $meta} representation. * * @param fieldsObject must not be {@literal null}. - * @param entity can be {@litearl null}. + * @param entity can be {@literal null}. * @return * @since 1.6 */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/EncryptingConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/EncryptingConverter.java index fba6907108..138a32ff4a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/EncryptingConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/encryption/EncryptingConverter.java @@ -20,7 +20,7 @@ import org.springframework.data.mongodb.core.encryption.EncryptionContext; /** - * A specialized {@link MongoValueConverter} for {@literal encryptiong} and {@literal decrypting} properties. + * A specialized {@link MongoValueConverter} for {@literal encrypting} and {@literal decrypting} properties. * * @author Christoph Strobl * @since 4.1 diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/GeospatialIndex.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/GeospatialIndex.java index 05d43a3a65..5facc5daec 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/GeospatialIndex.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/GeospatialIndex.java @@ -168,7 +168,7 @@ public Document getIndexKeys() { case GEO_HAYSTACK -> { document.put(field, "geoHaystack"); if (!StringUtils.hasText(additionalField)) { - throw new IllegalArgumentException("When defining geoHaystack index, an additionnal field must be defined"); + throw new IllegalArgumentException("When defining geoHaystack index, an additional field must be defined"); } document.put(additionalField, 1); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java index 3f3820dd8b..5de86ffb04 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java @@ -414,7 +414,7 @@ private static void assertPropertyType(MongoPersistentProperty persistentPropert } throw new MappingException( - String.format("Missmatching types for %s; Found %s expected one of %s", persistentProperty.getField(), + String.format("Mismatching types for %s; Found %s expected one of %s", persistentProperty.getField(), persistentProperty.getActualType(), StringUtils.arrayToCommaDelimitedString(validMatches))); } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamRequest.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamRequest.java index 2626ee1bb3..31c1ba1293 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamRequest.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/ChangeStreamRequest.java @@ -131,7 +131,7 @@ public ChangeStreamRequestOptions getRequestOptions() { /** * Obtain a shiny new {@link ChangeStreamRequestBuilder} and start defining your {@link ChangeStreamRequest} in this - * fancy fluent way. Just don't forget to call {@link ChangeStreamRequestBuilder#build() build()} when your're done. + * fancy fluent way. Just don't forget to call {@link ChangeStreamRequestBuilder#build() build()} when done. * * @return new instance of {@link ChangeStreamRequest}. */ @@ -141,7 +141,7 @@ public static ChangeStreamRequestBuilder builder() { /** * Obtain a shiny new {@link ChangeStreamRequestBuilder} and start defining your {@link ChangeStreamRequest} in this - * fancy fluent way. Just don't forget to call {@link ChangeStreamRequestBuilder#build() build()} when your're done. + * fancy fluent way. Just don't forget to call {@link ChangeStreamRequestBuilder#build() build()} when done. * * @return new instance of {@link ChangeStreamRequest}. */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/Message.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/Message.java index 28ccaf70a0..f8c96cb6e9 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/Message.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/Message.java @@ -111,7 +111,7 @@ public static MessageProperties empty() { /** * Obtain a shiny new {@link MessagePropertiesBuilder} and start defining options in this fancy fluent way. Just - * don't forget to call {@link MessagePropertiesBuilder#build() build()} when your're done. + * don't forget to call {@link MessagePropertiesBuilder#build() build()} when done. * * @return new instance of {@link MessagePropertiesBuilder}. */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorRequest.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorRequest.java index 94fa3e9fed..884b97028c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorRequest.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TailableCursorRequest.java @@ -88,7 +88,7 @@ public TailableCursorRequestOptions getRequestOptions() { /** * Obtain a shiny new {@link TailableCursorRequestBuilder} and start defining options in this fancy fluent way. Just - * don't forget to call {@link TailableCursorRequestBuilder#build() build()} when your're done. + * don't forget to call {@link TailableCursorRequestBuilder#build() build()} when done. * * @return new instance of {@link TailableCursorRequestBuilder}. */ @@ -98,7 +98,7 @@ public static TailableCursorRequestBuilder builder() { /** * Obtain a shiny new {@link TailableCursorRequestBuilder} and start defining options in this fancy fluent way. Just - * don't forget to call {@link TailableCursorRequestBuilder#build() build()} when your're done. + * don't forget to call {@link TailableCursorRequestBuilder#build() build()} when done. * * @return new instance of {@link TailableCursorRequestBuilder}. */ @@ -127,7 +127,7 @@ public static TailableCursorRequestOptions of(RequestOptions options) { /** * Obtain a shiny new {@link TailableCursorRequestOptionsBuilder} and start defining options in this fancy fluent - * way. Just don't forget to call {@link TailableCursorRequestOptionsBuilder#build() build()} when your're done. + * way. Just don't forget to call {@link TailableCursorRequestOptionsBuilder#build() build()} when done. * * @return new instance of {@link TailableCursorRequestOptionsBuilder}. */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TaskFactory.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TaskFactory.java index ce9382b1ab..1429a33cbd 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TaskFactory.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/messaging/TaskFactory.java @@ -28,7 +28,7 @@ */ class TaskFactory { - private final MongoTemplate tempate; + private final MongoTemplate template; /** * @param template must not be {@literal null}. @@ -37,7 +37,7 @@ class TaskFactory { Assert.notNull(template, "Template must not be null"); - this.tempate = template; + this.template = template; } /** @@ -56,9 +56,9 @@ Task forRequest(SubscriptionRequest criteria = new HashMap<>(); private final Map slices = new HashMap<>(); - private final Map elemMatchs = new HashMap<>(); + private final Map elemMatches = new HashMap<>(); private @Nullable String positionKey; private int positionValue; @@ -199,7 +199,7 @@ public Field slice(String field, int offset, int size) { public Field elemMatch(String field, Criteria elemMatchCriteria) { - elemMatchs.put(field, elemMatchCriteria); + elemMatches.put(field, elemMatchCriteria); return this; } @@ -229,7 +229,7 @@ public Document getFieldsObject() { document.put(entry.getKey(), new Document("$slice", entry.getValue())); } - for (Entry entry : elemMatchs.entrySet()) { + for (Entry entry : elemMatches.entrySet()) { document.put(entry.getKey(), new Document("$elemMatch", entry.getValue().getCriteriaObject())); } @@ -259,7 +259,7 @@ public boolean equals(@Nullable Object o) { if (!ObjectUtils.nullSafeEquals(slices, field.slices)) { return false; } - if (!ObjectUtils.nullSafeEquals(elemMatchs, field.elemMatchs)) { + if (!ObjectUtils.nullSafeEquals(elemMatches, field.elemMatches)) { return false; } return ObjectUtils.nullSafeEquals(positionKey, field.positionKey); @@ -270,7 +270,7 @@ public int hashCode() { int result = ObjectUtils.nullSafeHashCode(criteria); result = 31 * result + ObjectUtils.nullSafeHashCode(slices); - result = 31 * result + ObjectUtils.nullSafeHashCode(elemMatchs); + result = 31 * result + ObjectUtils.nullSafeHashCode(elemMatches); result = 31 * result + ObjectUtils.nullSafeHashCode(positionKey); result = 31 * result + positionValue; return result; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java index dd776fa367..54807a54da 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoParameters.java @@ -160,7 +160,7 @@ public int getNearIndex() { } /** - * Returns the index of the parameter to be used as a textquery param + * Returns the index of the parameter to be used as a text query param * * @return * @since 1.6 diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java index d128fb969e..a9631fc18e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java @@ -243,19 +243,19 @@ private Criteria from(Part part, MongoPersistentProperty property, Criteria crit return criteria.within((Shape) parameter); case SIMPLE_PROPERTY: - return isSimpleComparisionPossible(part) ? criteria.is(parameters.next()) + return isSimpleComparisonPossible(part) ? criteria.is(parameters.next()) : createLikeRegexCriteriaOrThrow(part, property, criteria, parameters, false); case NEGATING_SIMPLE_PROPERTY: - return isSimpleComparisionPossible(part) ? criteria.ne(parameters.next()) + return isSimpleComparisonPossible(part) ? criteria.ne(parameters.next()) : createLikeRegexCriteriaOrThrow(part, property, criteria, parameters, true); default: throw new IllegalArgumentException("Unsupported keyword"); } } - private boolean isSimpleComparisionPossible(Part part) { + private boolean isSimpleComparisonPossible(Part part) { return switch (part.shouldIgnoreCase()) { case NEVER -> true; @@ -386,7 +386,7 @@ private T nextAs(Iterator iterator, Class type) { private java.util.List nextAsList(Iterator iterator, Part part) { Streamable streamable = asStreamable(iterator.next()); - if (!isSimpleComparisionPossible(part)) { + if (!isSimpleComparisonPossible(part)) { MatchMode matchMode = toMatchMode(part.getType()); String regexOptions = toRegexOptions(part); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoOperationsUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoOperationsUnitTests.java index 684209cb56..b246efd613 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoOperationsUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoOperationsUnitTests.java @@ -88,7 +88,7 @@ public Object convertToMongoType(Object obj, TypeInformation typeInformation) return null; } - public DBRef toDBRef(Object object, MongoPersistentProperty referingProperty) { + public DBRef toDBRef(Object object, MongoPersistentProperty referringProperty) { return null; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/AbstractMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/AbstractMongoConverterUnitTests.java index 071fc05396..7bc381fdad 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/AbstractMongoConverterUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/AbstractMongoConverterUnitTests.java @@ -99,7 +99,7 @@ public Object convertToMongoType(Object obj, TypeInformation typeInformation) } @Override - public DBRef toDBRef(Object object, MongoPersistentProperty referingProperty) { + public DBRef toDBRef(Object object, MongoPersistentProperty referringProperty) { throw new UnsupportedOperationException(); } }