From 9d4d47f503791cc5c7a30cffaaea31f5f8caf870 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 14 Jul 2017 09:49:13 +0200 Subject: [PATCH] DATAMONGO-1721 - Move ReactiveIndexOperations to core.index package. Align with synchronous IndexOperations. Related pull request: #470. --- .../core/DefaultReactiveIndexOperations.java | 9 +++++---- .../mongodb/core/ReactiveMongoOperations.java | 19 ++++++++++--------- .../mongodb/core/ReactiveMongoTemplate.java | 6 +++++- .../{ => index}/IndexOperationsAdapter.java | 7 ++----- .../{ => index}/ReactiveIndexOperations.java | 5 +---- .../ReactiveMongoRepositoryFactoryBean.java | 18 +++++++++--------- .../core/ReactiveMongoOperationsExtensions.kt | 1 + .../core/ReactiveMongoTemplateTests.java | 1 + 8 files changed, 34 insertions(+), 32 deletions(-) rename spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/{ => index}/IndexOperationsAdapter.java (85%) rename spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/{ => index}/ReactiveIndexOperations.java (89%) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultReactiveIndexOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultReactiveIndexOperations.java index 431dd73c5..4a545b3bb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultReactiveIndexOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/DefaultReactiveIndexOperations.java @@ -15,6 +15,7 @@ */ package org.springframework.data.mongodb.core; +import org.springframework.data.mongodb.core.index.ReactiveIndexOperations; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -85,7 +86,7 @@ public class DefaultReactiveIndexOperations implements ReactiveIndexOperations { } /* (non-Javadoc) - * @see org.springframework.data.mongodb.core.ReactiveIndexOperations#ensureIndex(org.springframework.data.mongodb.core.index.IndexDefinition) + * @see org.springframework.data.mongodb.core.index.ReactiveIndexOperations#ensureIndex(org.springframework.data.mongodb.core.index.IndexDefinition) */ public Mono ensureIndex(final IndexDefinition indexDefinition) { @@ -127,21 +128,21 @@ public class DefaultReactiveIndexOperations implements ReactiveIndexOperations { } /* (non-Javadoc) - * @see org.springframework.data.mongodb.core.ReactiveIndexOperations#dropIndex(java.lang.String) + * @see org.springframework.data.mongodb.core.index.ReactiveIndexOperations#dropIndex(java.lang.String) */ public Mono dropIndex(final String name) { return mongoOperations.execute(collectionName, collection -> collection.dropIndex(name)).then(); } /* (non-Javadoc) - * @see org.springframework.data.mongodb.core.ReactiveIndexOperations#dropAllIndexes() + * @see org.springframework.data.mongodb.core.index.ReactiveIndexOperations#dropAllIndexes() */ public Mono dropAllIndexes() { return dropIndex("*"); } /* (non-Javadoc) - * @see org.springframework.data.mongodb.core.ReactiveIndexOperations#getIndexInfo() + * @see org.springframework.data.mongodb.core.index.ReactiveIndexOperations#getIndexInfo() */ public Flux getIndexInfo() { diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoOperations.java index 310c8de25..218c54563 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoOperations.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 the original author or authors. + * Copyright 2016-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. @@ -26,6 +26,7 @@ import org.reactivestreams.Subscription; import org.springframework.data.geo.GeoResult; import org.springframework.data.mongodb.core.convert.MappingMongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter; +import org.springframework.data.mongodb.core.index.ReactiveIndexOperations; import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.NearQuery; @@ -228,8 +229,8 @@ public interface ReactiveMongoOperations { *

* If your collection does not contain a homogeneous collection of types, this operation will not be an efficient way * to map objects since the test for class type is done in the client and not on the server. - * @param entityClass the parametrized type of the returned {@link Flux}. * + * @param entityClass the parametrized type of the returned {@link Flux}. * @return the converted collection */ Flux findAll(Class entityClass); @@ -370,10 +371,10 @@ public interface ReactiveMongoOperations { Mono findById(Object id, Class entityClass, String collectionName); /** - * Returns {@link Flux} of {@link GeoResult} for all entities matching the given {@link NearQuery}. Will consider entity mapping - * information to determine the collection the query is ran against. Note, that MongoDB limits the number of results - * by default. Make sure to add an explicit limit to the {@link NearQuery} if you expect a particular number of - * results. + * Returns {@link Flux} of {@link GeoResult} for all entities matching the given {@link NearQuery}. Will consider + * entity mapping information to determine the collection the query is ran against. Note, that MongoDB limits the + * number of results by default. Make sure to add an explicit limit to the {@link NearQuery} if you expect a + * particular number of results. * * @param near must not be {@literal null}. * @param entityClass must not be {@literal null}. @@ -382,9 +383,9 @@ public interface ReactiveMongoOperations { Flux> geoNear(NearQuery near, Class entityClass); /** - * Returns {@link Flux} of {@link GeoResult} for all entities matching the given {@link NearQuery}. Note, that MongoDB limits the - * number of results by default. Make sure to add an explicit limit to the {@link NearQuery} if you expect a - * particular number of results. + * Returns {@link Flux} of {@link GeoResult} for all entities matching the given {@link NearQuery}. Note, that MongoDB + * limits the number of results by default. Make sure to add an explicit limit to the {@link NearQuery} if you expect + * a particular number of results. * * @param near must not be {@literal null}. * @param entityClass must not be {@literal null}. 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 8cdcb90b2..5cf0592c6 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 @@ -24,6 +24,8 @@ import reactor.util.function.Tuple2; import java.util.*; import java.util.Map.Entry; +import java.util.Optional; +import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -56,7 +58,6 @@ import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.ConvertingPropertyAccessor; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.ReactiveMongoDatabaseFactory; -import org.springframework.data.mongodb.core.query.Collation; import org.springframework.data.mongodb.core.convert.DbRefProxyHandler; import org.springframework.data.mongodb.core.convert.DbRefResolver; import org.springframework.data.mongodb.core.convert.DbRefResolverCallback; @@ -65,8 +66,10 @@ import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoWriter; import org.springframework.data.mongodb.core.convert.QueryMapper; import org.springframework.data.mongodb.core.convert.UpdateMapper; +import org.springframework.data.mongodb.core.index.IndexOperationsAdapter; import org.springframework.data.mongodb.core.index.MongoMappingEventPublisher; import org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator; +import org.springframework.data.mongodb.core.index.ReactiveIndexOperations; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity; import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty; @@ -79,6 +82,7 @@ import org.springframework.data.mongodb.core.mapping.event.BeforeConvertEvent; import org.springframework.data.mongodb.core.mapping.event.BeforeDeleteEvent; import org.springframework.data.mongodb.core.mapping.event.BeforeSaveEvent; import org.springframework.data.mongodb.core.mapping.event.MongoMappingEvent; +import org.springframework.data.mongodb.core.query.Collation; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.NearQuery; import org.springframework.data.mongodb.core.query.Query; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/IndexOperationsAdapter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexOperationsAdapter.java similarity index 85% rename from spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/IndexOperationsAdapter.java rename to spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexOperationsAdapter.java index 5811da826..d45e21905 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/IndexOperationsAdapter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/IndexOperationsAdapter.java @@ -1,5 +1,5 @@ /* - * Copyright 2016. the original author or authors. + * Copyright 2016-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. @@ -14,13 +14,10 @@ * limitations under the License. */ -package org.springframework.data.mongodb.core; +package org.springframework.data.mongodb.core.index; import java.util.List; -import org.springframework.data.mongodb.core.index.IndexDefinition; -import org.springframework.data.mongodb.core.index.IndexInfo; -import org.springframework.data.mongodb.core.index.IndexOperations; import org.springframework.util.Assert; /** diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveIndexOperations.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/ReactiveIndexOperations.java similarity index 89% rename from spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveIndexOperations.java rename to spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/ReactiveIndexOperations.java index c375c0797..46c8c0fbe 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveIndexOperations.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/ReactiveIndexOperations.java @@ -13,10 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.mongodb.core; - -import org.springframework.data.mongodb.core.index.IndexDefinition; -import org.springframework.data.mongodb.core.index.IndexInfo; +package org.springframework.data.mongodb.core.index; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java index 6f70d0b15..9560f2c69 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactoryBean.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 the original author or authors. + * Copyright 2016-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. @@ -19,8 +19,8 @@ package org.springframework.data.mongodb.repository.support; import java.io.Serializable; import org.springframework.data.mapping.context.MappingContext; -import org.springframework.data.mongodb.core.IndexOperationsAdapter; import org.springframework.data.mongodb.core.ReactiveMongoOperations; +import org.springframework.data.mongodb.core.index.IndexOperationsAdapter; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport; import org.springframework.data.repository.core.support.RepositoryFactorySupport; @@ -29,7 +29,7 @@ import org.springframework.util.Assert; /** * {@link org.springframework.beans.factory.FactoryBean} to create * {@link org.springframework.data.mongodb.repository.ReactiveMongoRepository} instances. - * + * * @author Mark Paluch * @author Christoph Strobl * @since 2.0 @@ -54,7 +54,7 @@ public class ReactiveMongoRepositoryFactoryBean, S, /** * Configures the {@link ReactiveMongoOperations} to be used. - * + * * @param operations the operations to set */ public void setReactiveMongoOperations(ReactiveMongoOperations operations) { @@ -63,14 +63,14 @@ public class ReactiveMongoRepositoryFactoryBean, S, /** * Configures whether to automatically create indexes for the properties referenced in a query method. - * + * * @param createIndexesForQueryMethods the createIndexesForQueryMethods to set */ public void setCreateIndexesForQueryMethods(boolean createIndexesForQueryMethods) { this.createIndexesForQueryMethods = createIndexesForQueryMethods; } - /* + /* * (non-Javadoc) * @see org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport#setMappingContext(org.springframework.data.mapping.context.MappingContext) */ @@ -83,7 +83,7 @@ public class ReactiveMongoRepositoryFactoryBean, S, /* * (non-Javadoc) - * + * * @see * org.springframework.data.repository.support.RepositoryFactoryBeanSupport * #createRepositoryFactory() @@ -103,7 +103,7 @@ public class ReactiveMongoRepositoryFactoryBean, S, /** * Creates and initializes a {@link RepositoryFactorySupport} instance. - * + * * @param operations * @return */ @@ -113,7 +113,7 @@ public class ReactiveMongoRepositoryFactoryBean, S, /* * (non-Javadoc) - * + * * @see * org.springframework.data.repository.support.RepositoryFactoryBeanSupport * #afterPropertiesSet() 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 5e92c8db4..366fdafc6 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 @@ -20,6 +20,7 @@ import com.mongodb.client.result.UpdateResult import com.mongodb.reactivestreams.client.MongoCollection import org.bson.Document import org.springframework.data.geo.GeoResult +import org.springframework.data.mongodb.core.index.ReactiveIndexOperations import org.springframework.data.mongodb.core.query.NearQuery import org.springframework.data.mongodb.core.query.Query import org.springframework.data.mongodb.core.query.Update diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java index 926471745..0998c6936 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/ReactiveMongoTemplateTests.java @@ -57,6 +57,7 @@ import org.springframework.data.mongodb.core.MongoTemplateTests.VersionedPerson; import org.springframework.data.mongodb.core.index.GeoSpatialIndexType; import org.springframework.data.mongodb.core.index.GeospatialIndex; import org.springframework.data.mongodb.core.index.Index; +import org.springframework.data.mongodb.core.index.IndexOperationsAdapter; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.NearQuery; import org.springframework.data.mongodb.core.query.Query;