From abe7876086ee4a27f6ef2d16b0fd8ddc6fd7dfd9 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 9 Jan 2019 16:07:59 +0100 Subject: [PATCH] DATAMONGO-2155 - Polishing. Reduce visibility of MappedUpdated to package-protected to avoid exposure. Rename UpdateDefinition.incVersion() to inc(). Reintroduce doUpdate() methods accepting Update and delegating to the new doUpdate() methods to preserve binary compatibility. Original pull request: #625. --- .../data/mongodb/core/MappedDocument.java | 12 ++++++------ .../data/mongodb/core/MongoTemplate.java | 11 ++++++++--- .../data/mongodb/core/ReactiveMongoTemplate.java | 9 +++++++-- .../data/mongodb/core/query/Update.java | 4 ++-- .../data/mongodb/core/query/UpdateDefinition.java | 7 ++++--- 5 files changed, 27 insertions(+), 16 deletions(-) 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 df7bda92a..490fd4cb1 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 @@ -83,7 +83,7 @@ public class MappedDocument { return Filters.eq(ID_FIELD, document.get(ID_FIELD)); } - public MappedUpdate updateWithoutId() { + public UpdateDefinition updateWithoutId() { return new MappedUpdate(Update.fromDocument(document, ID_FIELD)); } @@ -92,9 +92,9 @@ public class MappedDocument { * mapped to the specific domain type. * * @author Christoph Strobl - * @since 2.2 + * @since 2.1.4 */ - public class MappedUpdate implements UpdateDefinition { + class MappedUpdate implements UpdateDefinition { private final Update delegate; @@ -122,11 +122,11 @@ public class MappedDocument { /* * (non-Javadoc) - * @see org.springframework.data.mongodb.core.query.UpdateDefinition#incVersion(java.lang.String) + * @see org.springframework.data.mongodb.core.query.UpdateDefinition#inc(java.lang.String) */ @Override - public void incVersion(String version) { - delegate.incVersion(version); + public void inc(String version) { + delegate.inc(version); } /* 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 76762c197..5e839951d 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 @@ -1386,7 +1386,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, MappedDocument mapped = source.toMappedDocument(mongoConverter); maybeEmitEvent(new BeforeSaveEvent<>(toSave, mapped.getDocument(), collectionName)); - MappedUpdate update = mapped.updateWithoutId(); + UpdateDefinition update = mapped.updateWithoutId(); UpdateResult result = doUpdate(collectionName, query, update, toSave.getClass(), false, false); @@ -1556,7 +1556,12 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, return doUpdate(collectionName, query, update, entityClass, false, true); } - protected UpdateResult doUpdate(final String collectionName, final Query query, final UpdateDefinition update, + protected UpdateResult doUpdate(final String collectionName, final Query query, final Update update, + @Nullable final Class entityClass, final boolean upsert, final boolean multi) { + return doUpdate(collectionName, query, (UpdateDefinition) update, entityClass, upsert, multi); + } + + private UpdateResult doUpdate(final String collectionName, final Query query, final UpdateDefinition update, @Nullable final Class entityClass, final boolean upsert, final boolean multi) { Assert.notNull(collectionName, "CollectionName must not be null!"); @@ -1622,7 +1627,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, if (persistentEntity != null && persistentEntity.hasVersionProperty()) { String versionFieldName = persistentEntity.getRequiredVersionProperty().getFieldName(); if (!update.modifies(versionFieldName)) { - update.incVersion(versionFieldName); + update.inc(versionFieldName); } } } 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 544ce4f24..3ccc197da 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 @@ -1612,7 +1612,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return doUpdate(collectionName, query, update, entityClass, false, true); } - protected Mono doUpdate(String collectionName, Query query, @Nullable UpdateDefinition update, + protected Mono doUpdate(String collectionName, Query query, @Nullable Update update, + @Nullable Class entityClass, boolean upsert, boolean multi) { + return doUpdate(collectionName, query, (UpdateDefinition) update, entityClass, upsert, multi); + } + + private Mono doUpdate(String collectionName, Query query, @Nullable UpdateDefinition update, @Nullable Class entityClass, boolean upsert, boolean multi) { MongoPersistentEntity entity = entityClass == null ? null : getPersistentEntity(entityClass); @@ -1675,7 +1680,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati if (persistentEntity != null && persistentEntity.hasVersionProperty()) { String versionFieldName = persistentEntity.getRequiredVersionProperty().getFieldName(); if (!update.modifies(versionFieldName)) { - update.incVersion(versionFieldName); + update.inc(versionFieldName); } } } 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 c972105d5..a9c52ea4c 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 @@ -157,10 +157,10 @@ public class Update implements UpdateDefinition { /* * (non-Javadoc) - * @see org.springframework.data.mongodb.core.query.UpdateDefinition#incVersion() + * @see org.springframework.data.mongodb.core.query.UpdateDefinition#inc() */ @Override - public void incVersion(String key) { + public void inc(String key) { inc(key, 1L); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/UpdateDefinition.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/UpdateDefinition.java index 9e3240dce..2798c983a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/UpdateDefinition.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/UpdateDefinition.java @@ -21,7 +21,8 @@ import org.bson.Document; * Interface fixing must have operations for {@literal updates} as implemented via {@link Update}. * * @author Christoph Strobl - * @since 2.2 + * @author Mark Paluch + * @since 2.1.4 */ public interface UpdateDefinition { @@ -47,9 +48,9 @@ public interface UpdateDefinition { boolean modifies(String key); /** - * Bump the version of a given {@literal key} by {@code 1}. + * Increment the value of a given {@literal key} by {@code 1}. * * @param key must not be {@literal null}. */ - void incVersion(String key); + void inc(String key); }