From 1f06954952848a51a6ca7c856a5f6af1704aaa8c Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 11 Mar 2022 15:20:20 +0100 Subject: [PATCH] Polishing. Add missing Override annotations to template API methods. See #3984 --- .../data/mongodb/core/MongoTemplate.java | 28 ++++++++ .../mongodb/core/ReactiveMongoTemplate.java | 70 +++++++++++++++++++ 2 files changed, 98 insertions(+) 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 078b5eeac..87ce6bdc1 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 @@ -308,6 +308,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.readPreference = readPreference; } + @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { prepareIndexCreator(applicationContext); @@ -411,6 +412,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, * * @return */ + @Override public MongoConverter getConverter() { return this.mongoConverter; } @@ -521,6 +523,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, preparer != null ? preparer : CursorPreparer.NO_OP_PREPARER, documentCallbackHandler, collectionName); } + @Override public T execute(DbCallback action) { Assert.notNull(action, "DbCallback must not be null!"); @@ -533,12 +536,14 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, } } + @Override public T execute(Class entityClass, CollectionCallback callback) { Assert.notNull(entityClass, "EntityClass must not be null!"); return execute(getCollectionName(entityClass), callback); } + @Override public T execute(String collectionName, CollectionCallback callback) { Assert.notNull(collectionName, "CollectionName must not be null!"); @@ -579,10 +584,12 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.sessionSynchronization = sessionSynchronization; } + @Override public MongoCollection createCollection(Class entityClass) { return createCollection(entityClass, operations.forType(entityClass).getCollectionOptions()); } + @Override public MongoCollection createCollection(Class entityClass, @Nullable CollectionOptions collectionOptions) { @@ -597,6 +604,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, return doCreateCollection(getCollectionName(entityClass), convertToDocument(options, entityClass)); } + @Override public MongoCollection createCollection(String collectionName) { Assert.notNull(collectionName, "CollectionName must not be null!"); @@ -604,6 +612,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, return doCreateCollection(collectionName, new Document()); } + @Override public MongoCollection createCollection(String collectionName, @Nullable CollectionOptions collectionOptions) { @@ -611,6 +620,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, return doCreateCollection(collectionName, convertToDocument(collectionOptions, Object.class)); } + @Override @SuppressWarnings("ConstantConditions") public MongoCollection getCollection(String collectionName) { @@ -619,10 +629,12 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, return execute(db -> db.getCollection(collectionName, Document.class)); } + @Override public boolean collectionExists(Class entityClass) { return collectionExists(getCollectionName(entityClass)); } + @Override @SuppressWarnings("ConstantConditions") public boolean collectionExists(String collectionName) { @@ -639,10 +651,12 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, }); } + @Override public void dropCollection(Class entityClass) { dropCollection(getCollectionName(entityClass)); } + @Override public void dropCollection(String collectionName) { Assert.notNull(collectionName, "CollectionName must not be null!"); @@ -662,22 +676,27 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, return indexOps(collectionName, null); } + @Override public IndexOperations indexOps(String collectionName, @Nullable Class type) { return new DefaultIndexOperations(this, collectionName, type); } + @Override public IndexOperations indexOps(Class entityClass) { return indexOps(getCollectionName(entityClass), entityClass); } + @Override public BulkOperations bulkOps(BulkMode bulkMode, String collectionName) { return bulkOps(bulkMode, null, collectionName); } + @Override public BulkOperations bulkOps(BulkMode bulkMode, Class entityClass) { return bulkOps(bulkMode, entityClass, getCollectionName(entityClass)); } + @Override public BulkOperations bulkOps(BulkMode mode, @Nullable Class entityType, String collectionName) { Assert.notNull(mode, "BulkMode must not be null!"); @@ -1017,6 +1036,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, * (non-Javadoc) * @see org.springframework.data.mongodb.core.MongoOperations#count(org.springframework.data.mongodb.core.query.Query, java.lang.Class, java.lang.String) */ + @Override public long count(Query query, @Nullable Class entityClass, String collectionName) { Assert.notNull(query, "Query must not be null!"); @@ -2127,6 +2147,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, return func; } + @Override @SuppressWarnings("ConstantConditions") public Set getCollectionNames() { return execute(db -> { @@ -2782,6 +2803,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.collation = collation; } + @Override public FindIterable doInCollection(MongoCollection collection) throws MongoException, DataAccessException { @@ -2841,6 +2863,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.collation = Optional.ofNullable(collation); } + @Override public Document doInCollection(MongoCollection collection) throws MongoException, DataAccessException { FindOneAndDeleteOptions opts = new FindOneAndDeleteOptions().sort(sort).projection(fields); @@ -2870,6 +2893,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.options = options; } + @Override public Document doInCollection(MongoCollection collection) throws MongoException, DataAccessException { FindOneAndUpdateOptions opts = new FindOneAndUpdateOptions(); @@ -2978,6 +3002,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.collectionName = collectionName; } + @Override public T doWith(Document document) { maybeEmitEvent(new AfterLoadEvent<>(document, type, collectionName)); @@ -3015,6 +3040,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.collectionName = collectionName; } + @Override @SuppressWarnings("unchecked") public T doWith(Document document) { @@ -3046,6 +3072,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.type = type; } + @Override public FindIterable prepare(FindIterable iterable) { FindIterable cursorToUse = iterable; @@ -3163,6 +3190,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, this.metric = metric; } + @Override public GeoResult doWith(Document object) { double distance = Double.NaN; 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 08e246714..aa75aa327 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 @@ -336,6 +336,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati this.readPreference = readPreference; } + @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { prepareIndexCreator(applicationContext); @@ -441,22 +442,27 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati * * @return */ + @Override public MongoConverter getConverter() { return this.mongoConverter; } + @Override public ReactiveIndexOperations indexOps(String collectionName) { return new DefaultReactiveIndexOperations(this, collectionName, this.queryMapper); } + @Override public ReactiveIndexOperations indexOps(Class entityClass) { return new DefaultReactiveIndexOperations(this, getCollectionName(entityClass), this.queryMapper, entityClass); } + @Override public String getCollectionName(Class entityClass) { return operations.determineCollectionName(entityClass); } + @Override public Mono executeCommand(String jsonCommand) { Assert.notNull(jsonCommand, "Command must not be empty!"); @@ -464,10 +470,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return executeCommand(Document.parse(jsonCommand)); } + @Override public Mono executeCommand(Document command) { return executeCommand(command, null); } + @Override public Mono executeCommand(Document command, @Nullable ReadPreference readPreference) { Assert.notNull(command, "Command must not be null!"); @@ -486,6 +494,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return createFlux(action); } + @Override public Flux execute(String collectionName, ReactiveCollectionCallback callback) { Assert.notNull(callback, "ReactiveCollectionCallback must not be null!"); @@ -534,6 +543,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati .contextWrite(ctx -> ReactiveMongoContext.setSession(ctx, Mono.just(session))); } + @Override public ReactiveMongoOperations withSession(ClientSession session) { return new ReactiveSessionBoundMongoTemplate(session, ReactiveMongoTemplate.this); } @@ -611,10 +621,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati .onErrorMap(translateException()); } + @Override public Mono> createCollection(Class entityClass) { return createCollection(entityClass, operations.forType(entityClass).getCollectionOptions()); } + @Override public Mono> createCollection(Class entityClass, @Nullable CollectionOptions collectionOptions) { @@ -629,15 +641,18 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return doCreateCollection(getCollectionName(entityClass), convertToCreateCollectionOptions(options, entityClass)); } + @Override public Mono> createCollection(String collectionName) { return doCreateCollection(collectionName, new CreateCollectionOptions()); } + @Override public Mono> createCollection(String collectionName, @Nullable CollectionOptions collectionOptions) { return doCreateCollection(collectionName, convertToCreateCollectionOptions(collectionOptions)); } + @Override public Mono> getCollection(String collectionName) { Assert.notNull(collectionName, "Collection name must not be null!"); @@ -645,10 +660,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return createMono(db -> Mono.just(db.getCollection(collectionName))); } + @Override public Mono collectionExists(Class entityClass) { return collectionExists(getCollectionName(entityClass)); } + @Override public Mono collectionExists(String collectionName) { return createMono(db -> Flux.from(db.listCollectionNames()) // .filter(s -> s.equals(collectionName)) // @@ -656,10 +673,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati .single(false)); } + @Override public Mono dropCollection(Class entityClass) { return dropCollection(getCollectionName(entityClass)); } + @Override public Mono dropCollection(String collectionName) { return createMono(collectionName, MongoCollection::drop).doOnSuccess(success -> { @@ -669,6 +688,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati }).then(); } + @Override public Flux getCollectionNames() { return createFlux(MongoDatabase::listCollectionNames); } @@ -681,10 +701,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return ReactiveMongoDatabaseUtils.getDatabase(mongoDatabaseFactory, sessionSynchronization); } + @Override public Mono findOne(Query query, Class entityClass) { return findOne(query, entityClass, getCollectionName(entityClass)); } + @Override public Mono findOne(Query query, Class entityClass, String collectionName) { if (ObjectUtils.isEmpty(query.getSortObject())) { @@ -696,14 +718,17 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return find(query, entityClass, collectionName).next(); } + @Override public Mono exists(Query query, Class entityClass) { return exists(query, entityClass, getCollectionName(entityClass)); } + @Override public Mono exists(Query query, String collectionName) { return exists(query, null, collectionName); } + @Override public Mono exists(Query query, @Nullable Class entityClass, String collectionName) { if (query == null) { @@ -728,10 +753,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati }).hasElements(); } + @Override public Flux find(Query query, Class entityClass) { return find(query, entityClass, getCollectionName(entityClass)); } + @Override public Flux find(@Nullable Query query, Class entityClass, String collectionName) { if (query == null) { @@ -742,10 +769,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati new QueryFindPublisherPreparer(query, entityClass)); } + @Override public Mono findById(Object id, Class entityClass) { return findById(id, entityClass, getCollectionName(entityClass)); } + @Override public Mono findById(Object id, Class entityClass, String collectionName) { String idKey = operations.getIdPropertyName(entityClass); @@ -753,10 +782,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return doFindOne(collectionName, new Document(idKey, id), null, entityClass, (Collation) null); } + @Override public Flux findDistinct(Query query, String field, Class entityClass, Class resultClass) { return findDistinct(query, field, getCollectionName(entityClass), entityClass, resultClass); } + @Override @SuppressWarnings("unchecked") public Flux findDistinct(Query query, String field, String collectionName, Class entityClass, Class resultClass) { @@ -912,19 +943,23 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati .concatMap(callback::doWith); } + @Override public Mono findAndModify(Query query, UpdateDefinition update, Class entityClass) { return findAndModify(query, update, new FindAndModifyOptions(), entityClass, getCollectionName(entityClass)); } + @Override public Mono findAndModify(Query query, UpdateDefinition update, Class entityClass, String collectionName) { return findAndModify(query, update, new FindAndModifyOptions(), entityClass, collectionName); } + @Override public Mono findAndModify(Query query, UpdateDefinition update, FindAndModifyOptions options, Class entityClass) { return findAndModify(query, update, options, entityClass, getCollectionName(entityClass)); } + @Override public Mono findAndModify(Query query, UpdateDefinition update, FindAndModifyOptions options, Class entityClass, String collectionName) { @@ -994,10 +1029,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati }); } + @Override public Mono findAndRemove(Query query, Class entityClass) { return findAndRemove(query, entityClass, getCollectionName(entityClass)); } + @Override public Mono findAndRemove(Query query, Class entityClass, String collectionName) { operations.forType(entityClass).getCollation(query); @@ -1010,6 +1047,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati * (non-Javadoc) * @see org.springframework.data.mongodb.core.ReactiveMongoOperations#count(org.springframework.data.mongodb.core.query.Query, java.lang.Class) */ + @Override public Mono count(Query query, Class entityClass) { Assert.notNull(entityClass, "Entity class must not be null!"); @@ -1017,10 +1055,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return count(query, entityClass, getCollectionName(entityClass)); } + @Override public Mono count(Query query, String collectionName) { return count(query, null, collectionName); } + @Override public Mono count(Query query, @Nullable Class entityClass, String collectionName) { Assert.notNull(query, "Query must not be null!"); @@ -1127,6 +1167,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return Flux.from(batchToSave).flatMap(collection -> insert(collection, collectionName)); } + @Override public Mono insert(T objectToSave) { Assert.notNull(objectToSave, "Object to insert must not be null!"); @@ -1135,6 +1176,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return insert(objectToSave, getCollectionName(ClassUtils.getUserClass(objectToSave))); } + @Override public Mono insert(T objectToSave, String collectionName) { Assert.notNull(objectToSave, "Object to insert must not be null!"); @@ -1173,14 +1215,17 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati }); } + @Override public Flux insert(Collection batchToSave, Class entityClass) { return doInsertBatch(getCollectionName(entityClass), batchToSave, this.mongoConverter); } + @Override public Flux insert(Collection batchToSave, String collectionName) { return doInsertBatch(collectionName, batchToSave, this.mongoConverter); } + @Override public Flux insertAll(Collection objectsToSave) { return doInsertAll(objectsToSave, this.mongoConverter); } @@ -1265,12 +1310,14 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return objectToSave.flatMap(o -> save(o, collectionName)); } + @Override public Mono save(T objectToSave) { Assert.notNull(objectToSave, "Object to save must not be null!"); return save(objectToSave, getCollectionName(ClassUtils.getUserClass(objectToSave))); } + @Override public Mono save(T objectToSave, String collectionName) { Assert.notNull(objectToSave, "Object to save must not be null!"); @@ -1462,14 +1509,17 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati } + @Override public Mono upsert(Query query, UpdateDefinition update, Class entityClass) { return doUpdate(getCollectionName(entityClass), query, update, entityClass, true, false); } + @Override public Mono upsert(Query query, UpdateDefinition update, String collectionName) { return doUpdate(collectionName, query, update, null, true, false); } + @Override public Mono upsert(Query query, UpdateDefinition update, Class entityClass, String collectionName) { return doUpdate(collectionName, query, update, entityClass, true, false); } @@ -1478,27 +1528,33 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati * (non-Javadoc)) * @see org.springframework.data.mongodb.core.ReactiveMongoOperations#updateFirst(org.springframework.data.mongodb.core.query.Query, org.springframework.data.mongodb.core.query.UpdateDefinition, java.lang.Class) */ + @Override public Mono updateFirst(Query query, UpdateDefinition update, Class entityClass) { return doUpdate(getCollectionName(entityClass), query, update, entityClass, false, false); } + @Override public Mono updateFirst(Query query, UpdateDefinition update, String collectionName) { return doUpdate(collectionName, query, update, null, false, false); } + @Override public Mono updateFirst(Query query, UpdateDefinition update, Class entityClass, String collectionName) { return doUpdate(collectionName, query, update, entityClass, false, false); } + @Override public Mono updateMulti(Query query, UpdateDefinition update, Class entityClass) { return doUpdate(getCollectionName(entityClass), query, update, entityClass, false, true); } + @Override public Mono updateMulti(Query query, UpdateDefinition update, String collectionName) { return doUpdate(collectionName, query, update, null, false, true); } + @Override public Mono updateMulti(Query query, UpdateDefinition update, Class entityClass, String collectionName) { return doUpdate(collectionName, query, update, entityClass, false, true); @@ -1620,6 +1676,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return objectToRemove.flatMap(it -> remove(it, collectionName)); } + @Override public Mono remove(Object object) { Assert.notNull(object, "Object must not be null!"); @@ -1627,6 +1684,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati return remove(operations.forEntity(object).getRemoveByQuery(), object.getClass()); } + @Override public Mono remove(Object object, String collectionName) { Assert.notNull(object, "Object must not be null!"); @@ -1656,14 +1714,17 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati } } + @Override public Mono remove(Query query, String collectionName) { return remove(query, null, collectionName); } + @Override public Mono remove(Query query, Class entityClass) { return remove(query, entityClass, getCollectionName(entityClass)); } + @Override public Mono remove(Query query, @Nullable Class entityClass, String collectionName) { return doRemove(collectionName, query, entityClass); } @@ -1718,10 +1779,12 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati .next(); } + @Override public Flux findAll(Class entityClass) { return findAll(entityClass, getCollectionName(entityClass)); } + @Override public Flux findAll(Class entityClass, String collectionName) { return executeFindMultiInternal(new FindCallback(null), FindPublisherPreparer.NO_OP_PREPARER, new ReadDocumentCallback<>(mongoConverter, entityClass, collectionName), collectionName); @@ -1817,6 +1880,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati "ChangeStreamRequestOptions.filter mut be either an Aggregation or a plain list of Documents"); } + @Override public Flux mapReduce(Query filterQuery, Class domainType, Class resultType, String mapFunction, String reduceFunction, MapReduceOptions options) { @@ -1824,6 +1888,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati options); } + @Override public Flux mapReduce(Query filterQuery, Class domainType, String inputCollectionName, Class resultType, String mapFunction, String reduceFunction, MapReduceOptions options) { @@ -2812,6 +2877,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati */ interface ReactiveCollectionQueryCallback extends ReactiveCollectionCallback { + @Override FindPublisher doInCollection(MongoCollection collection) throws MongoException, DataAccessException; } @@ -2838,6 +2904,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati this.collectionName = collectionName; } + @Override public Mono doWith(Document document) { maybeEmitEvent(new AfterLoadEvent<>(document, type, collectionName)); @@ -2875,6 +2942,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati this.collectionName = collectionName; } + @Override @SuppressWarnings("unchecked") public Mono doWith(Document document) { @@ -2924,6 +2992,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati this.metric = metric; } + @Override public Mono> doWith(Document object) { double distance = getDistance(object); @@ -2955,6 +3024,7 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati this.type = type; } + @Override public FindPublisher prepare(FindPublisher findPublisher) { FindPublisher findPublisherToUse = operations.forType(type) //