From 7876b921a6379bdfac4a3bf3ca96039af07b45c2 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 4 Jun 2025 13:54:41 +0200 Subject: [PATCH] Move off deprecated API where possible. See: #4990 --- .../mongodb/core/BulkOperationsSupport.java | 8 +-- .../data/mongodb/core/QueryOperations.java | 9 ++-- .../mongodb/core/ReactiveMongoTemplate.java | 21 ++++++-- .../TypeBasedAggregationOperationContext.java | 1 - .../mongodb/core/convert/QueryMapper.java | 18 ++++--- .../mongodb/core/schema/package-info.java | 1 - .../mongodb/core/validation/package-info.java | 1 - ...AggregationOperationRendererUnitTests.java | 18 ++++--- .../aggregation/AggregationUnitTests.java | 51 ++++++++++++------- .../aggregation/ObjectOperatorsUnitTests.java | 4 +- .../SelectionOperatorUnitTests.java | 14 ++--- .../aggregation/SetOperationUnitTests.java | 17 ++++--- 12 files changed, 99 insertions(+), 64 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/BulkOperationsSupport.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/BulkOperationsSupport.java index 1f5509cd6..9f5577bdb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/BulkOperationsSupport.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/BulkOperationsSupport.java @@ -26,7 +26,8 @@ import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mongodb.core.BulkOperations.BulkMode; import org.springframework.data.mongodb.core.aggregation.AggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.AggregationUpdate; -import org.springframework.data.mongodb.core.aggregation.RelaxedTypeBasedAggregationOperationContext; +import org.springframework.data.mongodb.core.aggregation.FieldLookupPolicy; +import org.springframework.data.mongodb.core.aggregation.TypeBasedAggregationOperationContext; import org.springframework.data.mongodb.core.convert.QueryMapper; import org.springframework.data.mongodb.core.convert.UpdateMapper; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; @@ -158,8 +159,9 @@ abstract class BulkOperationsSupport { private List mapUpdatePipeline(AggregationUpdate source) { Class type = entity().isPresent() ? entity().map(PersistentEntity::getType).get() : Object.class; - AggregationOperationContext context = new RelaxedTypeBasedAggregationOperationContext(type, - updateMapper().getMappingContext(), queryMapper()); + + AggregationOperationContext context = new TypeBasedAggregationOperationContext(type, + updateMapper().getMappingContext(), queryMapper(), FieldLookupPolicy.relaxed()); return new AggregationUtil(queryMapper(), queryMapper().getMappingContext()).createPipeline(source, context); } 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 4ae618eaa..602713cb7 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 @@ -44,7 +44,7 @@ import org.springframework.data.mongodb.core.aggregation.AggregationOperationCon import org.springframework.data.mongodb.core.aggregation.AggregationOptions; import org.springframework.data.mongodb.core.aggregation.AggregationPipeline; import org.springframework.data.mongodb.core.aggregation.AggregationUpdate; -import org.springframework.data.mongodb.core.aggregation.RelaxedTypeBasedAggregationOperationContext; +import org.springframework.data.mongodb.core.aggregation.FieldLookupPolicy; import org.springframework.data.mongodb.core.aggregation.TypeBasedAggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.TypedAggregation; import org.springframework.data.mongodb.core.convert.QueryMapper; @@ -407,7 +407,8 @@ class QueryOperations { if (entry.getValue() instanceof MongoExpression mongoExpression) { AggregationOperationContext ctx = entity == null ? Aggregation.DEFAULT_CONTEXT - : new RelaxedTypeBasedAggregationOperationContext(entity.getType(), mappingContext, queryMapper); + : new TypeBasedAggregationOperationContext(entity.getType(), mappingContext, queryMapper, + FieldLookupPolicy.relaxed()); evaluated.put(entry.getKey(), AggregationExpression.from(mongoExpression).toDocument(ctx)); } else { @@ -895,8 +896,8 @@ class QueryOperations { Class type = domainType != null ? domainType : Object.class; - AggregationOperationContext context = new RelaxedTypeBasedAggregationOperationContext(type, mappingContext, - queryMapper); + AggregationOperationContext context = new TypeBasedAggregationOperationContext(type, mappingContext, queryMapper, + FieldLookupPolicy.relaxed()); return aggregationUtil.createPipeline((AggregationUpdate) update, context); } 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 232f35cd1..61fbcdd38 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 @@ -15,7 +15,7 @@ */ package org.springframework.data.mongodb.core; -import static org.springframework.data.mongodb.core.query.SerializationUtils.*; +import static org.springframework.data.mongodb.core.query.SerializationUtils.serializeToJsonSafely; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -89,8 +89,8 @@ import org.springframework.data.mongodb.core.aggregation.AggregationOperationCon import org.springframework.data.mongodb.core.aggregation.AggregationOptions; import org.springframework.data.mongodb.core.aggregation.AggregationOptions.Builder; import org.springframework.data.mongodb.core.aggregation.AggregationPipeline; +import org.springframework.data.mongodb.core.aggregation.FieldLookupPolicy; import org.springframework.data.mongodb.core.aggregation.PrefixingDelegatingAggregationOperationContext; -import org.springframework.data.mongodb.core.aggregation.RelaxedTypeBasedAggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.TypeBasedAggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.TypedAggregation; import org.springframework.data.mongodb.core.convert.DbRefResolver; @@ -109,7 +109,18 @@ import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty; import org.springframework.data.mongodb.core.mapping.MongoSimpleTypes; -import org.springframework.data.mongodb.core.mapping.event.*; +import org.springframework.data.mongodb.core.mapping.event.AfterConvertEvent; +import org.springframework.data.mongodb.core.mapping.event.AfterDeleteEvent; +import org.springframework.data.mongodb.core.mapping.event.AfterLoadEvent; +import org.springframework.data.mongodb.core.mapping.event.AfterSaveEvent; +import org.springframework.data.mongodb.core.mapping.event.BeforeConvertEvent; +import org.springframework.data.mongodb.core.mapping.event.BeforeDeleteEvent; +import org.springframework.data.mongodb.core.mapping.event.BeforeSaveEvent; +import org.springframework.data.mongodb.core.mapping.event.MongoMappingEvent; +import org.springframework.data.mongodb.core.mapping.event.ReactiveAfterConvertCallback; +import org.springframework.data.mongodb.core.mapping.event.ReactiveAfterSaveCallback; +import org.springframework.data.mongodb.core.mapping.event.ReactiveBeforeConvertCallback; +import org.springframework.data.mongodb.core.mapping.event.ReactiveBeforeSaveCallback; import org.springframework.data.mongodb.core.mapreduce.MapReduceOptions; import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.Collation; @@ -2120,8 +2131,8 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati AggregationOperationContext context = agg instanceof TypedAggregation typedAggregation ? new TypeBasedAggregationOperationContext(typedAggregation.getInputType(), getConverter().getMappingContext(), queryMapper) - : new RelaxedTypeBasedAggregationOperationContext(Object.class, mappingContext, queryMapper); - + : new TypeBasedAggregationOperationContext(Object.class, mappingContext, queryMapper, + FieldLookupPolicy.relaxed()); return agg.toPipeline(new PrefixingDelegatingAggregationOperationContext(context, "fullDocument", Arrays.asList("operationType", "fullDocument", "documentKey", "updateDescription", "ns"))); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/TypeBasedAggregationOperationContext.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/TypeBasedAggregationOperationContext.java index d2d49abf7..622d9904b 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/TypeBasedAggregationOperationContext.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/TypeBasedAggregationOperationContext.java @@ -145,7 +145,6 @@ public class TypeBasedAggregationOperationContext implements AggregationOperatio * @param type The domain type to map fields to. * @return a more relaxed {@link AggregationOperationContext}. * @since 3.1 - * @see RelaxedTypeBasedAggregationOperationContext */ public AggregationOperationContext continueOnMissingFieldReference(Class type) { return new TypeBasedAggregationOperationContext(type, mappingContext, mapper, FieldLookupPolicy.relaxed()); 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 11ed30aed..7c7fb5074 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 @@ -37,7 +37,6 @@ import org.bson.BsonValue; import org.bson.Document; import org.bson.conversions.Bson; import org.bson.types.ObjectId; -import org.jspecify.annotations.NonNull; import org.jspecify.annotations.Nullable; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.converter.Converter; @@ -57,7 +56,8 @@ import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.PropertyValueProvider; import org.springframework.data.mongodb.MongoExpression; import org.springframework.data.mongodb.core.aggregation.AggregationExpression; -import org.springframework.data.mongodb.core.aggregation.RelaxedTypeBasedAggregationOperationContext; +import org.springframework.data.mongodb.core.aggregation.FieldLookupPolicy; +import org.springframework.data.mongodb.core.aggregation.TypeBasedAggregationOperationContext; import org.springframework.data.mongodb.core.convert.MappingMongoConverter.NestedDocument; import org.springframework.data.mongodb.core.convert.MongoConversionContext.OperatorContext; import org.springframework.data.mongodb.core.convert.MongoConversionContext.QueryOperatorContext; @@ -419,7 +419,8 @@ public class QueryMapper { if (keyword.isSample()) { Example example = keyword.getValue(); - return exampleMapper.getMappedExample(example, entity != null ? entity : mappingContext.getRequiredPersistentEntity(example.getProbeType())); + return exampleMapper.getMappedExample(example, + entity != null ? entity : mappingContext.getRequiredPersistentEntity(example.getProbeType())); } if (keyword.isJsonSchema()) { @@ -558,7 +559,8 @@ public class QueryMapper { if (source instanceof AggregationExpression age) { return entity == null ? age.toDocument() : // - age.toDocument(new RelaxedTypeBasedAggregationOperationContext(entity.getType(), this.mappingContext, this)); + age.toDocument(new TypeBasedAggregationOperationContext(entity.getType(), this.mappingContext, this, + FieldLookupPolicy.relaxed())); } if (source instanceof MongoExpression exr) { @@ -680,7 +682,8 @@ public class QueryMapper { MongoPersistentProperty property = documentField.getProperty(); OperatorContext criteriaContext = new QueryOperatorContext( - isKeyword(documentField.name) ? documentField.name : "$eq", property != null ? property.getFieldName() : documentField.name); + isKeyword(documentField.name) ? documentField.name : "$eq", + property != null ? property.getFieldName() : documentField.name); MongoConversionContext conversionContext; if (valueConverter instanceof MongoConversionContext mcc) { @@ -694,7 +697,8 @@ public class QueryMapper { } @SuppressWarnings("NullAway") - protected @Nullable Object convertValueWithConversionContext(Field documentField, @Nullable Object sourceValue, @Nullable Object value, + protected @Nullable Object convertValueWithConversionContext(Field documentField, @Nullable Object sourceValue, + @Nullable Object value, PropertyValueConverter> valueConverter, MongoConversionContext conversionContext) { @@ -729,7 +733,7 @@ public class QueryMapper { } @Nullable - @SuppressWarnings({"unchecked", "NullAway"}) + @SuppressWarnings({ "unchecked", "NullAway" }) private Object convertIdField(Field documentField, Object source) { Object value = source; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/package-info.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/package-info.java index cdc583e03..dac1ad08e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/package-info.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/package-info.java @@ -2,5 +2,4 @@ * MongoDB-specific JSON schema implementation classes. */ @org.jspecify.annotations.NullMarked -@org.springframework.lang.NonNullFields package org.springframework.data.mongodb.core.schema; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/validation/package-info.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/validation/package-info.java index 83fe5719a..7921ed62d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/validation/package-info.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/validation/package-info.java @@ -2,5 +2,4 @@ * MongoDB schema validation specifics. */ @org.jspecify.annotations.NullMarked -@org.springframework.lang.NonNullFields package org.springframework.data.mongodb.core.validation; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationOperationRendererUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationOperationRendererUnitTests.java index 5cc93ee5b..9e4c805f5 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationOperationRendererUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationOperationRendererUnitTests.java @@ -15,9 +15,13 @@ */ package org.springframework.data.mongodb.core.aggregation; -import static org.mockito.Mockito.*; -import static org.springframework.data.domain.Sort.Direction.*; -import static org.springframework.data.mongodb.core.aggregation.Aggregation.*; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.springframework.data.domain.Sort.Direction.DESC; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.project; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.sort; import java.time.ZonedDateTime; import java.util.List; @@ -30,7 +34,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; - import org.springframework.data.annotation.Id; import org.springframework.data.convert.ConverterBuilder; import org.springframework.data.convert.CustomConversions; @@ -74,8 +77,8 @@ public class AggregationOperationRendererUnitTests { project().and("layerOne.layerTwo.layerThree").as("layerOne.layerThree"), sort(DESC, "layerOne.layerThree.fieldA")); - AggregationOperationRenderer.toDocument(agg.getPipeline().getOperations(), - new RelaxedTypeBasedAggregationOperationContext(TestRecord.class, ctx, new QueryMapper(mongoConverter))); + AggregationOperationRenderer.toDocument(agg.getPipeline().getOperations(), new TypeBasedAggregationOperationContext( + TestRecord.class, ctx, new QueryMapper(mongoConverter), FieldLookupPolicy.relaxed())); } @Test // GH-4722 @@ -97,7 +100,8 @@ public class AggregationOperationRendererUnitTests { ); List document = AggregationOperationRenderer.toDocument(agg.getPipeline().getOperations(), - new RelaxedTypeBasedAggregationOperationContext(TestRecord.class, ctx, new QueryMapper(mongoConverter))); + new TypeBasedAggregationOperationContext(TestRecord.class, ctx, new QueryMapper(mongoConverter), + FieldLookupPolicy.relaxed())); Assertions.assertThat(document).last() .extracting(it -> it.getEmbedded(List.of("$match", "createdDate", "$lt"), Object.class)) .isInstanceOf(String.class); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationUnitTests.java index 066a80f82..8e18f511b 100755 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationUnitTests.java @@ -15,10 +15,21 @@ */ package org.springframework.data.mongodb.core.aggregation; -import static org.springframework.data.mongodb.core.DocumentTestUtils.*; -import static org.springframework.data.mongodb.core.aggregation.Aggregation.*; -import static org.springframework.data.mongodb.core.query.Criteria.*; -import static org.springframework.data.mongodb.test.util.Assertions.*; +import static org.springframework.data.mongodb.core.DocumentTestUtils.getAsDocument; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.DEFAULT_CONTEXT; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.bucket; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.group; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.match; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregationOptions; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.project; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.replaceRoot; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.sort; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.stage; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.unwind; +import static org.springframework.data.mongodb.core.query.Criteria.where; +import static org.springframework.data.mongodb.test.util.Assertions.assertThat; +import static org.springframework.data.mongodb.test.util.Assertions.assertThatIllegalArgumentException; import java.util.ArrayList; import java.util.Arrays; @@ -146,7 +157,7 @@ public class AggregationUnitTests { Document agg = newAggregation( // replaceRoot().withDocument().andValue("value").as("field")) // - .toDocument("foo", Aggregation.DEFAULT_CONTEXT); + .toDocument("foo", Aggregation.DEFAULT_CONTEXT); @SuppressWarnings("unchecked") Document unwind = ((List) agg.get("pipeline")).get(0); @@ -599,8 +610,9 @@ public class AggregationUnitTests { MongoMappingContext mappingContext = new MongoMappingContext(); Document target = new Aggregation(bucket("start"), project("_id")).toDocument("collection-1", - new RelaxedTypeBasedAggregationOperationContext(BookWithFieldAnnotation.class, mappingContext, - new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext)))); + new TypeBasedAggregationOperationContext(BookWithFieldAnnotation.class, mappingContext, + new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext)), + FieldLookupPolicy.relaxed())); assertThat(extractPipelineElement(target, 1, "$project")).isEqualTo(Document.parse(" { \"_id\" : 1 }")); } @@ -609,11 +621,12 @@ public class AggregationUnitTests { void shouldNotConvertIncludeExcludeValuesForProjectOperation() { MongoMappingContext mappingContext = new MongoMappingContext(); - RelaxedTypeBasedAggregationOperationContext context = new RelaxedTypeBasedAggregationOperationContext( - WithRetypedIdField.class, mappingContext, - new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext))); + AggregationOperationContext context = new TypeBasedAggregationOperationContext(WithRetypedIdField.class, + mappingContext, new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext)), + FieldLookupPolicy.relaxed()); Document document = project(WithRetypedIdField.class).toDocument(context); - assertThat(document).isEqualTo(new Document("$project", new Document("_id", 1).append("renamed-field", 1).append("entries", 1))); + assertThat(document) + .isEqualTo(new Document("$project", new Document("_id", 1).append("renamed-field", 1).append("entries", 1))); } @Test // GH-4038 @@ -650,7 +663,8 @@ public class AggregationUnitTests { MongoMappingContext mappingContext = new MongoMappingContext(); QueryMapper queryMapper = new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext)); - List documents = newAggregation(City.class, aggregationOperations).toPipeline(new RelaxedTypeBasedAggregationOperationContext(City.class, mappingContext, queryMapper)); + List documents = newAggregation(City.class, aggregationOperations) + .toPipeline(new RelaxedTypeBasedAggregationOperationContext(City.class, mappingContext, queryMapper)); assertThat(documents.get(2)).isEqualTo("{ $sort : { 'serial_number' : -1, 'label_name' : -1 } }"); } @@ -658,12 +672,12 @@ public class AggregationUnitTests { void fieldsExposingContextShouldUseCustomFieldNameFromRelaxedRootContext() { MongoMappingContext mappingContext = new MongoMappingContext(); - RelaxedTypeBasedAggregationOperationContext context = new RelaxedTypeBasedAggregationOperationContext( - WithRetypedIdField.class, mappingContext, - new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext))); + AggregationOperationContext context = new TypeBasedAggregationOperationContext(WithRetypedIdField.class, + mappingContext, new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext)), + FieldLookupPolicy.relaxed()); - TypedAggregation agg = newAggregation(WithRetypedIdField.class, - unwind("entries"), match(where("foo").is("value 2"))); + TypedAggregation agg = newAggregation(WithRetypedIdField.class, unwind("entries"), + match(where("foo").is("value 2"))); List pipeline = agg.toPipeline(context); Document fields = getAsDocument(pipeline.get(1), "$match"); @@ -685,7 +699,8 @@ public class AggregationUnitTests { public class WithRetypedIdField { - @Id @org.springframework.data.mongodb.core.mapping.Field private String id; + @Id + @org.springframework.data.mongodb.core.mapping.Field private String id; @org.springframework.data.mongodb.core.mapping.Field("renamed-field") private String foo; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ObjectOperatorsUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ObjectOperatorsUnitTests.java index 05d5a2d75..b76d4456e 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ObjectOperatorsUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ObjectOperatorsUnitTests.java @@ -126,7 +126,7 @@ public class ObjectOperatorsUnitTests { MappingMongoConverter converter = new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, new MongoMappingContext()); converter.afterPropertiesSet(); - assertThat(ObjectOperators.getValueOf("population").toDocument(new RelaxedTypeBasedAggregationOperationContext(ZipInfo.class, converter.getMappingContext(), new QueryMapper(converter)))) + assertThat(ObjectOperators.getValueOf("population").toDocument(new TypeBasedAggregationOperationContext(ZipInfo.class, converter.getMappingContext(), new QueryMapper(converter), FieldLookupPolicy.relaxed()))) .isEqualTo(Document.parse("{ $getField : { field : \"pop\", input : \"$$CURRENT\" } }")); } @@ -143,7 +143,7 @@ public class ObjectOperatorsUnitTests { MappingMongoConverter converter = new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, new MongoMappingContext()); converter.afterPropertiesSet(); - assertThat(ObjectOperators.setValueTo("population", "robin").toDocument(new RelaxedTypeBasedAggregationOperationContext(ZipInfo.class, converter.getMappingContext(), new QueryMapper(converter)))) + assertThat(ObjectOperators.setValueTo("population", "robin").toDocument(new TypeBasedAggregationOperationContext(ZipInfo.class, converter.getMappingContext(), new QueryMapper(converter), FieldLookupPolicy.relaxed()))) .isEqualTo(Document.parse("{ $setField : { field : \"pop\", value : \"robin\", input : \"$$CURRENT\" }}")); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SelectionOperatorUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SelectionOperatorUnitTests.java index 1737d3521..23ed600c1 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SelectionOperatorUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SelectionOperatorUnitTests.java @@ -15,7 +15,7 @@ */ package org.springframework.data.mongodb.core.aggregation; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; import org.bson.Document; import org.junit.jupiter.api.Test; @@ -133,9 +133,9 @@ class SelectionOperatorUnitTests { void firstNMapsFieldNamesCorrectly() { MongoMappingContext mappingContext = new MongoMappingContext(); - RelaxedTypeBasedAggregationOperationContext aggregationContext = new RelaxedTypeBasedAggregationOperationContext( - Player.class, mappingContext, - new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext))); + AggregationOperationContext aggregationContext = new TypeBasedAggregationOperationContext(Player.class, + mappingContext, new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext)), + FieldLookupPolicy.relaxed()); Document document = SelectionOperators.First.first(3).of("score").toDocument(aggregationContext); @@ -154,9 +154,9 @@ class SelectionOperatorUnitTests { void lastNMapsFieldNamesCorrectly() { MongoMappingContext mappingContext = new MongoMappingContext(); - RelaxedTypeBasedAggregationOperationContext aggregationContext = new RelaxedTypeBasedAggregationOperationContext( - Player.class, mappingContext, - new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext))); + AggregationOperationContext aggregationContext = new TypeBasedAggregationOperationContext(Player.class, + mappingContext, new QueryMapper(new MappingMongoConverter(NoOpDbRefResolver.INSTANCE, mappingContext)), + FieldLookupPolicy.relaxed()); Document document = SelectionOperators.Last.last(3).of("score").toDocument(aggregationContext); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SetOperationUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SetOperationUnitTests.java index 75632f4ac..5dad6e299 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SetOperationUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SetOperationUnitTests.java @@ -15,7 +15,8 @@ */ package org.springframework.data.mongodb.core.aggregation; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import java.util.List; @@ -60,7 +61,7 @@ class SetOperationUnitTests { assertThat( new SetOperation("scoresWithMappedField.student", "value").toPipelineStages(contextFor(ScoresWrapper.class))) - .containsExactly(Document.parse("{\"$set\" : {\"scoresWithMappedField.student_name\":\"value\"}}")); + .containsExactly(Document.parse("{\"$set\" : {\"scoresWithMappedField.student_name\":\"value\"}}")); } @Test // DATAMONGO-2331 @@ -75,7 +76,7 @@ class SetOperationUnitTests { assertThat( new SetOperation("student", Fields.field("homework")).toPipelineStages(contextFor(ScoresWithMappedField.class))) - .containsExactly(Document.parse("{\"$set\" : {\"student_name\":\"$home_work\"}}")); + .containsExactly(Document.parse("{\"$set\" : {\"student_name\":\"$home_work\"}}")); } @Test // DATAMONGO-2331 @@ -83,8 +84,8 @@ class SetOperationUnitTests { assertThat(new SetOperation("scoresWithMappedField.student", Fields.field("scoresWithMappedField.homework")) .toPipelineStages(contextFor(ScoresWrapper.class))) - .containsExactly(Document - .parse("{\"$set\" : {\"scoresWithMappedField.student_name\":\"$scoresWithMappedField.home_work\"}}")); + .containsExactly(Document + .parse("{\"$set\" : {\"scoresWithMappedField.student_name\":\"$scoresWithMappedField.home_work\"}}")); } @Test // DATAMONGO-2363 @@ -102,7 +103,7 @@ class SetOperationUnitTests { assertThat(SetOperation.builder().set("totalHomework").toValueOf(ArithmeticOperators.valueOf("homework").sum()) .toPipelineStages(contextFor(Scores.class))) - .containsExactly(Document.parse("{\"$set\" : {\"totalHomework\": { \"$sum\" : \"$homework\" }}}")); + .containsExactly(Document.parse("{\"$set\" : {\"totalHomework\": { \"$sum\" : \"$homework\" }}}")); } @Test // GH-4933 @@ -144,8 +145,8 @@ class SetOperationUnitTests { new MongoMappingContext()); mongoConverter.afterPropertiesSet(); - return new RelaxedTypeBasedAggregationOperationContext(type, mongoConverter.getMappingContext(), - new QueryMapper(mongoConverter)); + return new TypeBasedAggregationOperationContext(type, mongoConverter.getMappingContext(), + new QueryMapper(mongoConverter), FieldLookupPolicy.relaxed()); } static class Scores {