Browse Source

DATAMONGO-1444 - Polishing.

Removed unused references to ConversionService from repository query implementations.
pull/411/merge
Oliver Gierke 9 years ago
parent
commit
8060ebae6a
  1. 12
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractReactiveMongoQuery.java
  2. 7
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactivePartTreeMongoQuery.java
  3. 17
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveStringBasedMongoQuery.java
  4. 40
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactory.java
  5. 10
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/ReactivePerformanceTests.java
  6. 16
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/ReactiveStringBasedMongoQueryUnitTests.java

12
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AbstractReactiveMongoQuery.java

@ -15,8 +15,10 @@ @@ -15,8 +15,10 @@
*/
package org.springframework.data.mongodb.repository.query;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import org.reactivestreams.Publisher;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.EntityInstantiators;
import org.springframework.data.mongodb.core.MongoOperations;
@ -32,12 +34,8 @@ import org.springframework.data.mongodb.repository.query.ReactiveMongoQueryExecu @@ -32,12 +34,8 @@ import org.springframework.data.mongodb.repository.query.ReactiveMongoQueryExecu
import org.springframework.data.repository.query.ParameterAccessor;
import org.springframework.data.repository.query.RepositoryQuery;
import org.springframework.data.repository.query.ResultProcessor;
import org.springframework.data.repository.util.ReactiveWrapperConverters;
import org.springframework.util.Assert;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
/**
* Base class for reactive {@link RepositoryQuery} implementations for MongoDB.
*
@ -57,10 +55,8 @@ public abstract class AbstractReactiveMongoQuery implements RepositoryQuery { @@ -57,10 +55,8 @@ public abstract class AbstractReactiveMongoQuery implements RepositoryQuery {
*
* @param method must not be {@literal null}.
* @param operations must not be {@literal null}.
* @param conversionService must not be {@literal null}.
*/
public AbstractReactiveMongoQuery(ReactiveMongoQueryMethod method, ReactiveMongoOperations operations,
ConversionService conversionService) {
public AbstractReactiveMongoQuery(ReactiveMongoQueryMethod method, ReactiveMongoOperations operations) {
Assert.notNull(method, "MongoQueryMethod must not be null!");
Assert.notNull(operations, "ReactiveMongoOperations must not be null!");

7
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactivePartTreeMongoQuery.java

@ -16,13 +16,11 @@ @@ -16,13 +16,11 @@
package org.springframework.data.mongodb.repository.query;
import org.bson.Document;
import org.springframework.core.convert.ConversionService;
import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty;
import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.core.query.Field;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.TextCriteria;
import org.springframework.data.repository.query.QueryMethod;
@ -53,11 +51,10 @@ public class ReactivePartTreeMongoQuery extends AbstractReactiveMongoQuery { @@ -53,11 +51,10 @@ public class ReactivePartTreeMongoQuery extends AbstractReactiveMongoQuery {
*
* @param method must not be {@literal null}.
* @param mongoOperations must not be {@literal null}.
* @param conversionService must not be {@literal null}.
*/
public ReactivePartTreeMongoQuery(ReactiveMongoQueryMethod method, ReactiveMongoOperations mongoOperations, ConversionService conversionService) {
public ReactivePartTreeMongoQuery(ReactiveMongoQueryMethod method, ReactiveMongoOperations mongoOperations) {
super(method, mongoOperations, conversionService);
super(method, mongoOperations);
this.processor = method.getResultProcessor();
this.tree = new PartTree(method.getName(), processor.getReturnedType().getDomainType());

17
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ReactiveStringBasedMongoQuery.java

@ -20,7 +20,6 @@ import java.util.List; @@ -20,7 +20,6 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.convert.ConversionService;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.query.BasicQuery;
@ -54,17 +53,17 @@ public class ReactiveStringBasedMongoQuery extends AbstractReactiveMongoQuery { @@ -54,17 +53,17 @@ public class ReactiveStringBasedMongoQuery extends AbstractReactiveMongoQuery {
private final ExpressionEvaluatingParameterBinder parameterBinder;
/**
* Creates a new {@link ReactiveStringBasedMongoQuery} for the given {@link MongoQueryMethod} and {@link MongoOperations}.
* Creates a new {@link ReactiveStringBasedMongoQuery} for the given {@link MongoQueryMethod} and
* {@link MongoOperations}.
*
* @param method must not be {@literal null}.
* @param mongoOperations must not be {@literal null}.
* @param expressionParser must not be {@literal null}.
* @param evaluationContextProvider must not be {@literal null}.
* @param conversionService must not be {@literal null}.
*/
public ReactiveStringBasedMongoQuery(ReactiveMongoQueryMethod method, ReactiveMongoOperations mongoOperations,
SpelExpressionParser expressionParser, EvaluationContextProvider evaluationContextProvider, ConversionService conversionService) {
this(method.getAnnotatedQuery(), method, mongoOperations, expressionParser, evaluationContextProvider, conversionService);
SpelExpressionParser expressionParser, EvaluationContextProvider evaluationContextProvider) {
this(method.getAnnotatedQuery(), method, mongoOperations, expressionParser, evaluationContextProvider);
}
/**
@ -75,12 +74,12 @@ public class ReactiveStringBasedMongoQuery extends AbstractReactiveMongoQuery { @@ -75,12 +74,12 @@ public class ReactiveStringBasedMongoQuery extends AbstractReactiveMongoQuery {
* @param method must not be {@literal null}.
* @param mongoOperations must not be {@literal null}.
* @param expressionParser must not be {@literal null}.
* @param conversionService must not be {@literal null}.
*/
public ReactiveStringBasedMongoQuery(String query, ReactiveMongoQueryMethod method, ReactiveMongoOperations mongoOperations,
SpelExpressionParser expressionParser, EvaluationContextProvider evaluationContextProvider, ConversionService conversionService) {
public ReactiveStringBasedMongoQuery(String query, ReactiveMongoQueryMethod method,
ReactiveMongoOperations mongoOperations, SpelExpressionParser expressionParser,
EvaluationContextProvider evaluationContextProvider) {
super(method, mongoOperations, conversionService);
super(method, mongoOperations);
Assert.notNull(query, "Query must not be null!");
Assert.notNull(expressionParser, "SpelExpressionParser must not be null!");

40
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/ReactiveMongoRepositoryFactory.java

@ -15,13 +15,14 @@ @@ -15,13 +15,14 @@
*/
package org.springframework.data.mongodb.repository.support;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.Arrays;
import org.reactivestreams.Publisher;
import org.springframework.core.convert.ConversionService;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.mapping.model.MappingException;
@ -29,7 +30,6 @@ import org.springframework.data.mongodb.core.ReactiveMongoOperations; @@ -29,7 +30,6 @@ import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.mapping.MongoPersistentEntity;
import org.springframework.data.mongodb.core.mapping.MongoPersistentProperty;
import org.springframework.data.mongodb.repository.query.MongoEntityInformation;
import org.springframework.data.mongodb.repository.query.MongoQueryMethod;
import org.springframework.data.mongodb.repository.query.PartTreeMongoQuery;
import org.springframework.data.mongodb.repository.query.ReactiveMongoQueryMethod;
import org.springframework.data.mongodb.repository.query.ReactivePartTreeMongoQuery;
@ -43,7 +43,6 @@ import org.springframework.data.repository.query.EvaluationContextProvider; @@ -43,7 +43,6 @@ import org.springframework.data.repository.query.EvaluationContextProvider;
import org.springframework.data.repository.query.QueryLookupStrategy;
import org.springframework.data.repository.query.QueryLookupStrategy.Key;
import org.springframework.data.repository.query.RepositoryQuery;
import org.springframework.data.repository.util.QueryExecutionConverters;
import org.springframework.data.repository.util.ReactiveWrapperConverters;
import org.springframework.data.repository.util.ReactiveWrappers;
import org.springframework.expression.spel.standard.SpelExpressionParser;
@ -55,6 +54,7 @@ import org.springframework.util.ClassUtils; @@ -55,6 +54,7 @@ import org.springframework.util.ClassUtils;
*
* @author Mark Paluch
* @author Christoph Strobl
* @author Oliver Gierke
* @since 2.0
*/
public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport {
@ -63,7 +63,6 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport { @@ -63,7 +63,6 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport {
private final ReactiveMongoOperations operations;
private final MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext;
private final ConversionService conversionService;
/**
* Creates a new {@link ReactiveMongoRepositoryFactory} with the given {@link ReactiveMongoOperations}.
@ -76,12 +75,6 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport { @@ -76,12 +75,6 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport {
this.operations = mongoOperations;
this.mappingContext = mongoOperations.getConverter().getMappingContext();
DefaultConversionService conversionService = new DefaultConversionService();
ReactiveWrapperConverters.registerConvertersIn(conversionService);
this.conversionService = conversionService;
setConversionService(conversionService);
}
/*
@ -111,7 +104,7 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport { @@ -111,7 +104,7 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport {
*/
@Override
protected QueryLookupStrategy getQueryLookupStrategy(Key key, EvaluationContextProvider evaluationContextProvider) {
return new MongoQueryLookupStrategy(operations, evaluationContextProvider, mappingContext, conversionService);
return new MongoQueryLookupStrategy(operations, evaluationContextProvider, mappingContext);
}
/*
@ -131,7 +124,7 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport { @@ -131,7 +124,7 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport {
if (!ReactiveWrappers.isAvailable()) {
throw new InvalidDataAccessApiUsageException(
String.format("Cannot implement Repository %s without reactive library support.",
String.format("Cannot implement repository %s without reactive library support.",
repositoryMetadata.getRepositoryInterface().getName()));
}
@ -189,22 +182,12 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport { @@ -189,22 +182,12 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport {
*
* @author Mark Paluch
*/
@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
private static class MongoQueryLookupStrategy implements QueryLookupStrategy {
private final ReactiveMongoOperations operations;
private final EvaluationContextProvider evaluationContextProvider;
MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext;
final ConversionService conversionService;
MongoQueryLookupStrategy(ReactiveMongoOperations operations, EvaluationContextProvider evaluationContextProvider,
MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext,
ConversionService conversionService) {
this.operations = operations;
this.evaluationContextProvider = evaluationContextProvider;
this.mappingContext = mappingContext;
this.conversionService = conversionService;
}
private final MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext;
/*
* (non-Javadoc)
@ -220,12 +203,11 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport { @@ -220,12 +203,11 @@ public class ReactiveMongoRepositoryFactory extends RepositoryFactorySupport {
if (namedQueries.hasQuery(namedQueryName)) {
String namedQuery = namedQueries.getQuery(namedQueryName);
return new ReactiveStringBasedMongoQuery(namedQuery, queryMethod, operations, EXPRESSION_PARSER,
evaluationContextProvider, conversionService);
evaluationContextProvider);
} else if (queryMethod.hasAnnotatedQuery()) {
return new ReactiveStringBasedMongoQuery(queryMethod, operations, EXPRESSION_PARSER, evaluationContextProvider,
conversionService);
return new ReactiveStringBasedMongoQuery(queryMethod, operations, EXPRESSION_PARSER, evaluationContextProvider);
} else {
return new ReactivePartTreeMongoQuery(queryMethod, operations, conversionService);
return new ReactivePartTreeMongoQuery(queryMethod, operations);
}
}
}

10
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/performance/ReactivePerformanceTests.java

@ -19,6 +19,9 @@ import static org.springframework.data.mongodb.core.query.Criteria.*; @@ -19,6 +19,9 @@ import static org.springframework.data.mongodb.core.query.Criteria.*;
import static org.springframework.data.mongodb.core.query.Query.*;
import static org.springframework.util.Assert.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
@ -39,7 +42,6 @@ import org.bson.types.ObjectId; @@ -39,7 +42,6 @@ import org.bson.types.ObjectId;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.Constants;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.data.annotation.PersistenceConstructor;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
@ -68,9 +70,6 @@ import com.mongodb.reactivestreams.client.MongoClients; @@ -68,9 +70,6 @@ import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoCollection;
import com.mongodb.reactivestreams.client.MongoDatabase;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
/**
* Test class to execute performance tests for plain Reactive Streams MongoDB driver usage,
* {@link ReactiveMongoOperations} and the repositories abstraction.
@ -131,10 +130,7 @@ public class ReactivePerformanceTests { @@ -131,10 +130,7 @@ public class ReactivePerformanceTests {
operations = new ReactiveMongoTemplate(mongoDbFactory, converter);
ReactiveMongoRepositoryFactory factory = new ReactiveMongoRepositoryFactory(operations);
factory.setConversionService(new GenericConversionService());
repository = factory.getRepository(ReactivePersonRepository.class);
}
/**

16
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/ReactiveStringBasedMongoQueryUnitTests.java

@ -19,6 +19,9 @@ import static org.hamcrest.Matchers.*; @@ -19,6 +19,9 @@ import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.Map;
@ -32,7 +35,6 @@ import org.junit.Test; @@ -32,7 +35,6 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.core.convert.support.DefaultConversionService;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
@ -48,13 +50,8 @@ import org.springframework.data.projection.SpelAwareProxyProjectionFactory; @@ -48,13 +50,8 @@ import org.springframework.data.projection.SpelAwareProxyProjectionFactory;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.core.support.DefaultRepositoryMetadata;
import org.springframework.data.repository.query.DefaultEvaluationContextProvider;
import org.springframework.data.repository.util.QueryExecutionConverters;
import org.springframework.data.repository.util.ReactiveWrapperConverters;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
/**
* Unit tests for {@link ReactiveStringBasedMongoQuery}.
*
@ -250,15 +247,12 @@ public class ReactiveStringBasedMongoQueryUnitTests { @@ -250,15 +247,12 @@ public class ReactiveStringBasedMongoQueryUnitTests {
private ReactiveStringBasedMongoQuery createQueryForMethod(String name, Class<?>... parameters) throws Exception {
DefaultConversionService conversionService = new DefaultConversionService();
ReactiveWrapperConverters.registerConvertersIn(conversionService);
Method method = SampleRepository.class.getMethod(name, parameters);
ProjectionFactory factory = new SpelAwareProxyProjectionFactory();
ReactiveMongoQueryMethod queryMethod = new ReactiveMongoQueryMethod(method,
new DefaultRepositoryMetadata(SampleRepository.class), factory, converter.getMappingContext());
return new ReactiveStringBasedMongoQuery(queryMethod, operations, PARSER, DefaultEvaluationContextProvider.INSTANCE,
conversionService);
return new ReactiveStringBasedMongoQuery(queryMethod, operations, PARSER,
DefaultEvaluationContextProvider.INSTANCE);
}
private interface SampleRepository extends Repository<Person, Long> {

Loading…
Cancel
Save