From 60eeae9d319e179f1fb2efaf1b0ee944339f4b6b Mon Sep 17 00:00:00 2001 From: John Blum Date: Thu, 6 Jul 2017 17:10:55 -0700 Subject: [PATCH] DATACASS-376 - Polish. Resolves gh-108. --- .../data/cassandra/core/query/Query.java | 7 ++++--- .../cassandra/repository/AllowFiltering.java | 2 +- .../data/cassandra/repository/Query.java | 3 ++- .../query/CassandraQueryMethod.java | 14 ++++++------- .../query/PartTreeCassandraQuery.java | 12 +++++++---- .../query/ReactivePartTreeCassandraQuery.java | 12 +++++++---- .../PartTreeCassandraQueryUnitTests.java | 12 ++++++----- ...activePartTreeCassandraQueryUnitTests.java | 20 ++++++++++--------- 8 files changed, 48 insertions(+), 34 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Query.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Query.java index 55e4e6581..c60100e5e 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Query.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Query.java @@ -15,7 +15,8 @@ */ package org.springframework.data.cassandra.core.query; -import static org.springframework.util.ObjectUtils.*; +import static org.springframework.util.ObjectUtils.nullSafeEquals; +import static org.springframework.util.ObjectUtils.nullSafeHashCode; import java.util.ArrayList; import java.util.Arrays; @@ -256,8 +257,8 @@ public class Query implements Filter { * @return a new {@link Query} object containing the former settings with {@code allowFiltering} applied. */ public Query withAllowFiltering() { - return new Query(this.criteriaDefinitions, this.columns, this.sort, this.pagingState, this.queryOptions, this.limit, - true); + return new Query(this.criteriaDefinitions, this.columns, this.sort, this.pagingState, this.queryOptions, + this.limit, true); } /** diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/AllowFiltering.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/AllowFiltering.java index bf54840eb..df9ce10e7 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/AllowFiltering.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/AllowFiltering.java @@ -27,8 +27,8 @@ import java.lang.annotation.Target; * @author Mark Paluch * @since 2.0 */ -@Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE }) +@Retention(RetentionPolicy.RUNTIME) @Documented @Query(allowFiltering = true) public @interface AllowFiltering { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/Query.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/Query.java index efab170e9..ef1fd3269 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/Query.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/Query.java @@ -30,8 +30,8 @@ import org.springframework.data.annotation.QueryAnnotation; * @author Matthew T. Adams * @author Mark Paluch */ -@Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.ANNOTATION_TYPE, ElementType.METHOD }) +@Retention(RetentionPolicy.RUNTIME) @Documented @QueryAnnotation public @interface Query { @@ -48,4 +48,5 @@ public @interface Query { * @since 2.0 */ boolean allowFiltering() default false; + } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethod.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethod.java index a9e3f318c..6892c220b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethod.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethod.java @@ -96,6 +96,7 @@ public class CassandraQueryMethod extends QueryMethod { public CassandraEntityMetadata getEntityInformation() { if (entityMetadata == null) { + Class returnedObjectType = getReturnedObjectType(); Class domainClass = getDomainClass(); @@ -104,19 +105,18 @@ public class CassandraQueryMethod extends QueryMethod { mappingContext.getRequiredPersistentEntity(domainClass)); } else { - CassandraPersistentEntity entity = mappingContext.getPersistentEntity(returnedObjectType); CassandraPersistentEntity managedEntity = mappingContext.getRequiredPersistentEntity(domainClass); - CassandraPersistentEntity returnedEntity = entity != null && entity.getType().isInterface() ? entity - : managedEntity; + CassandraPersistentEntity returnedEntity = + entity != null && entity.getType().isInterface() ? entity : managedEntity; // TODO collectionEntity? - CassandraPersistentEntity collectionEntity = domainClass.isAssignableFrom(returnedObjectType) - ? returnedEntity : managedEntity; + CassandraPersistentEntity collectionEntity = + domainClass.isAssignableFrom(returnedObjectType) ? returnedEntity : managedEntity; - this.entityMetadata = new SimpleCassandraEntityMetadata<>((Class) returnedEntity.getType(), - collectionEntity); + this.entityMetadata = + new SimpleCassandraEntityMetadata<>((Class) returnedEntity.getType(), collectionEntity); } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQuery.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQuery.java index bf7814e6d..5202bfd06 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQuery.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQuery.java @@ -97,7 +97,8 @@ public class PartTreeCassandraQuery extends AbstractCassandraQuery { @Override protected Statement createQuery(CassandraParameterAccessor parameterAccessor) { - CassandraQueryCreator queryCreator = new CassandraQueryCreator(getTree(), parameterAccessor, getMappingContext()); + CassandraQueryCreator queryCreator = + new CassandraQueryCreator(getTree(), parameterAccessor, getMappingContext()); Query query = queryCreator.createQuery(); @@ -107,14 +108,17 @@ public class PartTreeCassandraQuery extends AbstractCassandraQuery { query = query.limit(getTree().getMaxResults()); } - if (getQueryMethod().getQueryAnnotation().map(q -> q.allowFiltering()).orElse(false)) { + if (getQueryMethod().getQueryAnnotation() + .map(org.springframework.data.cassandra.repository.Query::allowFiltering).orElse(false)) { + query = query.withAllowFiltering(); } - CassandraPersistentEntity persistentEntity = getMappingContext() - .getRequiredPersistentEntity(getQueryMethod().getDomainClass()); + CassandraPersistentEntity persistentEntity = + getMappingContext().getRequiredPersistentEntity(getQueryMethod().getDomainClass()); return getStatementFactory().select(query, persistentEntity); + } catch (RuntimeException e) { throw QueryCreationException.create(getQueryMethod(), e); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQuery.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQuery.java index ef00ca5e2..403ea29aa 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQuery.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQuery.java @@ -97,7 +97,8 @@ public class ReactivePartTreeCassandraQuery extends AbstractReactiveCassandraQue @Override protected Statement createQuery(CassandraParameterAccessor parameterAccessor) { - CassandraQueryCreator queryCreator = new CassandraQueryCreator(getTree(), parameterAccessor, getMappingContext()); + CassandraQueryCreator queryCreator = + new CassandraQueryCreator(getTree(), parameterAccessor, getMappingContext()); Query query = queryCreator.createQuery(); @@ -107,14 +108,17 @@ public class ReactivePartTreeCassandraQuery extends AbstractReactiveCassandraQue query = query.limit(getTree().getMaxResults()); } - if (getQueryMethod().getQueryAnnotation().map(q -> q.allowFiltering()).orElse(false)) { + if (getQueryMethod().getQueryAnnotation() + .map(org.springframework.data.cassandra.repository.Query::allowFiltering).orElse(false)) { + query = query.withAllowFiltering(); } - CassandraPersistentEntity persistentEntity = getMappingContext() - .getRequiredPersistentEntity(getQueryMethod().getDomainClass()); + CassandraPersistentEntity persistentEntity = + getMappingContext().getRequiredPersistentEntity(getQueryMethod().getDomainClass()); return getStatementFactory().select(query, persistentEntity); + } catch (RuntimeException e) { throw QueryCreationException.create(getQueryMethod(), e); } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java index a92930fb4..8f6427038 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.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.reflect.Method; import java.util.Arrays; @@ -30,6 +30,7 @@ import org.junit.rules.ExpectedException; 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.CassandraConverter; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; @@ -180,10 +181,11 @@ public class PartTreeCassandraQueryUnitTests { PartTreeCassandraQuery partTreeQuery = createQueryForMethod(repositoryInterface, method, types); - CassandraParameterAccessor accessor = new CassandraParametersParameterAccessor(partTreeQuery.getQueryMethod(), - args); + CassandraParameterAccessor accessor = + new CassandraParametersParameterAccessor(partTreeQuery.getQueryMethod(), args); - return partTreeQuery.createQuery(new ConvertingParameterAccessor(mockCassandraOperations.getConverter(), accessor)); + return partTreeQuery.createQuery( + new ConvertingParameterAccessor(mockCassandraOperations.getConverter(), accessor)); } private PartTreeCassandraQuery createQueryForMethod(Class repositoryInterface, String methodName, diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java index 87651a37c..4fbbe65be 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java @@ -15,14 +15,13 @@ */ 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.reflect.Method; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import rx.Single; - -import java.lang.reflect.Method; import org.junit.Before; import org.junit.Rule; @@ -31,6 +30,7 @@ import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; + import org.springframework.data.cassandra.core.ReactiveCassandraOperations; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; @@ -42,6 +42,8 @@ import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.projection.SpelAwareProxyProjectionFactory; import org.springframework.data.repository.core.support.DefaultRepositoryMetadata; +import rx.Single; + /** * Unit tests for {@link ReactivePartTreeCassandraQuery}. * @@ -112,11 +114,11 @@ public class ReactivePartTreeCassandraQueryUnitTests { ReactivePartTreeCassandraQuery partTreeQuery = createQueryForMethod(method, types); - CassandraParameterAccessor accessor = new CassandraParametersParameterAccessor(partTreeQuery.getQueryMethod(), - args); + CassandraParameterAccessor accessor = + new CassandraParametersParameterAccessor(partTreeQuery.getQueryMethod(), args); - return partTreeQuery.createQuery(new ConvertingParameterAccessor(mockCassandraOperations.getConverter(), accessor)) - .toString(); + return partTreeQuery.createQuery( + new ConvertingParameterAccessor(mockCassandraOperations.getConverter(), accessor)).toString(); } private ReactivePartTreeCassandraQuery createQueryForMethod(String methodName, Class... paramTypes) {