From 7ed48f5e76decf6680484a110297edd14a5de521 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 7 Jun 2017 14:15:18 +0200 Subject: [PATCH] DATAMONGO-1689 - Polishing. Additionally format code, update license header, update JavaDoc and add issue reference to tests. Original pull request: #463. --- .../mongodb/core/MongoOperationsExtensions.kt | 160 +++++------ .../core/ReactiveMongoOperationsExtensions.kt | 120 ++++---- .../core/MongoOperationsExtensionsTests.kt | 260 +++++++++++++----- .../ReactiveMongoOperationsExtensionsTests.kt | 205 ++++++++++---- 4 files changed, 459 insertions(+), 286 deletions(-) diff --git a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/MongoOperationsExtensions.kt b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/MongoOperationsExtensions.kt index 27afc6cc0..62abe677f 100644 --- a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/MongoOperationsExtensions.kt +++ b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/MongoOperationsExtensions.kt @@ -38,7 +38,7 @@ import kotlin.reflect.KClass * Extension for [MongoOperations.getCollectionName] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ fun MongoOperations.getCollectionName(entityClass: KClass): String = getCollectionName(entityClass.java) @@ -48,7 +48,7 @@ fun MongoOperations.getCollectionName(entityClass: KClass): String * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.getCollectionName(): String = getCollectionName(T::class.java) @@ -58,7 +58,7 @@ inline fun MongoOperations.getCollectionName(): String = * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.execute(action: CollectionCallback): T = execute(T::class.java, action) @@ -68,20 +68,19 @@ inline fun MongoOperations.execute(action: CollectionCallback< * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.stream(query: Query): CloseableIterator = - stream(query, T::class.java) + stream(query, T::class.java) /** * Extension for [MongoOperations.stream] avoiding requiring the type parameter * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.stream(query: Query, - collectionName: String? = null): CloseableIterator = +inline fun MongoOperations.stream(query: Query, collectionName: String? = null): CloseableIterator = if (collectionName != null) stream(query, T::class.java, collectionName) else stream(query, T::class.java) @@ -89,10 +88,9 @@ inline fun MongoOperations.stream(query: Query, * Extension for [MongoOperations.createCollection] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun MongoOperations.createCollection(entityClass: KClass, - collectionOptions: CollectionOptions? = null): MongoCollection = +fun MongoOperations.createCollection(entityClass: KClass, collectionOptions: CollectionOptions? = null): MongoCollection = if (collectionOptions != null) createCollection(entityClass.java, collectionOptions) else createCollection(entityClass.java) @@ -101,7 +99,7 @@ fun MongoOperations.createCollection(entityClass: KClass, * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.createCollection( collectionOptions: CollectionOptions? = null): MongoCollection = @@ -112,7 +110,7 @@ inline fun MongoOperations.createCollection( * Extension for [MongoOperations.collectionExists] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ fun MongoOperations.collectionExists(entityClass: KClass): Boolean = collectionExists(entityClass.java) @@ -122,7 +120,7 @@ fun MongoOperations.collectionExists(entityClass: KClass): Boolean * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.collectionExists(): Boolean = collectionExists(T::class.java) @@ -131,10 +129,10 @@ inline fun MongoOperations.collectionExists(): Boolean = * Extension for [MongoOperations.dropCollection] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ fun MongoOperations.dropCollection(entityClass: KClass) { - dropCollection(entityClass.java) + dropCollection(entityClass.java) } /** @@ -142,17 +140,17 @@ fun MongoOperations.dropCollection(entityClass: KClass) { * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.dropCollection() { - dropCollection(T::class.java) + dropCollection(T::class.java) } /** * Extension for [MongoOperations.indexOps] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ fun MongoOperations.indexOps(entityClass: KClass): IndexOperations = indexOps(entityClass.java) @@ -162,7 +160,7 @@ fun MongoOperations.indexOps(entityClass: KClass): IndexOperations * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.indexOps(): IndexOperations = indexOps(T::class.java) @@ -171,10 +169,9 @@ inline fun MongoOperations.indexOps(): IndexOperations = * Extension for [MongoOperations.bulkOps] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun MongoOperations.bulkOps(bulkMode: BulkMode, entityClass: KClass, - collectionName: String? = null): BulkOperations = +fun MongoOperations.bulkOps(bulkMode: BulkMode, entityClass: KClass, collectionName: String? = null): BulkOperations = if (collectionName != null) bulkOps(bulkMode, entityClass.java, collectionName) else bulkOps(bulkMode, entityClass.java) @@ -182,11 +179,10 @@ fun MongoOperations.bulkOps(bulkMode: BulkMode, entityClass: KClass * Extension for [MongoOperations.bulkOps] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun MongoOperations.bulkOps(bulkMode: BulkMode, - collectionName: String? = null): BulkOperations = +inline fun MongoOperations.bulkOps(bulkMode: BulkMode, collectionName: String? = null): BulkOperations = if (collectionName != null) bulkOps(bulkMode, T::class.java, collectionName) else bulkOps(bulkMode, T::class.java) @@ -195,7 +191,7 @@ inline fun MongoOperations.bulkOps(bulkMode: BulkMode, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.findAll(collectionName: String? = null): List = if (collectionName != null) findAll(T::class.java, collectionName) else findAll(T::class.java) @@ -205,7 +201,7 @@ inline fun MongoOperations.findAll(collectionName: String? = n * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.group(inputCollectionName: String, groupBy: GroupBy): GroupByResults = group(inputCollectionName, groupBy, T::class.java) @@ -215,10 +211,9 @@ inline fun MongoOperations.group(inputCollectionName: String, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.group(criteria: Criteria, - inputCollectionName: String, groupBy: GroupBy): GroupByResults = +inline fun MongoOperations.group(criteria: Criteria, inputCollectionName: String, groupBy: GroupBy): GroupByResults = group(criteria, inputCollectionName, groupBy, T::class.java) /** @@ -226,10 +221,9 @@ inline fun MongoOperations.group(criteria: Criteria, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.aggregate(aggregation: Aggregation, - inputType: KClass<*>): AggregationResults = +inline fun MongoOperations.aggregate(aggregation: Aggregation, inputType: KClass<*>): AggregationResults = aggregate(aggregation, inputType.java, O::class.java) /** @@ -237,10 +231,9 @@ inline fun MongoOperations.aggregate(aggregation: Aggregation, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.aggregate(aggregation: Aggregation, - collectionName: String): AggregationResults = +inline fun MongoOperations.aggregate(aggregation: Aggregation, collectionName: String): AggregationResults = aggregate(aggregation, collectionName, O::class.java) /** @@ -248,10 +241,9 @@ inline fun MongoOperations.aggregate(aggregation: Aggregation, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.aggregateStream(aggregation: Aggregation, - inputType: KClass<*>): CloseableIterator = +inline fun MongoOperations.aggregateStream(aggregation: Aggregation, inputType: KClass<*>): CloseableIterator = aggregateStream(aggregation, inputType.java, O::class.java) /** @@ -259,10 +251,9 @@ inline fun MongoOperations.aggregateStream(aggregation: Aggreg * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.aggregateStream(aggregation: Aggregation, - collectionName: String): CloseableIterator = +inline fun MongoOperations.aggregateStream(aggregation: Aggregation, collectionName: String): CloseableIterator = aggregateStream(aggregation, collectionName, O::class.java) /** @@ -270,10 +261,9 @@ inline fun MongoOperations.aggregateStream(aggregation: Aggreg * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.mapReduce(collectionName: String, - mapFunction: String, reduceFunction: String, options: MapReduceOptions? = null): MapReduceResults = +inline fun MongoOperations.mapReduce(collectionName: String, mapFunction: String, reduceFunction: String, options: MapReduceOptions? = null): MapReduceResults = if (options != null) mapReduce(collectionName, mapFunction, reduceFunction, options, T::class.java) else mapReduce(collectionName, mapFunction, reduceFunction, T::class.java) @@ -282,10 +272,9 @@ inline fun MongoOperations.mapReduce(collectionName: String, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 52.0 */ -inline fun MongoOperations.mapReduce(query: Query, collectionName: String, - mapFunction: String, reduceFunction: String, options: MapReduceOptions? = null): MapReduceResults = +inline fun MongoOperations.mapReduce(query: Query, collectionName: String, mapFunction: String, reduceFunction: String, options: MapReduceOptions? = null): MapReduceResults = if (options != null) mapReduce(query, collectionName, mapFunction, reduceFunction, options, T::class.java) else mapReduce(query, collectionName, mapFunction, reduceFunction, T::class.java) @@ -294,10 +283,9 @@ inline fun MongoOperations.mapReduce(query: Query, collectionN * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.geoNear(near: NearQuery, - collectionName: String? = null): GeoResults = +inline fun MongoOperations.geoNear(near: NearQuery, collectionName: String? = null): GeoResults = if (collectionName != null) geoNear(near, T::class.java, collectionName) else geoNear(near, T::class.java) @@ -306,7 +294,7 @@ inline fun MongoOperations.geoNear(near: NearQuery, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.findOne(query: Query, collectionName: String? = null): T = if (collectionName != null) findOne(query, T::class.java, collectionName) else findOne(query, T::class.java) @@ -316,10 +304,9 @@ inline fun MongoOperations.findOne(query: Query, collectionNam * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun MongoOperations.exists(query: Query, entityClass: KClass, - collectionName: String? = null): Boolean = +fun MongoOperations.exists(query: Query, entityClass: KClass, collectionName: String? = null): Boolean = if (collectionName != null) exists(query, entityClass.java, collectionName) else exists(query, entityClass.java) @@ -328,7 +315,7 @@ fun MongoOperations.exists(query: Query, entityClass: KClass, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") inline fun MongoOperations.exists(query: Query, collectionName: String? = null): Boolean = @@ -340,7 +327,7 @@ inline fun MongoOperations.exists(query: Query, collectionName * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.find(query: Query, collectionName: String? = null): List = if (collectionName != null) find(query, T::class.java, collectionName) @@ -351,7 +338,7 @@ inline fun MongoOperations.find(query: Query, collectionName: * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.findById(id: Any, collectionName: String? = null): T = if (collectionName != null) findById(id, T::class.java, collectionName) @@ -362,10 +349,9 @@ inline fun MongoOperations.findById(id: Any, collectionName: S * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun MongoOperations.findAndModify(query: Query, update: Update, - options: FindAndModifyOptions, collectionName: String? = null): T = +inline fun MongoOperations.findAndModify(query: Query, update: Update, options: FindAndModifyOptions, collectionName: String? = null): T = if (collectionName != null) findAndModify(query, update, options, T::class.java, collectionName) else findAndModify(query, update, options, T::class.java) @@ -374,7 +360,7 @@ inline fun MongoOperations.findAndModify(query: Query, update: * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.findAndRemove(query: Query, collectionName: String? = null): T = if (collectionName != null) findAndRemove(query, T::class.java, collectionName) @@ -385,10 +371,9 @@ inline fun MongoOperations.findAndRemove(query: Query, collect * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun MongoOperations.count(query: Query = Query(), entityClass: KClass, - collectionName: String? = null): Long = +fun MongoOperations.count(query: Query = Query(), entityClass: KClass, collectionName: String? = null): Long = if (collectionName != null) count(query, entityClass.java, collectionName) else count(query, entityClass.java) @@ -397,7 +382,7 @@ fun MongoOperations.count(query: Query = Query(), entityClass: KClass< * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") inline fun MongoOperations.count(query: Query = Query(), collectionName: String? = null): Long = @@ -407,7 +392,7 @@ inline fun MongoOperations.count(query: Query = Query(), colle * Extension for [MongoOperations.insert] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ fun MongoOperations.insert(batchToSave: Collection, entityClass: KClass) { insert(batchToSave, entityClass.java) @@ -417,10 +402,9 @@ fun MongoOperations.insert(batchToSave: Collection, entityClass: KC * Extension for [MongoOperations.upsert] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun MongoOperations.upsert(query: Query, update: Update, entityClass: KClass, - collectionName: String? = null): UpdateResult = +fun MongoOperations.upsert(query: Query, update: Update, entityClass: KClass, collectionName: String? = null): UpdateResult = if (collectionName != null) upsert(query, update, entityClass.java, collectionName) else upsert(query, update, entityClass.java) @@ -429,11 +413,10 @@ fun MongoOperations.upsert(query: Query, update: Update, entityClass: * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun MongoOperations.upsert(query: Query, update: Update, - collectionName: String? = null): UpdateResult = +inline fun MongoOperations.upsert(query: Query, update: Update, collectionName: String? = null): UpdateResult = if (collectionName != null) upsert(query, update, T::class.java, collectionName) else upsert(query, update, T::class.java) @@ -441,10 +424,9 @@ inline fun MongoOperations.upsert(query: Query, update: Update * Extension for [MongoOperations.updateFirst] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun MongoOperations.updateFirst(query: Query, update: Update, entityClass: KClass, - collectionName: String? = null): UpdateResult = +fun MongoOperations.updateFirst(query: Query, update: Update, entityClass: KClass, collectionName: String? = null): UpdateResult = if (collectionName != null) updateFirst(query, update, entityClass.java, collectionName) else updateFirst(query, update, entityClass.java) @@ -453,11 +435,10 @@ fun MongoOperations.updateFirst(query: Query, update: Update, entityCl * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun MongoOperations.updateFirst(query: Query, update: Update, - collectionName: String? = null): UpdateResult = +inline fun MongoOperations.updateFirst(query: Query, update: Update, collectionName: String? = null): UpdateResult = if (collectionName != null) updateFirst(query, update, T::class.java, collectionName) else updateFirst(query, update, T::class.java) @@ -466,10 +447,9 @@ inline fun MongoOperations.updateFirst(query: Query, update: U * Extension for [MongoOperations.updateMulti] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun MongoOperations.updateMulti(query: Query, update: Update, entityClass: KClass, - collectionName: String? = null): UpdateResult = +fun MongoOperations.updateMulti(query: Query, update: Update, entityClass: KClass, collectionName: String? = null): UpdateResult = if (collectionName != null) updateMulti(query, update, entityClass.java, collectionName) else updateMulti(query, update, entityClass.java) @@ -478,11 +458,10 @@ fun MongoOperations.updateMulti(query: Query, update: Update, entityCl * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun MongoOperations.updateMulti(query: Query, update: Update, - collectionName: String? = null): UpdateResult = +inline fun MongoOperations.updateMulti(query: Query, update: Update, collectionName: String? = null): UpdateResult = if (collectionName != null) updateMulti(query, update, T::class.java, collectionName) else updateMulti(query, update, T::class.java) @@ -490,10 +469,9 @@ inline fun MongoOperations.updateMulti(query: Query, update: U * Extension for [MongoOperations.remove] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun MongoOperations.remove(query: Query, entityClass: KClass, - collectionName: String? = null): DeleteResult = +fun MongoOperations.remove(query: Query, entityClass: KClass, collectionName: String? = null): DeleteResult = if (collectionName != null) remove(query, entityClass.java, collectionName) else remove(query, entityClass.java) @@ -502,7 +480,7 @@ fun MongoOperations.remove(query: Query, entityClass: KClass, * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") inline fun MongoOperations.remove(query: Query, collectionName: String? = null): DeleteResult = @@ -514,7 +492,7 @@ inline fun MongoOperations.remove(query: Query, collectionName * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun MongoOperations.findAllAndRemove(query: Query): List = findAllAndRemove(query, T::class.java) diff --git a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveMongoOperationsExtensions.kt b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveMongoOperationsExtensions.kt index bc00f4707..a3f6911d6 100644 --- a/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveMongoOperationsExtensions.kt +++ b/spring-data-mongodb/src/main/kotlin/org/springframework/data/mongodb/core/ReactiveMongoOperationsExtensions.kt @@ -31,7 +31,7 @@ import kotlin.reflect.KClass * Extension for [ReactiveMongoOperations.indexOps] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ fun ReactiveMongoOperations.indexOps(entityClass: KClass): ReactiveIndexOperations = indexOps(entityClass.java) @@ -41,7 +41,7 @@ fun ReactiveMongoOperations.indexOps(entityClass: KClass): Reactive * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun ReactiveMongoOperations.indexOps(): ReactiveIndexOperations = indexOps(T::class.java) @@ -51,7 +51,7 @@ inline fun ReactiveMongoOperations.indexOps(): ReactiveIndexOp * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun ReactiveMongoOperations.execute(action: ReactiveCollectionCallback): Flux = execute(T::class.java, action) @@ -60,10 +60,9 @@ inline fun ReactiveMongoOperations.execute(action: ReactiveCol * Extension for [ReactiveMongoOperations.createCollection] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun ReactiveMongoOperations.createCollection(entityClass: KClass, - collectionOptions: CollectionOptions? = null): Mono> = +fun ReactiveMongoOperations.createCollection(entityClass: KClass, collectionOptions: CollectionOptions? = null): Mono> = if (collectionOptions != null) createCollection(entityClass.java, collectionOptions) else createCollection(entityClass.java) /** @@ -71,17 +70,16 @@ fun ReactiveMongoOperations.createCollection(entityClass: KClass, * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun ReactiveMongoOperations.createCollection( - collectionOptions: CollectionOptions? = null): Mono> = +inline fun ReactiveMongoOperations.createCollection(collectionOptions: CollectionOptions? = null): Mono> = if (collectionOptions != null) createCollection(T::class.java, collectionOptions) else createCollection(T::class.java) /** * Extension for [ReactiveMongoOperations.collectionExists] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ fun ReactiveMongoOperations.collectionExists(entityClass: KClass): Mono = collectionExists(entityClass.java) @@ -91,7 +89,7 @@ fun ReactiveMongoOperations.collectionExists(entityClass: KClass): * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun ReactiveMongoOperations.collectionExists(): Mono = collectionExists(T::class.java) @@ -100,7 +98,7 @@ inline fun ReactiveMongoOperations.collectionExists(): Mono ReactiveMongoOperations.dropCollection(entityClass: KClass): Mono = dropCollection(entityClass.java) @@ -110,7 +108,7 @@ fun ReactiveMongoOperations.dropCollection(entityClass: KClass): Mo * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun ReactiveMongoOperations.dropCollection(): Mono = dropCollection(T::class.java) @@ -121,7 +119,7 @@ inline fun ReactiveMongoOperations.dropCollection(): Mono ReactiveMongoOperations.findAll(collectionName: String? = null): Flux = if (collectionName != null) findAll(T::class.java, collectionName) else findAll(T::class.java) @@ -131,7 +129,7 @@ inline fun ReactiveMongoOperations.findAll(collectionName: Str * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun ReactiveMongoOperations.findOne(query: Query, collectionName: String? = null): Mono = if (collectionName != null) findOne(query, T::class.java, collectionName) else findOne(query, T::class.java) @@ -141,10 +139,9 @@ inline fun ReactiveMongoOperations.findOne(query: Query, colle * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun ReactiveMongoOperations.exists(query: Query, entityClass: KClass, - collectionName: String? = null): Mono = +fun ReactiveMongoOperations.exists(query: Query, entityClass: KClass, collectionName: String? = null): Mono = if (collectionName != null) exists(query, entityClass.java, collectionName) else exists(query, entityClass.java) /** @@ -152,11 +149,10 @@ fun ReactiveMongoOperations.exists(query: Query, entityClass: KClass ReactiveMongoOperations.exists(query: Query, - collectionName: String? = null): Mono = +inline fun ReactiveMongoOperations.exists(query: Query, collectionName: String? = null): Mono = if (collectionName != null) exists(query, T::class.java, collectionName) else exists(query, T::class.java) /** @@ -164,7 +160,7 @@ inline fun ReactiveMongoOperations.exists(query: Query, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun ReactiveMongoOperations.find(query: Query, collectionName: String? = null): Flux = if (collectionName != null) find(query, T::class.java, collectionName) else find(query, T::class.java) @@ -174,7 +170,7 @@ inline fun ReactiveMongoOperations.find(query: Query, collecti * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun ReactiveMongoOperations.findById(id: Any, collectionName: String? = null): Mono = if (collectionName != null) findById(id, T::class.java, collectionName) else findById(id, T::class.java) @@ -184,10 +180,9 @@ inline fun ReactiveMongoOperations.findById(id: Any, collectio * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun ReactiveMongoOperations.geoNear(near: NearQuery, - collectionName: String? = null): Flux> = +inline fun ReactiveMongoOperations.geoNear(near: NearQuery, collectionName: String? = null): Flux> = if (collectionName != null) geoNear(near, T::class.java, collectionName) else geoNear(near, T::class.java) /** @@ -195,10 +190,9 @@ inline fun ReactiveMongoOperations.geoNear(near: NearQuery, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun ReactiveMongoOperations.findAndModify(query: Query, - update: Update, options: FindAndModifyOptions, collectionName: String? = null): Mono = +inline fun ReactiveMongoOperations.findAndModify(query: Query, update: Update, options: FindAndModifyOptions, collectionName: String? = null): Mono = if (collectionName != null) findAndModify(query, update, options, T::class.java, collectionName) else findAndModify(query, update, options, T::class.java) /** @@ -206,10 +200,9 @@ inline fun ReactiveMongoOperations.findAndModify(query: Query, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -inline fun ReactiveMongoOperations.findAndRemove(query: Query, - collectionName: String? = null): Mono = +inline fun ReactiveMongoOperations.findAndRemove(query: Query, collectionName: String? = null): Mono = if (collectionName != null) findAndRemove(query, T::class.java, collectionName) else findAndRemove(query, T::class.java) @@ -218,10 +211,9 @@ inline fun ReactiveMongoOperations.findAndRemove(query: Query, * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun ReactiveMongoOperations.count(query: Query = Query(), entityClass: KClass, - collectionName: String? = null): Mono = +fun ReactiveMongoOperations.count(query: Query = Query(), entityClass: KClass, collectionName: String? = null): Mono = if (collectionName != null) count(query, entityClass.java, collectionName) else count(query, entityClass.java) @@ -230,11 +222,10 @@ fun ReactiveMongoOperations.count(query: Query = Query(), entityClass: * thanks to Kotlin reified type parameters * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun ReactiveMongoOperations.count(query: Query = Query(), - collectionName: String? = null): Mono = +inline fun ReactiveMongoOperations.count(query: Query = Query(), collectionName: String? = null): Mono = if (collectionName != null) count(query, T::class.java, collectionName) else count(query, T::class.java) @@ -242,29 +233,27 @@ inline fun ReactiveMongoOperations.count(query: Query = Query( * Extension for [ReactiveMongoOperations.insert] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ fun ReactiveMongoOperations.insert(batchToSave: Collection, entityClass: KClass): Flux = - insert(batchToSave, entityClass.java) + insert(batchToSave, entityClass.java) /** * Extension for [ReactiveMongoOperations.insertAll] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun ReactiveMongoOperations.insertAll(batchToSave: Mono>, - entityClass: KClass): Flux = +fun ReactiveMongoOperations.insertAll(batchToSave: Mono>, entityClass: KClass): Flux = insertAll(batchToSave, entityClass.java) /** * Extension for [ReactiveMongoOperations.upsert] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun ReactiveMongoOperations.upsert(query: Query, update: Update, entityClass: KClass, - collectionName: String? = null): Mono = +fun ReactiveMongoOperations.upsert(query: Query, update: Update, entityClass: KClass, collectionName: String? = null): Mono = if (collectionName != null) upsert(query, update, entityClass.java, collectionName) else upsert(query, update, entityClass.java) /** @@ -272,11 +261,10 @@ fun ReactiveMongoOperations.upsert(query: Query, update: Update, entit * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun ReactiveMongoOperations.upsert(query: Query, update: Update, - collectionName: String? = null): Mono = +inline fun ReactiveMongoOperations.upsert(query: Query, update: Update, collectionName: String? = null): Mono = if (collectionName != null) upsert(query, update, T::class.java, collectionName) else upsert(query, update, T::class.java) @@ -284,10 +272,9 @@ inline fun ReactiveMongoOperations.upsert(query: Query, update * Extension for [ReactiveMongoOperations.updateFirst] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun ReactiveMongoOperations.updateFirst(query: Query, update: Update, - entityClass: KClass, collectionName: String? = null): Mono = +fun ReactiveMongoOperations.updateFirst(query: Query, update: Update, entityClass: KClass, collectionName: String? = null): Mono = if (collectionName != null) updateFirst(query, update, entityClass.java, collectionName) else updateFirst(query, update, entityClass.java) @@ -296,11 +283,10 @@ fun ReactiveMongoOperations.updateFirst(query: Query, update: Update, * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun ReactiveMongoOperations.updateFirst(query: Query, update: Update, - collectionName: String? = null): Mono = +inline fun ReactiveMongoOperations.updateFirst(query: Query, update: Update, collectionName: String? = null): Mono = if (collectionName != null) updateFirst(query, update, T::class.java, collectionName) else updateFirst(query, update, T::class.java) @@ -308,10 +294,9 @@ inline fun ReactiveMongoOperations.updateFirst(query: Query, u * Extension for [ReactiveMongoOperations.updateMulti] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun ReactiveMongoOperations.updateMulti(query: Query, update: Update, - entityClass: KClass, collectionName: String? = null): Mono = +fun ReactiveMongoOperations.updateMulti(query: Query, update: Update, entityClass: KClass, collectionName: String? = null): Mono = if (collectionName != null) updateMulti(query, update, entityClass.java, collectionName) else updateMulti(query, update, entityClass.java) @@ -320,11 +305,10 @@ fun ReactiveMongoOperations.updateMulti(query: Query, update: Update, * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") -inline fun ReactiveMongoOperations.updateMulti(query: Query, update: Update, - collectionName: String? = null): Mono = +inline fun ReactiveMongoOperations.updateMulti(query: Query, update: Update, collectionName: String? = null): Mono = if (collectionName != null) updateMulti(query, update, T::class.java, collectionName) else updateMulti(query, update, T::class.java) @@ -332,10 +316,9 @@ inline fun ReactiveMongoOperations.updateMulti(query: Query, u * Extension for [ReactiveMongoOperations.remove] providing a [KClass] based variant. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ -fun ReactiveMongoOperations.remove(query: Query, entityClass: KClass, - collectionName: String? = null): Mono = +fun ReactiveMongoOperations.remove(query: Query, entityClass: KClass, collectionName: String? = null): Mono = if (collectionName != null) remove(query, entityClass.java, collectionName) else remove(query, entityClass.java) @@ -344,11 +327,10 @@ fun ReactiveMongoOperations.remove(query: Query, entityClass: KClass ReactiveMongoOperations.remove(query: Query, - collectionName: String? = null): Mono = +inline fun ReactiveMongoOperations.remove(query: Query, collectionName: String? = null): Mono = if (collectionName != null) remove(query, T::class.java, collectionName) else remove(query, T::class.java) @@ -357,7 +339,7 @@ inline fun ReactiveMongoOperations.remove(query: Query, * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ @Suppress("EXTENSION_SHADOWED_BY_MEMBER") inline fun ReactiveMongoOperations.findAllAndRemove(query: Query): Flux = @@ -368,7 +350,7 @@ inline fun ReactiveMongoOperations.findAllAndRemove(query: Que * thanks to Kotlin reified type parameters. * * @author Sebastien Deleuze - * @since 5.0 + * @since 2.0 */ inline fun ReactiveMongoOperations.tail(query: Query, collectionName: String? = null): Flux = if (collectionName != null) tail(query, T::class.java, collectionName) else tail(query, T::class.java) diff --git a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/MongoOperationsExtensionsTests.kt b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/MongoOperationsExtensionsTests.kt index 97b895060..ec3ee3ac4 100644 --- a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/MongoOperationsExtensionsTests.kt +++ b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/MongoOperationsExtensionsTests.kt @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 the original author or authors. + * Copyright 2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,521 +42,639 @@ class MongoOperationsExtensionsTests { @Mock(answer = Answers.RETURNS_MOCKS) lateinit var operations: MongoOperations - @Test + @Test // DATAMONGO-1689 fun `getCollectionName(KClass) extension should call its Java counterpart`() { + operations.getCollectionName(First::class) verify(operations, times(1)).getCollectionName(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `getCollectionName() with reified type parameter extension should call its Java counterpart`() { + operations.getCollectionName() verify(operations, times(1)).getCollectionName(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `execute(CollectionCallback) with reified type parameter extension should call its Java counterpart`() { + val collectionCallback = mock>() operations.execute(collectionCallback) verify(operations, times(1)).execute(First::class.java, collectionCallback) } - @Test + @Test // DATAMONGO-1689 fun `stream(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() operations.stream(query) verify(operations, times(1)).stream(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `stream(Query, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" operations.stream(query, collectionName) verify(operations, times(1)).stream(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `createCollection(KClass) extension should call its Java counterpart`() { + operations.createCollection(First::class) verify(operations, times(1)).createCollection(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `createCollection(KClass, CollectionOptions) extension should call its Java counterpart`() { + val collectionOptions = mock() operations.createCollection(First::class, collectionOptions) - verify(operations, times(1)).createCollection(First::class.java,collectionOptions) + verify(operations, times(1)).createCollection(First::class.java, collectionOptions) } - @Test + @Test // DATAMONGO-1689 fun `createCollection() with reified type parameter extension should call its Java counterpart`() { + operations.createCollection() verify(operations, times(1)).createCollection(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `createCollection(CollectionOptions) with reified type parameter extension should call its Java counterpart`() { + val collectionOptions = mock() operations.createCollection(collectionOptions) verify(operations, times(1)).createCollection(First::class.java, collectionOptions) } - @Test + @Test // DATAMONGO-1689 fun `collectionExists(KClass) extension should call its Java counterpart`() { + operations.collectionExists(First::class) verify(operations, times(1)).collectionExists(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `collectionExists() with reified type parameter extension should call its Java counterpart`() { + operations.collectionExists() verify(operations, times(1)).collectionExists(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `dropCollection(KClass) extension should call its Java counterpart`() { + operations.dropCollection(First::class) verify(operations, times(1)).dropCollection(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `dropCollection() with reified type parameter extension should call its Java counterpart`() { + operations.dropCollection() verify(operations, times(1)).dropCollection(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `indexOps(KClass) extension should call its Java counterpart`() { + operations.indexOps(First::class) verify(operations, times(1)).indexOps(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `indexOps() with reified type parameter extension should call its Java counterpart`() { + operations.indexOps() verify(operations, times(1)).indexOps(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `bulkOps(BulkMode, KClass) extension should call its Java counterpart`() { + val bulkMode = BulkMode.ORDERED + operations.bulkOps(bulkMode, First::class) verify(operations, times(1)).bulkOps(bulkMode, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `bulkOps(BulkMode, KClass, String) extension should call its Java counterpart`() { + val bulkMode = BulkMode.ORDERED val collectionName = "foo" + operations.bulkOps(bulkMode, First::class, collectionName) verify(operations, times(1)).bulkOps(bulkMode, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `bulkOps(BulkMode) with reified type parameter extension should call its Java counterpart`() { + val bulkMode = BulkMode.ORDERED + operations.bulkOps(bulkMode) verify(operations, times(1)).bulkOps(bulkMode, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `bulkOps(BulkMode, String) with reified type parameter extension should call its Java counterpart`() { + val bulkMode = BulkMode.ORDERED val collectionName = "foo" + operations.bulkOps(bulkMode, collectionName) verify(operations, times(1)).bulkOps(bulkMode, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findAll() with reified type parameter extension should call its Java counterpart`() { + operations.findAll() verify(operations, times(1)).findAll(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findAll(String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" + operations.findAll(collectionName) verify(operations, times(1)).findAll(First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `group(String, GroupBy) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val groupBy = mock() + operations.group(collectionName, groupBy) verify(operations, times(1)).group(collectionName, groupBy, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `group(Criteria, String, GroupBy) with reified type parameter extension should call its Java counterpart`() { + val criteria = mock() val collectionName = "foo" val groupBy = mock() + operations.group(criteria, collectionName, groupBy) verify(operations, times(1)).group(criteria, collectionName, groupBy, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `aggregate(Aggregation, KClass) with reified type parameter extension should call its Java counterpart`() { + val aggregation = mock() + operations.aggregate(aggregation, Second::class) verify(operations, times(1)).aggregate(aggregation, Second::class.java, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `aggregate(Aggregation, String) with reified type parameter extension should call its Java counterpart`() { + val aggregation = mock() val collectionName = "foo" + operations.aggregate(aggregation, collectionName) verify(operations, times(1)).aggregate(aggregation, collectionName, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `aggregateStream(Aggregation, KClass) with reified type parameter extension should call its Java counterpart`() { + val aggregation = mock() + operations.aggregateStream(aggregation, Second::class) verify(operations, times(1)).aggregateStream(aggregation, Second::class.java, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `aggregateStream(Aggregation, String) with reified type parameter extension should call its Java counterpart`() { + val aggregation = mock() val collectionName = "foo" + operations.aggregateStream(aggregation, collectionName) verify(operations, times(1)).aggregateStream(aggregation, collectionName, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `mapReduce(String, String, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val mapFunction = "bar" val reduceFunction = "baz" + operations.mapReduce(collectionName, mapFunction, reduceFunction) verify(operations, times(1)).mapReduce(collectionName, mapFunction, reduceFunction, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `mapReduce(String, String, String, MapReduceOptions) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val mapFunction = "bar" val reduceFunction = "baz" val options = mock() + operations.mapReduce(collectionName, mapFunction, reduceFunction, options) verify(operations, times(1)).mapReduce(collectionName, mapFunction, reduceFunction, options, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `mapReduce(Query, String, String, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" val mapFunction = "bar" val reduceFunction = "baz" + operations.mapReduce(query, collectionName, mapFunction, reduceFunction) verify(operations, times(1)).mapReduce(query, collectionName, mapFunction, reduceFunction, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `mapReduce(Query, String, String, String, MapReduceOptions) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" val mapFunction = "bar" val reduceFunction = "baz" val options = mock() + operations.mapReduce(query, collectionName, mapFunction, reduceFunction, options) verify(operations, times(1)).mapReduce(query, collectionName, mapFunction, reduceFunction, options, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `geoNear(Query) with reified type parameter extension should call its Java counterpart`() { + val query = NearQuery.near(0.0, 0.0) + operations.geoNear(query) verify(operations, times(1)).geoNear(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `geoNear(Query, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val query = NearQuery.near(0.0, 0.0) + operations.geoNear(query, collectionName) verify(operations, times(1)).geoNear(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findOne(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.findOne(query) verify(operations, times(1)).findOne(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findOne(Query, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val query = mock() + operations.findOne(query, collectionName) verify(operations, times(1)).findOne(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `exists(Query, KClass) extension should call its Java counterpart`() { + val query = mock() + operations.exists(query, First::class) verify(operations, times(1)).exists(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `exists(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.exists(query) verify(operations, times(1)).exists(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `find(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.find(query) verify(operations, times(1)).find(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `find(Query, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val query = mock() + operations.find(query, collectionName) verify(operations, times(1)).find(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findById(Any) with reified type parameter extension should call its Java counterpart`() { + val id = 1L + operations.findById(id) verify(operations, times(1)).findById(id, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findById(Any, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val id = 1L + operations.findById(id, collectionName) verify(operations, times(1)).findById(id, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findAndModify(Query, Update, FindAndModifyOptions) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() val options = mock() + operations.findAndModify(query, update, options) verify(operations, times(1)).findAndModify(query, update, options, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findAndModify(Query, Update, FindAndModifyOptions, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val query = mock() val update = mock() val options = mock() + operations.findAndModify(query, update, options, collectionName) verify(operations, times(1)).findAndModify(query, update, options, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findAndRemove(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.findAndRemove(query) verify(operations, times(1)).findAndRemove(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findAndRemove(Query, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.findAndRemove(query, collectionName) verify(operations, times(1)).findAndRemove(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `count() with reified type parameter extension should call its Java counterpart`() { + operations.count() verify(operations, times(1)).count(any(), eq(First::class.java)) } - @Test + @Test // DATAMONGO-1689 fun `count(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.count(query) verify(operations, times(1)).count(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `count(Query, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.count(query, collectionName) verify(operations, times(1)).count(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `count(Query, KClass) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.count(query, First::class) verify(operations, times(1)).count(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `count(Query, KClass, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.count(query, First::class, collectionName) verify(operations, times(1)).count(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `insert(Collection, KClass) extension should call its Java counterpart`() { + val collection = listOf(First(), First()) + operations.insert(collection, First::class) verify(operations, times(1)).insert(collection, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `upsert(Query, Update, KClass) extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.upsert(query, update, First::class) verify(operations, times(1)).upsert(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `upsert(Query, Update, KClass, String) extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.upsert(query, update, First::class, collectionName) verify(operations, times(1)).upsert(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `upsert(Query, Update) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.upsert(query, update) verify(operations, times(1)).upsert(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `upsert(Query, Update, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.upsert(query, update, collectionName) verify(operations, times(1)).upsert(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `updateFirst(Query, Update, KClass) extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.updateFirst(query, update, First::class) verify(operations, times(1)).updateFirst(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `updateFirst(Query, Update, KClass, String) extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.updateFirst(query, update, First::class, collectionName) verify(operations, times(1)).updateFirst(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `updateFirst(Query, Update) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.updateFirst(query, update) verify(operations, times(1)).updateFirst(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `updateFirst(Query, Update, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.updateFirst(query, update, collectionName) verify(operations, times(1)).updateFirst(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `updateMulti(Query, Update, KClass) extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.updateMulti(query, update, First::class) verify(operations, times(1)).updateMulti(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `updateMulti(Query, Update, KClass, String) extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.updateMulti(query, update, First::class, collectionName) verify(operations, times(1)).updateMulti(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `updateMulti(Query, Update) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.updateMulti(query, update) verify(operations, times(1)).updateMulti(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `updateMulti(Query, Update, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.updateMulti(query, update, collectionName) verify(operations, times(1)).updateMulti(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `remove(Query, KClass) extension should call its Java counterpart`() { + val query = mock() + operations.remove(query, First::class) verify(operations, times(1)).remove(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `remove(Query, KClass, String) extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.remove(query, First::class, collectionName) verify(operations, times(1)).remove(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `remove(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.remove(query) verify(operations, times(1)).remove(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `remove(Query, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.remove(query, collectionName) verify(operations, times(1)).remove(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findAllAndRemove(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.findAllAndRemove(query) verify(operations, times(1)).findAllAndRemove(query, First::class.java) } - } diff --git a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveMongoOperationsExtensionsTests.kt b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveMongoOperationsExtensionsTests.kt index b45c563dc..e41af8fc0 100644 --- a/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveMongoOperationsExtensionsTests.kt +++ b/spring-data-mongodb/src/test/kotlin/org/springframework/data/mongodb/core/ReactiveMongoOperationsExtensionsTests.kt @@ -1,5 +1,5 @@ /* - * Copyright 2016-2017 the original author or authors. + * Copyright 2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,398 +37,493 @@ class ReactiveMongoOperationsExtensionsTests { @Mock(answer = Answers.RETURNS_MOCKS) lateinit var operations: ReactiveMongoOperations - @Test + @Test // DATAMONGO-1689 fun `indexOps(KClass) extension should call its Java counterpart`() { + operations.indexOps(First::class) verify(operations, times(1)).indexOps(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `indexOps() with reified type parameter extension should call its Java counterpart`() { + operations.indexOps() verify(operations, times(1)).indexOps(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `execute(ReactiveCollectionCallback) with reified type parameter extension should call its Java counterpart`() { + val collectionCallback = mock>() + operations.execute(collectionCallback) verify(operations, times(1)).execute(First::class.java, collectionCallback) } - @Test + @Test // DATAMONGO-1689 fun `createCollection(KClass) extension should call its Java counterpart`() { + operations.createCollection(First::class) verify(operations, times(1)).createCollection(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `createCollection(KClass, CollectionOptions) extension should call its Java counterpart`() { + val collectionOptions = mock() + operations.createCollection(First::class, collectionOptions) verify(operations, times(1)).createCollection(First::class.java, collectionOptions) } - @Test + @Test // DATAMONGO-1689 fun `createCollection() with reified type parameter extension should call its Java counterpart`() { + operations.createCollection() verify(operations, times(1)).createCollection(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `createCollection(CollectionOptions) with reified type parameter extension should call its Java counterpart`() { + val collectionOptions = mock() + operations.createCollection(collectionOptions) verify(operations, times(1)).createCollection(First::class.java, collectionOptions) } - @Test + @Test // DATAMONGO-1689 fun `collectionExists(KClass) extension should call its Java counterpart`() { + operations.collectionExists(First::class) verify(operations, times(1)).collectionExists(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `collectionExists() with reified type parameter extension should call its Java counterpart`() { + operations.collectionExists() verify(operations, times(1)).collectionExists(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `dropCollection(KClass) extension should call its Java counterpart`() { + operations.dropCollection(First::class) verify(operations, times(1)).dropCollection(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `dropCollection() with reified type parameter extension should call its Java counterpart`() { + operations.dropCollection() verify(operations, times(1)).dropCollection(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findAll() with reified type parameter extension should call its Java counterpart`() { + operations.findAll() verify(operations, times(1)).findAll(First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findAll(String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" + operations.findAll(collectionName) verify(operations, times(1)).findAll(First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findOne(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.findOne(query) verify(operations, times(1)).findOne(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findOne(Query, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val query = mock() + operations.findOne(query, collectionName) verify(operations, times(1)).findOne(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `exists(Query, KClass) extension should call its Java counterpart`() { + val query = mock() + operations.exists(query, First::class) verify(operations, times(1)).exists(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `exists(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.exists(query) verify(operations, times(1)).exists(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `find(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.find(query) verify(operations, times(1)).find(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `find(Query, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val query = mock() + operations.find(query, collectionName) verify(operations, times(1)).find(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findById(Any) with reified type parameter extension should call its Java counterpart`() { + val id = 1L + operations.findById(id) verify(operations, times(1)).findById(id, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findById(Any, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val id = 1L + operations.findById(id, collectionName) verify(operations, times(1)).findById(id, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `geoNear(Query) with reified type parameter extension should call its Java counterpart`() { + val query = NearQuery.near(0.0, 0.0) + operations.geoNear(query) verify(operations, times(1)).geoNear(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `geoNear(Query, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val query = NearQuery.near(0.0, 0.0) + operations.geoNear(query, collectionName) verify(operations, times(1)).geoNear(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findAndModify(Query, Update, FindAndModifyOptions) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() val options = mock() + operations.findAndModify(query, update, options) verify(operations, times(1)).findAndModify(query, update, options, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findAndModify(Query, Update, FindAndModifyOptions, String) with reified type parameter extension should call its Java counterpart`() { + val collectionName = "foo" val query = mock() val update = mock() val options = mock() + operations.findAndModify(query, update, options, collectionName) verify(operations, times(1)).findAndModify(query, update, options, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findAndRemove(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.findAndRemove(query) verify(operations, times(1)).findAndRemove(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `findAndRemove(Query, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.findAndRemove(query, collectionName) verify(operations, times(1)).findAndRemove(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `count() with reified type parameter extension should call its Java counterpart`() { + operations.count() verify(operations, times(1)).count(any(), eq(First::class.java)) } - @Test + @Test // DATAMONGO-1689 fun `count(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.count(query) verify(operations, times(1)).count(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `count(Query, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.count(query, collectionName) verify(operations, times(1)).count(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `count(Query, KClass) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.count(query, First::class) verify(operations, times(1)).count(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `count(Query, KClass, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.count(query, First::class, collectionName) verify(operations, times(1)).count(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `insert(Collection, KClass) extension should call its Java counterpart`() { + val collection = listOf(First(), First()) + operations.insert(collection, First::class) verify(operations, times(1)).insert(collection, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `insertAll(Mono, KClass) extension should call its Java counterpart`() { + val collection = Mono.just(listOf(First(), First())) + operations.insertAll(collection, First::class) verify(operations, times(1)).insertAll(collection, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `upsert(Query, Update, KClass) extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.upsert(query, update, First::class) verify(operations, times(1)).upsert(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `upsert(Query, Update, KClass, String) extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.upsert(query, update, First::class, collectionName) verify(operations, times(1)).upsert(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `upsert(Query, Update) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.upsert(query, update) verify(operations, times(1)).upsert(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `upsert(Query, Update, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.upsert(query, update, collectionName) verify(operations, times(1)).upsert(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `updateFirst(Query, Update, KClass) extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.updateFirst(query, update, First::class) verify(operations, times(1)).updateFirst(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `updateFirst(Query, Update, KClass, String) extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.updateFirst(query, update, First::class, collectionName) verify(operations, times(1)).updateFirst(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `updateFirst(Query, Update) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.updateFirst(query, update) verify(operations, times(1)).updateFirst(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `updateFirst(Query, Update, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.updateFirst(query, update, collectionName) verify(operations, times(1)).updateFirst(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `updateMulti(Query, Update, KClass) extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.updateMulti(query, update, First::class) verify(operations, times(1)).updateMulti(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `updateMulti(Query, Update, KClass, String) extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.updateMulti(query, update, First::class, collectionName) verify(operations, times(1)).updateMulti(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `updateMulti(Query, Update) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() + operations.updateMulti(query, update) verify(operations, times(1)).updateMulti(query, update, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `updateMulti(Query, Update, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val update = mock() val collectionName = "foo" + operations.updateMulti(query, update, collectionName) verify(operations, times(1)).updateMulti(query, update, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `remove(Query, KClass) extension should call its Java counterpart`() { + val query = mock() + operations.remove(query, First::class) verify(operations, times(1)).remove(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `remove(Query, KClass, String) extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.remove(query, First::class, collectionName) verify(operations, times(1)).remove(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `remove(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.remove(query) verify(operations, times(1)).remove(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `remove(Query, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.remove(query, collectionName) verify(operations, times(1)).remove(query, First::class.java, collectionName) } - @Test + @Test // DATAMONGO-1689 fun `findAllAndRemove(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.findAllAndRemove(query) verify(operations, times(1)).findAllAndRemove(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `tail(Query) with reified type parameter extension should call its Java counterpart`() { + val query = mock() + operations.tail(query) verify(operations, times(1)).tail(query, First::class.java) } - @Test + @Test // DATAMONGO-1689 fun `tail(Query, String) with reified type parameter extension should call its Java counterpart`() { + val query = mock() val collectionName = "foo" + operations.tail(query, collectionName) verify(operations, times(1)).tail(query, First::class.java, collectionName) } - }