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 9bdb1aee2..6840fce5b 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 @@ -24,7 +24,6 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.UUID; import org.springframework.data.annotation.Id; import org.springframework.data.mapping.Association; @@ -34,7 +33,6 @@ import org.springframework.data.mapping.PropertyHandler; import org.springframework.data.mapping.model.BasicPersistentEntity; import org.springframework.data.mongodb.MongoCollectionUtils; import org.springframework.data.mongodb.util.encryption.EncryptionUtils; -import org.springframework.data.spel.EvaluationContextProvider; import org.springframework.data.spel.ExpressionDependencies; import org.springframework.data.util.Lazy; import org.springframework.data.util.TypeInformation; @@ -60,7 +58,7 @@ import org.springframework.util.StringUtils; * @author Mark Paluch */ public class BasicMongoPersistentEntity extends BasicPersistentEntity - implements MongoPersistentEntity, EvaluationContextProvider { + implements MongoPersistentEntity { private static final String AMBIGUOUS_FIELD_MAPPING = "Ambiguous field mapping detected! Both %s and %s map to the same field name %s! Disambiguate using @Field annotation!"; private static final SpelExpressionParser PARSER = new SpelExpressionParser(); @@ -382,7 +380,7 @@ public class BasicMongoPersistentEntity extends BasicPersistentEntity - implements MongoPersistentProperty, EvaluationContextProvider { + implements MongoPersistentProperty { private static final Logger LOG = LoggerFactory.getLogger(BasicMongoPersistentProperty.class); @@ -311,22 +309,19 @@ public class BasicMongoPersistentProperty extends AnnotationBasedPersistentPrope return isAnnotationPresent(TextScore.class); } - @Override - public EvaluationContext getEvaluationContext(Object rootObject, ExpressionDependencies dependencies) { - - if (getOwner() instanceof EvaluationContextProvider) { - return ((EvaluationContextProvider) getOwner()).getEvaluationContext(rootObject, dependencies); - } - return new StandardEvaluationContext(); - } - - @Override - public EvaluationContext getEvaluationContext(Object rootObject) { + /** + * Obtain the {@link EvaluationContext} for a specific root object. + * + * @param rootObject can be {@literal null}. + * @return never {@literal null}. + * @since 3.3 + */ + public EvaluationContext getEvaluationContext(@Nullable Object rootObject) { - if (getOwner() instanceof EvaluationContextProvider) { - return ((EvaluationContextProvider) getOwner()).getEvaluationContext(rootObject); + if (getOwner() instanceof BasicMongoPersistentEntity) { + return ((BasicMongoPersistentEntity) getOwner()).getEvaluationContext(rootObject); } - return new StandardEvaluationContext(); + return rootObject != null ? new StandardEvaluationContext(rootObject) : new StandardEvaluationContext(); } @Override