From 05a5b4aa282f9623aae4d32ed5804f14d8cd4b0a Mon Sep 17 00:00:00 2001 From: John Blum Date: Mon, 14 May 2018 12:27:07 -0700 Subject: [PATCH] DATACASS-553 - Adapt to SpEL Extension API changes in Spring Data Commons. --- .../data/cassandra/SessionFactory.java | 1 + .../core/AsyncCassandraTemplate.java | 5 ++- .../session/lookup/SessionFactoryLookup.java | 1 + .../ExpressionEvaluatingParameterBinder.java | 7 +++-- .../ReactiveStringBasedCassandraQuery.java | 26 ++++++++++------ .../query/StringBasedCassandraQuery.java | 26 +++++++++------- .../support/CassandraRepositoryFactory.java | 9 +++--- .../ReactiveCassandraRepositoryFactory.java | 8 ++--- ...veCassandraRepositoryIntegrationTests.java | 14 +++++---- ...iveStringBasedCassandraQueryUnitTests.java | 24 +++++++------- .../StringBasedCassandraQueryUnitTests.java | 29 +++++++++-------- ...leCassandraRepositoryIntegrationTests.java | 24 +++++++------- ...veCassandraRepositoryIntegrationTests.java | 31 ++++++++++--------- 13 files changed, 115 insertions(+), 90 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/SessionFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/SessionFactory.java index e8454dee4..ea5507286 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/SessionFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/SessionFactory.java @@ -42,4 +42,5 @@ public interface SessionFactory { * @return a {@link Session} to Apache Cassandra. */ Session getSession(); + } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/AsyncCassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/AsyncCassandraTemplate.java index 8e7312c62..3756c2759 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/AsyncCassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/AsyncCassandraTemplate.java @@ -481,9 +481,8 @@ public class AsyncCassandraTemplate implements AsyncCassandraOperations, Applica Function mapper = getMapper(entityClass, entityClass, entity.getTableName()); return new MappingListenableFutureAdapter<>( - getAsyncCqlOperations().query(select, (row, rowNum) -> mapper.apply(row)), it -> { - return it.isEmpty() ? null : (T) it.get(0); - }); + getAsyncCqlOperations().query(select, (row, rowNum) -> mapper.apply(row)), + it -> it.isEmpty() ? null : (T) it.get(0)); } /* (non-Javadoc) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/lookup/SessionFactoryLookup.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/lookup/SessionFactoryLookup.java index 1c05bf260..e28e284e1 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/lookup/SessionFactoryLookup.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/lookup/SessionFactoryLookup.java @@ -39,4 +39,5 @@ public interface SessionFactoryLookup { * @throws SessionFactoryLookupFailureException if the lookup failed. */ SessionFactory getSessionFactory(String sessionFactoryName) throws SessionFactoryLookupFailureException; + } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ExpressionEvaluatingParameterBinder.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ExpressionEvaluatingParameterBinder.java index a0d1fc053..7910c4c21 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ExpressionEvaluatingParameterBinder.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ExpressionEvaluatingParameterBinder.java @@ -19,8 +19,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import org.springframework.data.repository.query.EvaluationContextProvider; import org.springframework.data.repository.query.Parameter; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.expression.EvaluationContext; import org.springframework.expression.Expression; import org.springframework.expression.spel.standard.SpelExpressionParser; @@ -39,7 +39,7 @@ class ExpressionEvaluatingParameterBinder { private final SpelExpressionParser expressionParser; - private final EvaluationContextProvider evaluationContextProvider; + private final QueryMethodEvaluationContextProvider evaluationContextProvider; /** * Creates new {@link ExpressionEvaluatingParameterBinder} @@ -48,7 +48,7 @@ class ExpressionEvaluatingParameterBinder { * @param evaluationContextProvider must not be {@literal null}. */ ExpressionEvaluatingParameterBinder(SpelExpressionParser expressionParser, - EvaluationContextProvider evaluationContextProvider) { + QueryMethodEvaluationContextProvider evaluationContextProvider) { Assert.notNull(expressionParser, "ExpressionParser must not be null"); Assert.notNull(evaluationContextProvider, "EvaluationContextProvider must not be null"); @@ -202,6 +202,7 @@ class ExpressionEvaluatingParameterBinder { private ParameterBinding(int parameterIndex, boolean quoted, @Nullable String expression, @Nullable String parameterName) { + this.parameterIndex = parameterIndex; this.quoted = quoted; this.expression = expression; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQuery.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQuery.java index 1fdd39b86..c19371810 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQuery.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQuery.java @@ -17,7 +17,7 @@ package org.springframework.data.cassandra.repository.query; import org.springframework.data.cassandra.core.ReactiveCassandraOperations; import org.springframework.data.cassandra.repository.Query; -import org.springframework.data.repository.query.EvaluationContextProvider; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.util.Assert; @@ -47,17 +47,20 @@ public class ReactiveStringBasedCassandraQuery extends AbstractReactiveCassandra /** * Create a new {@link ReactiveStringBasedCassandraQuery} for the given {@link CassandraQueryMethod}, - * {@link ReactiveCassandraOperations}, {@link SpelExpressionParser}, and {@link EvaluationContextProvider}. + * {@link ReactiveCassandraOperations}, {@link SpelExpressionParser}, + * and {@link QueryMethodEvaluationContextProvider}. * * @param queryMethod {@link ReactiveCassandraQueryMethod} on which this query is based. * @param operations {@link ReactiveCassandraOperations} used to perform data access in Cassandra. * @param expressionParser {@link SpelExpressionParser} used to parse expressions in the query. - * @param evaluationContextProvider {@link EvaluationContextProvider} used to access the potentially shared - * {@link org.springframework.expression.spel.support.StandardEvaluationContext}. + * @param evaluationContextProvider {@link QueryMethodEvaluationContextProvider} used to access + * the potentially shared {@link org.springframework.expression.spel.support.StandardEvaluationContext}. + * @see org.springframework.data.cassandra.repository.query.ReactiveCassandraQueryMethod + * @see org.springframework.data.cassandra.core.ReactiveCassandraOperations */ public ReactiveStringBasedCassandraQuery(ReactiveCassandraQueryMethod queryMethod, ReactiveCassandraOperations operations, SpelExpressionParser expressionParser, - EvaluationContextProvider evaluationContextProvider) { + QueryMethodEvaluationContextProvider evaluationContextProvider) { this(queryMethod.getRequiredAnnotatedQuery(), queryMethod, operations, expressionParser, evaluationContextProvider); @@ -65,17 +68,20 @@ public class ReactiveStringBasedCassandraQuery extends AbstractReactiveCassandra /** * Create a new {@link ReactiveStringBasedCassandraQuery} for the given {@code query}, {@link CassandraQueryMethod}, - * {@link ReactiveCassandraOperations}, {@link SpelExpressionParser}, and {@link EvaluationContextProvider}. + * {@link ReactiveCassandraOperations}, {@link SpelExpressionParser}, + * and {@link QueryMethodEvaluationContextProvider}. * * @param method {@link ReactiveCassandraQueryMethod} on which this query is based. * @param operations {@link ReactiveCassandraOperations} used to perform data access in Cassandra. * @param expressionParser {@link SpelExpressionParser} used to parse expressions in the query. - * @param evaluationContextProvider {@link EvaluationContextProvider} used to access the potentially shared - * {@link org.springframework.expression.spel.support.StandardEvaluationContext}. + * @param evaluationContextProvider {@link QueryMethodEvaluationContextProvider} used to access + * the potentially shared {@link org.springframework.expression.spel.support.StandardEvaluationContext}. + * @see org.springframework.data.cassandra.repository.query.ReactiveCassandraQueryMethod + * @see org.springframework.data.cassandra.core.ReactiveCassandraOperations */ public ReactiveStringBasedCassandraQuery(String query, ReactiveCassandraQueryMethod method, ReactiveCassandraOperations operations, SpelExpressionParser expressionParser, - EvaluationContextProvider evaluationContextProvider) { + QueryMethodEvaluationContextProvider evaluationContextProvider) { super(method, operations); @@ -86,7 +92,7 @@ public class ReactiveStringBasedCassandraQuery extends AbstractReactiveCassandra if (method.hasAnnotatedQuery()) { - Query queryAnnotation = method.getQueryAnnotation().get(); + Query queryAnnotation = method.getQueryAnnotation().orElse(null); this.isCountQuery = queryAnnotation.count(); this.isExistsQuery = queryAnnotation.exists(); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQuery.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQuery.java index 1d6ac01a6..f5c4bcb47 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQuery.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQuery.java @@ -17,7 +17,7 @@ package org.springframework.data.cassandra.repository.query; import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.repository.Query; -import org.springframework.data.repository.query.EvaluationContextProvider; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.expression.spel.standard.SpelExpressionParser; import com.datastax.driver.core.SimpleStatement; @@ -46,16 +46,18 @@ public class StringBasedCassandraQuery extends AbstractCassandraQuery { /** * Create a new {@link StringBasedCassandraQuery} for the given {@link CassandraQueryMethod}, - * {@link CassandraOperations}, {@link SpelExpressionParser}, and {@link EvaluationContextProvider}. + * {@link CassandraOperations}, {@link SpelExpressionParser}, and {@link QueryMethodEvaluationContextProvider}. * * @param queryMethod {@link CassandraQueryMethod} on which this query is based. * @param operations {@link CassandraOperations} used to perform data access in Cassandra. * @param expressionParser {@link SpelExpressionParser} used to parse expressions in the query. - * @param evaluationContextProvider {@link EvaluationContextProvider} used to access the potentially shared - * {@link org.springframework.expression.spel.support.StandardEvaluationContext}. + * @param evaluationContextProvider {@link QueryMethodEvaluationContextProvider} used to access + * the potentially shared {@link org.springframework.expression.spel.support.StandardEvaluationContext}. + * @see org.springframework.data.cassandra.repository.query.CassandraQueryMethod + * @see org.springframework.data.cassandra.core.CassandraOperations */ public StringBasedCassandraQuery(CassandraQueryMethod queryMethod, CassandraOperations operations, - SpelExpressionParser expressionParser, EvaluationContextProvider evaluationContextProvider) { + SpelExpressionParser expressionParser, QueryMethodEvaluationContextProvider evaluationContextProvider) { this(queryMethod.getRequiredAnnotatedQuery(), queryMethod, operations, expressionParser, evaluationContextProvider); @@ -63,17 +65,19 @@ public class StringBasedCassandraQuery extends AbstractCassandraQuery { /** * Create a new {@link StringBasedCassandraQuery} for the given {@code query}, {@link CassandraQueryMethod}, - * {@link CassandraOperations}, {@link SpelExpressionParser}, and {@link EvaluationContextProvider}. + * {@link CassandraOperations}, {@link SpelExpressionParser}, and {@link QueryMethodEvaluationContextProvider}. * - * @param query + * @param query {@link String} containing the Apache Cassandra CQL query to execute. * @param method {@link CassandraQueryMethod} on which this query is based. * @param operations {@link CassandraOperations} used to perform data access in Cassandra. * @param expressionParser {@link SpelExpressionParser} used to parse expressions in the query. - * @param evaluationContextProvider {@link EvaluationContextProvider} used to access the potentially shared - * {@link org.springframework.expression.spel.support.StandardEvaluationContext}. + * @param evaluationContextProvider {@link QueryMethodEvaluationContextProvider} used to access + * the potentially shared {@link org.springframework.expression.spel.support.StandardEvaluationContext}. + * @see org.springframework.data.cassandra.repository.query.CassandraQueryMethod + * @see org.springframework.data.cassandra.core.CassandraOperations */ public StringBasedCassandraQuery(String query, CassandraQueryMethod method, CassandraOperations operations, - SpelExpressionParser expressionParser, EvaluationContextProvider evaluationContextProvider) { + SpelExpressionParser expressionParser, QueryMethodEvaluationContextProvider evaluationContextProvider) { super(method, operations); @@ -82,7 +86,7 @@ public class StringBasedCassandraQuery extends AbstractCassandraQuery { if (method.hasAnnotatedQuery()) { - Query queryAnnotation = method.getQueryAnnotation().get(); + Query queryAnnotation = method.getQueryAnnotation().orElse(null); this.isCountQuery = queryAnnotation.count(); this.isExistsQuery = queryAnnotation.exists(); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java index b2020178e..ed21a7161 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java @@ -32,9 +32,9 @@ import org.springframework.data.repository.core.NamedQueries; import org.springframework.data.repository.core.RepositoryInformation; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.support.RepositoryFactorySupport; -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.QueryMethodEvaluationContextProvider; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.lang.Nullable; @@ -107,19 +107,20 @@ public class CassandraRepositoryFactory extends RepositoryFactorySupport { */ @Override protected Optional getQueryLookupStrategy(@Nullable Key key, - EvaluationContextProvider evaluationContextProvider) { + QueryMethodEvaluationContextProvider evaluationContextProvider) { + return Optional.of(new CassandraQueryLookupStrategy(operations, evaluationContextProvider, mappingContext)); } private class CassandraQueryLookupStrategy implements QueryLookupStrategy { - private final EvaluationContextProvider evaluationContextProvider; + private final QueryMethodEvaluationContextProvider evaluationContextProvider; private final MappingContext, CassandraPersistentProperty> mappingContext; private final CassandraOperations operations; - CassandraQueryLookupStrategy(CassandraOperations operations, EvaluationContextProvider evaluationContextProvider, + CassandraQueryLookupStrategy(CassandraOperations operations, QueryMethodEvaluationContextProvider evaluationContextProvider, MappingContext, CassandraPersistentProperty> mappingContext) { this.operations = operations; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactory.java index cf03dc09f..bc94587e7 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactory.java @@ -31,9 +31,9 @@ import org.springframework.data.repository.core.NamedQueries; import org.springframework.data.repository.core.RepositoryInformation; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.support.ReactiveRepositoryFactorySupport; -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.QueryMethodEvaluationContextProvider; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.lang.Nullable; @@ -90,7 +90,7 @@ public class ReactiveCassandraRepositoryFactory extends ReactiveRepositoryFactor */ @Override protected Optional getQueryLookupStrategy(@Nullable Key key, - EvaluationContextProvider evaluationContextProvider) { + QueryMethodEvaluationContextProvider evaluationContextProvider) { return Optional.of(new CassandraQueryLookupStrategy(operations, evaluationContextProvider, mappingContext)); } @@ -113,12 +113,12 @@ public class ReactiveCassandraRepositoryFactory extends ReactiveRepositoryFactor */ private static class CassandraQueryLookupStrategy implements QueryLookupStrategy { - private final EvaluationContextProvider evaluationContextProvider; + private final QueryMethodEvaluationContextProvider evaluationContextProvider; private final ReactiveCassandraOperations operations; private final MappingContext, ? extends CassandraPersistentProperty> mappingContext; CassandraQueryLookupStrategy(ReactiveCassandraOperations operations, - EvaluationContextProvider evaluationContextProvider, + QueryMethodEvaluationContextProvider evaluationContextProvider, MappingContext, ? extends CassandraPersistentProperty> mappingContext) { this.evaluationContextProvider = evaluationContextProvider; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/ReactiveCassandraRepositoryIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/ReactiveCassandraRepositoryIntegrationTests.java index 4e59efab6..c10e9ec3e 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/ReactiveCassandraRepositoryIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/ReactiveCassandraRepositoryIntegrationTests.java @@ -15,17 +15,18 @@ */ package org.springframework.data.cassandra.repository; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.test.StepVerifier; - import java.util.Arrays; import java.util.HashSet; import java.util.Set; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; + import org.reactivestreams.Publisher; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; @@ -44,7 +45,7 @@ import org.springframework.data.cassandra.repository.support.SimpleReactiveCassa import org.springframework.data.cassandra.test.util.AbstractKeyspaceCreatingIntegrationTest; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; -import org.springframework.data.repository.query.DefaultEvaluationContextProvider; +import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -107,7 +108,7 @@ public class ReactiveCassandraRepositoryIntegrationTests extends AbstractKeyspac factory.setRepositoryBaseClass(SimpleReactiveCassandraRepository.class); factory.setBeanClassLoader(classLoader); factory.setBeanFactory(beanFactory); - factory.setEvaluationContextProvider(DefaultEvaluationContextProvider.INSTANCE); + factory.setEvaluationContextProvider(QueryMethodEvaluationContextProvider.DEFAULT); repository = factory.getRepository(UserRepository.class); groupRepostitory = factory.getRepository(GroupRepository.class); @@ -228,5 +229,6 @@ public class ReactiveCassandraRepositoryIntegrationTests extends AbstractKeyspac interface GroupRepository extends ReactiveCassandraRepository { Flux findByIdGroupnameAndIdHashPrefix(String groupname, String hashPrefix, Sort sort); + } } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQueryUnitTests.java index 5c8899711..9797d9b85 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQueryUnitTests.java @@ -40,7 +40,7 @@ import org.springframework.data.projection.SpelAwareProxyProjectionFactory; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.support.AbstractRepositoryMetadata; -import org.springframework.data.repository.query.ExtensionAwareEvaluationContextProvider; +import org.springframework.data.repository.query.ExtensionAwareQueryMethodEvaluationContextProvider; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.util.ReflectionUtils; @@ -57,17 +57,17 @@ import com.datastax.driver.core.SimpleStatement; @RunWith(MockitoJUnitRunner.class) public class ReactiveStringBasedCassandraQueryUnitTests { - SpelExpressionParser PARSER = new SpelExpressionParser(); + private static final SpelExpressionParser PARSER = new SpelExpressionParser(); - @Mock ReactiveCassandraOperations operations; - @Mock ReactiveCqlOperations cqlOperations; - @Mock ReactiveSession reactiveSession; - @Mock Cluster cluster; - @Mock Configuration configuration; + @Mock private Cluster cluster; + @Mock private Configuration configuration; + @Mock private ReactiveCassandraOperations operations; + @Mock private ReactiveCqlOperations cqlOperations; + @Mock private ReactiveSession reactiveSession; - RepositoryMetadata metadata; - MappingCassandraConverter converter; - ProjectionFactory factory; + private MappingCassandraConverter converter; + private ProjectionFactory factory; + private RepositoryMetadata metadata; @Before @SuppressWarnings("unchecked") @@ -136,9 +136,10 @@ public class ReactiveStringBasedCassandraQueryUnitTests { new ReactiveCassandraQueryMethod(method, metadata, factory, converter.getMappingContext()); return new ReactiveStringBasedCassandraQuery(queryMethod, operations, PARSER, - new ExtensionAwareEvaluationContextProvider()); + ExtensionAwareQueryMethodEvaluationContextProvider.DEFAULT); } + @SuppressWarnings("unused") private interface SampleRepository extends Repository { @Query("SELECT * FROM person WHERE lastname=?0;") @@ -147,5 +148,6 @@ public class ReactiveStringBasedCassandraQueryUnitTests { @Query("SELECT * FROM person WHERE lastname=?0;") Person findByLastname(QueryOptions queryOptions, String lastname); + } } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQueryUnitTests.java index e745b4d8a..c0c2884b5 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQueryUnitTests.java @@ -15,8 +15,8 @@ */ package org.springframework.data.cassandra.repository.query; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -32,6 +32,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; + import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; import org.springframework.data.cassandra.core.cql.CqlIdentifier; @@ -48,7 +49,7 @@ import org.springframework.data.projection.SpelAwareProxyProjectionFactory; import org.springframework.data.repository.Repository; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.core.support.AbstractRepositoryMetadata; -import org.springframework.data.repository.query.ExtensionAwareEvaluationContextProvider; +import org.springframework.data.repository.query.ExtensionAwareQueryMethodEvaluationContextProvider; import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.QueryCreationException; import org.springframework.expression.spel.standard.SpelExpressionParser; @@ -70,15 +71,15 @@ import com.datastax.driver.core.UserType; @RunWith(MockitoJUnitRunner.class) public class StringBasedCassandraQueryUnitTests { - SpelExpressionParser PARSER = new SpelExpressionParser(); + private static final SpelExpressionParser PARSER = new SpelExpressionParser(); - @Mock CassandraOperations operations; - @Mock UserTypeResolver userTypeResolver; - @Mock UDTValue udtValue; + @Mock private CassandraOperations operations; + @Mock private UDTValue udtValue; + @Mock private UserTypeResolver userTypeResolver; - RepositoryMetadata metadata; - MappingCassandraConverter converter; - ProjectionFactory factory; + private RepositoryMetadata metadata; + private MappingCassandraConverter converter; + private ProjectionFactory factory; @Before @SuppressWarnings("unchecked") @@ -381,9 +382,10 @@ public class StringBasedCassandraQueryUnitTests { new CassandraQueryMethod(method, metadata, factory, converter.getMappingContext()); return new StringBasedCassandraQuery(queryMethod, operations, PARSER, - new ExtensionAwareEvaluationContextProvider()); + ExtensionAwareQueryMethodEvaluationContextProvider.DEFAULT); } + @SuppressWarnings("unused") private interface SampleRepository extends Repository { @Query("SELECT * FROM person WHERE lastname = ?0;") @@ -434,10 +436,11 @@ public class StringBasedCassandraQueryUnitTests { @ComposedQueryAnnotation Person findByComposedQueryAnnotation(String lastname); + } @Retention(RetentionPolicy.RUNTIME) @Query("SELECT * FROM person WHERE lastname = ?0;") - @interface ComposedQueryAnnotation { - } + @interface ComposedQueryAnnotation { } + } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryIntegrationTests.java index 57a540646..f78bf6194 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryIntegrationTests.java @@ -37,16 +37,17 @@ import org.springframework.data.cassandra.domain.User; import org.springframework.data.cassandra.repository.CassandraRepository; import org.springframework.data.cassandra.test.util.AbstractKeyspaceCreatingIntegrationTest; import org.springframework.data.domain.Slice; -import org.springframework.data.repository.query.DefaultEvaluationContextProvider; +import org.springframework.data.repository.query.ExtensionAwareQueryMethodEvaluationContextProvider; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.util.ClassUtils; /** * Integration tests for {@link SimpleCassandraRepository}. * * @author Mark Paluch */ -@RunWith(SpringJUnit4ClassRunner.class) +@RunWith(SpringRunner.class) @ContextConfiguration public class SimpleCassandraRepositoryIntegrationTests extends AbstractKeyspaceCreatingIntegrationTest implements BeanClassLoaderAware, BeanFactoryAware { @@ -62,16 +63,16 @@ public class SimpleCassandraRepositoryIntegrationTests extends AbstractKeyspaceC @Autowired private CassandraOperations operations; - CassandraRepositoryFactory factory; - ClassLoader classLoader; - BeanFactory beanFactory; - UserRepostitory repository; + private BeanFactory beanFactory; + private CassandraRepositoryFactory factory; + private ClassLoader classLoader; + private UserRepostitory repository; - User dave, oliver, carter, boyd; + private User dave, oliver, carter, boyd; @Override public void setBeanClassLoader(ClassLoader classLoader) { - this.classLoader = classLoader == null ? org.springframework.util.ClassUtils.getDefaultClassLoader() : classLoader; + this.classLoader = classLoader != null ? classLoader : ClassUtils.getDefaultClassLoader(); } @Override @@ -86,7 +87,7 @@ public class SimpleCassandraRepositoryIntegrationTests extends AbstractKeyspaceC factory.setRepositoryBaseClass(SimpleCassandraRepository.class); factory.setBeanClassLoader(classLoader); factory.setBeanFactory(beanFactory); - factory.setEvaluationContextProvider(DefaultEvaluationContextProvider.INSTANCE); + factory.setEvaluationContextProvider(ExtensionAwareQueryMethodEvaluationContextProvider.DEFAULT); repository = factory.getRepository(UserRepostitory.class); @@ -301,5 +302,6 @@ public class SimpleCassandraRepositoryIntegrationTests extends AbstractKeyspaceC assertThat(loaded).isEmpty(); } - interface UserRepostitory extends CassandraRepository {} + interface UserRepostitory extends CassandraRepository { } + } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleReactiveCassandraRepositoryIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleReactiveCassandraRepositoryIntegrationTests.java index 1273e06b2..295561bda 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleReactiveCassandraRepositoryIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleReactiveCassandraRepositoryIntegrationTests.java @@ -15,17 +15,18 @@ */ package org.springframework.data.cassandra.repository.support; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Arrays; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import java.util.Arrays; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; + import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.BeanFactory; @@ -36,9 +37,9 @@ import org.springframework.data.cassandra.core.ReactiveCassandraOperations; import org.springframework.data.cassandra.domain.User; import org.springframework.data.cassandra.repository.ReactiveCassandraRepository; import org.springframework.data.cassandra.test.util.AbstractKeyspaceCreatingIntegrationTest; -import org.springframework.data.repository.query.DefaultEvaluationContextProvider; +import org.springframework.data.repository.query.ExtensionAwareQueryMethodEvaluationContextProvider; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.junit4.SpringRunner; /** * Integration tests for {@link SimpleReactiveCassandraRepository}. @@ -46,7 +47,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * @author Mark Paluch * @author Christoph Strobl */ -@RunWith(SpringJUnit4ClassRunner.class) +@RunWith(SpringRunner.class) @ContextConfiguration public class SimpleReactiveCassandraRepositoryIntegrationTests extends AbstractKeyspaceCreatingIntegrationTest implements BeanClassLoaderAware, BeanFactoryAware { @@ -60,14 +61,15 @@ public class SimpleReactiveCassandraRepositoryIntegrationTests extends AbstractK } } - @Autowired private ReactiveCassandraOperations operations; + @Autowired + private ReactiveCassandraOperations operations; - ReactiveCassandraRepositoryFactory factory; - ClassLoader classLoader; - BeanFactory beanFactory; - UserRepostitory repository; + private BeanFactory beanFactory; + private ClassLoader classLoader; + private ReactiveCassandraRepositoryFactory factory; + private UserRepostitory repository; - User dave, oliver, carter, boyd; + private User dave, oliver, carter, boyd; @Override public void setBeanClassLoader(ClassLoader classLoader) { @@ -86,7 +88,7 @@ public class SimpleReactiveCassandraRepositoryIntegrationTests extends AbstractK factory.setRepositoryBaseClass(SimpleReactiveCassandraRepository.class); factory.setBeanClassLoader(classLoader); factory.setBeanFactory(beanFactory); - factory.setEvaluationContextProvider(DefaultEvaluationContextProvider.INSTANCE); + factory.setEvaluationContextProvider(ExtensionAwareQueryMethodEvaluationContextProvider.DEFAULT); repository = factory.getRepository(UserRepostitory.class); @@ -380,5 +382,6 @@ public class SimpleReactiveCassandraRepositoryIntegrationTests extends AbstractK StepVerifier.create(repository.findById(boyd.getId())).expectNextCount(0).verifyComplete(); } - interface UserRepostitory extends ReactiveCassandraRepository {} + interface UserRepostitory extends ReactiveCassandraRepository { } + }