From 3f8b0a7335357daefefc01cb1228e89c9e288d03 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 14 May 2020 16:30:34 +0200 Subject: [PATCH] DATACASS-764 - Delombok source files. --- .../KeyspaceActionSpecificationFactory.java | 12 ++- .../cassandra/config/KeyspaceActions.java | 47 ++++++++++- .../core/AsyncCassandraTemplate.java | 11 ++- .../cassandra/core/CassandraTemplate.java | 15 ++-- .../data/cassandra/core/DeleteOptions.java | 43 +++++++++- .../data/cassandra/core/EntityOperations.java | 28 ++++--- .../ExecutableDeleteOperationSupport.java | 30 ++++--- .../ExecutableInsertOperationSupport.java | 29 ++++--- .../ExecutableSelectOperationSupport.java | 33 ++++---- .../ExecutableUpdateOperationSupport.java | 30 ++++--- .../data/cassandra/core/InsertOptions.java | 43 +++++++++- .../core/ReactiveCassandraTemplate.java | 14 ++-- .../core/ReactiveDeleteOperationSupport.java | 29 ++++--- .../core/ReactiveInsertOperationSupport.java | 29 ++++--- .../core/ReactiveSelectOperationSupport.java | 32 +++++--- .../core/ReactiveUpdateOperationSupport.java | 29 ++++--- .../data/cassandra/core/UpdateOptions.java | 44 +++++++++- .../convert/AbstractCassandraConverter.java | 3 +- .../convert/MappingCassandraConverter.java | 8 +- .../cql/ArgumentPreparedStatementBinder.java | 4 +- .../core/cql/AsyncCqlOperations.java | 10 +-- .../cassandra/core/cql/AsyncCqlTemplate.java | 14 ++-- .../cql/AsyncPreparedStatementCreator.java | 4 +- .../core/cql/AsyncResultSetExtractor.java | 6 +- .../cassandra/core/cql/AsyncResultStream.java | 6 +- .../cql/AsyncRowMapperResultSetExtractor.java | 6 +- .../core/cql/AsyncSessionCallback.java | 6 +- .../cql/CachedPreparedStatementCreator.java | 9 +- .../cassandra/core/cql/CassandraAccessor.java | 11 ++- .../cql/CassandraExceptionTranslator.java | 12 +-- .../core/cql/ColumnMapRowMapper.java | 6 +- .../cassandra/core/cql/CqlConstantType.java | 4 +- .../core/cql/CqlExceptionTranslator.java | 4 +- .../cassandra/core/cql/CqlIdentifier.java | 6 +- .../cassandra/core/cql/CqlOperations.java | 8 +- .../data/cassandra/core/cql/CqlTemplate.java | 12 +-- .../core/cql/ExecutionProfileResolver.java | 4 +- .../core/cql/KeyspaceIdentifier.java | 8 +- .../core/cql/PreparedStatementCallback.java | 6 +- .../data/cassandra/core/cql/QueryOptions.java | 59 ++++++++++++- .../cassandra/core/cql/QueryOptionsUtil.java | 4 +- .../core/cql/ReactiveCqlOperations.java | 12 ++- .../core/cql/ReactiveCqlTemplate.java | 26 +++--- .../ReactivePreparedStatementCallback.java | 5 +- .../cql/ReactivePreparedStatementCreator.java | 5 +- .../core/cql/ReactiveResultSetExtractor.java | 3 +- .../ReactiveRowMapperResultSetExtractor.java | 3 +- .../core/cql/ReactiveSessionCallback.java | 5 +- .../core/cql/ReactiveStatementCallback.java | 5 +- .../core/cql/ResultSetExtractor.java | 6 +- .../data/cassandra/core/cql/RingMember.java | 4 +- .../core/cql/RingMemberHostMapper.java | 4 +- .../data/cassandra/core/cql/RowMapper.java | 4 +- .../core/cql/RowMapperResultSetExtractor.java | 6 +- .../data/cassandra/core/cql/RowUtils.java | 4 +- .../cassandra/core/cql/SessionCallback.java | 4 +- .../cql/SimplePreparedStatementCreator.java | 4 +- .../core/cql/SingleColumnRowMapper.java | 10 +-- .../data/cassandra/core/cql/WriteOptions.java | 48 +++++++++-- .../converter/AbstractResultSetConverter.java | 4 +- ...actResultSetToBasicFixedTypeConverter.java | 1 - .../converter/ResultSetToArrayConverter.java | 6 +- .../ResultSetToBigDecimalConverter.java | 4 +- .../ResultSetToBigIntegerConverter.java | 4 +- .../ResultSetToBooleanConverter.java | 4 +- .../ResultSetToByteBufferConverter.java | 4 +- .../converter/ResultSetToDateConverter.java | 4 +- .../converter/ResultSetToDoubleConverter.java | 4 +- .../converter/ResultSetToFloatConverter.java | 4 +- .../ResultSetToInetAddressConverter.java | 4 +- .../ResultSetToIntegerConverter.java | 4 +- .../converter/ResultSetToListConverter.java | 6 +- .../ResultSetToListOfStringConverter.java | 4 +- .../converter/ResultSetToLongConverter.java | 4 +- .../converter/ResultSetToStringConverter.java | 4 +- .../converter/ResultSetToUuidConverter.java | 4 +- .../cql/converter/RowToArrayConverter.java | 4 +- .../cql/converter/RowToListConverter.java | 6 +- .../core/cql/converter/RowToMapConverter.java | 6 +- .../generator/CreateTableCqlGenerator.java | 4 +- .../core/cql/generator/OptionRenderUtil.java | 4 +- .../keyspace/AlterKeyspaceSpecification.java | 4 - .../cql/keyspace/ColumnSpecification.java | 3 +- .../ColumnTypeChangeSpecification.java | 4 +- .../keyspace/CreateIndexSpecification.java | 4 +- .../keyspace/CreateKeyspaceSpecification.java | 37 ++++++++- .../keyspace/CreateTableSpecification.java | 1 + .../cql/keyspace/DataCenterReplication.java | 13 ++- .../core/cql/keyspace/DefaultOption.java | 3 +- .../keyspace/DropKeyspaceSpecification.java | 37 ++++++++- .../core/cql/keyspace/FieldSpecification.java | 4 +- .../core/cql/keyspace/IndexDescriptor.java | 1 + .../cql/keyspace/IndexNameSpecification.java | 1 + .../keyspace/KeyspaceActionSpecification.java | 36 +++++++- .../KeyspaceOptionsSpecification.java | 38 ++++++++- .../keyspace/RenameColumnSpecification.java | 1 + .../cql/keyspace/TableNameSpecification.java | 1 + .../keyspace/TableOptionsSpecification.java | 5 +- .../core/cql/keyspace/TableSpecification.java | 8 +- .../keyspace/UserTypeNameSpecification.java | 4 +- .../DefaultBridgedReactiveSession.java | 22 +++-- .../cql/session/DefaultSessionFactory.java | 4 +- .../init/ResourceKeyspacePopulator.java | 4 +- .../core/cql/session/init/ScriptUtils.java | 7 +- .../lookup/AbstractRoutingSessionFactory.java | 4 +- .../CachedPreparedStatementCreator.java | 8 +- .../support/MapPreparedStatementCache.java | 38 ++++++++- .../core/cql/util/StatementBuilder.java | 8 +- .../cassandra/core/cql/util/TermFactory.java | 4 +- .../core/mapping/PropertyMapping.java | 47 ++++++++++- .../data/cassandra/core/query/Columns.java | 82 ++++++++++++++++--- .../data/cassandra/core/query/Criteria.java | 16 ++-- .../core/query/CriteriaDefinition.java | 42 +++++++++- .../data/cassandra/core/query/Query.java | 14 ++-- .../data/cassandra/core/query/Update.java | 28 ++++--- .../query/CassandraQueryExecution.java | 78 ++++++++++++------ .../CassandraRepositoryQuerySupport.java | 9 +- .../repository/query/ProjectionUtil.java | 7 +- .../query/QueryStatementCreator.java | 8 +- .../ReactiveCassandraQueryExecution.java | 59 +++++++++---- .../repository/support/InsertUtil.java | 64 --------------- 121 files changed, 1162 insertions(+), 565 deletions(-) delete mode 100644 spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/InsertUtil.java diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/KeyspaceActionSpecificationFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/KeyspaceActionSpecificationFactory.java index 73b168398..0064a4adc 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/KeyspaceActionSpecificationFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/KeyspaceActionSpecificationFactory.java @@ -15,7 +15,6 @@ */ package org.springframework.data.cassandra.config; -import lombok.RequiredArgsConstructor; import java.util.ArrayList; import java.util.HashMap; @@ -41,7 +40,6 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @author Mark Paluch * @since 2.0 */ -@RequiredArgsConstructor class KeyspaceActionSpecificationFactory { private final CqlIdentifier name; @@ -54,6 +52,16 @@ class KeyspaceActionSpecificationFactory { private final boolean durableWrites; + KeyspaceActionSpecificationFactory(CqlIdentifier name, List replications, + ReplicationStrategy replicationStrategy, long replicationFactor, boolean durableWrites) { + + this.name = name; + this.replications = replications; + this.replicationStrategy = replicationStrategy; + this.replicationFactor = replicationFactor; + this.durableWrites = durableWrites; + } + /** * Create a new {@link KeyspaceActionSpecificationFactoryBuilder} to configure a new * {@link KeyspaceActionSpecificationFactory}. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/KeyspaceActions.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/KeyspaceActions.java index cc8c2ff6e..3c4e2480b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/KeyspaceActions.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/KeyspaceActions.java @@ -15,12 +15,11 @@ */ package org.springframework.data.cassandra.config; -import lombok.Value; - import java.util.Arrays; import java.util.List; import org.springframework.data.cassandra.core.cql.keyspace.KeyspaceActionSpecification; +import org.springframework.util.ObjectUtils; /** * Collection of {@link KeyspaceActionSpecification}s. Wraps none, one or multiple keyspace actions (creates, drops). @@ -28,8 +27,7 @@ import org.springframework.data.cassandra.core.cql.keyspace.KeyspaceActionSpecif * @author Mark Paluch * @since 2.0 */ -@Value -public class KeyspaceActions { +public final class KeyspaceActions { private final List actions; @@ -40,4 +38,45 @@ public class KeyspaceActions { public KeyspaceActions(List actions) { this.actions = actions; } + + public List getActions() { + return this.actions; + } + + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof KeyspaceActions)) { + return false; + } + + KeyspaceActions that = (KeyspaceActions) o; + return ObjectUtils.nullSafeEquals(actions, that.actions); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + return ObjectUtils.nullSafeHashCode(actions); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "KeyspaceActions(actions=" + this.getActions() + ")"; + } } 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 3e6387d40..e550fb4c4 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 @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.Value; - import java.util.Collections; import java.util.List; import java.util.function.Consumer; @@ -929,16 +927,16 @@ public class AsyncCassandraTemplate } } - @Value class AsyncStatementCallback implements AsyncSessionCallback, CqlProvider { - @lombok.NonNull SimpleStatement statement; + SimpleStatement statement; AsyncStatementCallback(SimpleStatement statement) { this.statement = statement; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see org.springframework.data.cassandra.core.cql.AsyncSessionCallback#doInSession(com.datastax.oss.driver.api.core.CqlSession) */ @Override @@ -949,7 +947,8 @@ public class AsyncCassandraTemplate : exceptionTranslator.translateExceptionIfPossible(e)); } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see org.springframework.data.cassandra.core.cql.CqlProvider#getCql() */ @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java index be1e2ff15..a8a046c65 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.Value; - import java.util.List; import java.util.function.Consumer; import java.util.function.Function; @@ -964,12 +962,16 @@ public class CassandraTemplate implements CassandraOperations, ApplicationEventP return object; } - @Value static class StatementCallback implements SessionCallback, CqlProvider { - @lombok.NonNull SimpleStatement statement; + private final SimpleStatement statement; - /* (non-Javadoc) + StatementCallback(SimpleStatement statement) { + this.statement = statement; + } + + /* + * (non-Javadoc) * @see org.springframework.data.cassandra.core.cql.SessionCallback#doInSession(org.springframework.data.cassandra.Session) */ @Override @@ -977,7 +979,8 @@ public class CassandraTemplate implements CassandraOperations, ApplicationEventP return WriteResult.of(session.execute(this.statement)); } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see org.springframework.data.cassandra.core.cql.CqlProvider#getCql() */ @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/DeleteOptions.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/DeleteOptions.java index 123cce888..180ef7248 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/DeleteOptions.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/DeleteOptions.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.EqualsAndHashCode; - import java.time.Duration; import java.time.Instant; import java.util.concurrent.TimeUnit; @@ -27,6 +25,7 @@ import org.springframework.data.cassandra.core.query.CriteriaDefinition; import org.springframework.data.cassandra.core.query.Filter; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; import com.datastax.oss.driver.api.core.ConsistencyLevel; @@ -36,7 +35,6 @@ import com.datastax.oss.driver.api.core.ConsistencyLevel; * @author Mark Paluch * @since 2.2 */ -@EqualsAndHashCode(callSuper = true) public class DeleteOptions extends WriteOptions { private static final DeleteOptions EMPTY = new DeleteOptionsBuilder().build(); @@ -99,6 +97,45 @@ public class DeleteOptions extends WriteOptions { return ifCondition; } + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof DeleteOptions)) { + return false; + } + + if (!super.equals(o)) { + return false; + } + + DeleteOptions that = (DeleteOptions) o; + if (ifExists != that.ifExists) { + return false; + } + + return ObjectUtils.nullSafeEquals(ifCondition, that.ifCondition); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + (ifExists ? 1 : 0); + result = 31 * result + ObjectUtils.nullSafeHashCode(ifCondition); + return result; + } + /** * Builder for {@link DeleteOptions}. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/EntityOperations.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/EntityOperations.java index 9f44bf041..2d4c979af 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/EntityOperations.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/EntityOperations.java @@ -15,11 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; - import org.springframework.core.convert.ConversionService; import org.springframework.data.cassandra.core.cql.util.StatementBuilder; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; @@ -46,10 +41,14 @@ import com.datastax.oss.driver.api.querybuilder.update.Update; * @see ReactiveCassandraTemplate * @since 2.2 */ -@RequiredArgsConstructor class EntityOperations { - @NonNull @Getter(AccessLevel.PROTECTED) private final MappingContext, CassandraPersistentProperty> mappingContext; + private final MappingContext, CassandraPersistentProperty> mappingContext; + + public EntityOperations( + MappingContext, CassandraPersistentProperty> mappingContext) { + this.mappingContext = mappingContext; + } /** * Creates a new {@link Entity} for the given bean. @@ -100,6 +99,11 @@ class EntityOperations { return getRequiredPersistentEntity(entityClass).getTableName(); } + + protected MappingContext, CassandraPersistentProperty> getMappingContext() { + return this.mappingContext; + } + /** * A representation of information about an entity. */ @@ -196,11 +200,15 @@ class EntityOperations { } - @RequiredArgsConstructor(access = AccessLevel.PROTECTED) private static class MappedEntity implements Entity { - private final @NonNull CassandraPersistentEntity entity; - private final @NonNull PersistentPropertyAccessor propertyAccessor; + private final CassandraPersistentEntity entity; + private final PersistentPropertyAccessor propertyAccessor; + + protected MappedEntity(CassandraPersistentEntity entity, PersistentPropertyAccessor propertyAccessor) { + this.entity = entity; + this.propertyAccessor = propertyAccessor; + } private static MappedEntity of(T bean, MappingContext, CassandraPersistentProperty> context) { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableDeleteOperationSupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableDeleteOperationSupport.java index 78b5cffa1..bafbc13fd 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableDeleteOperationSupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableDeleteOperationSupport.java @@ -15,11 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; - import org.springframework.data.cassandra.core.query.Query; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -34,10 +29,13 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @see org.springframework.data.cassandra.core.query.Query * @since 2.1 */ -@RequiredArgsConstructor class ExecutableDeleteOperationSupport implements ExecutableDeleteOperation { - private final @NonNull CassandraTemplate template; + private final CassandraTemplate template; + + public ExecutableDeleteOperationSupport(CassandraTemplate template) { + this.template = template; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ExecutableDeleteOperation#remove(java.lang.Class) @@ -50,17 +48,23 @@ class ExecutableDeleteOperationSupport implements ExecutableDeleteOperation { return new ExecutableDeleteSupport(this.template, domainType, Query.empty(), null); } - @RequiredArgsConstructor - @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) static class ExecutableDeleteSupport implements ExecutableDelete, TerminatingDelete { - @NonNull CassandraTemplate template; + private final CassandraTemplate template; - @NonNull Class domainType; + private final Class domainType; - @NonNull Query query; + private final Query query; - @Nullable CqlIdentifier tableName; + @Nullable private final CqlIdentifier tableName; + + public ExecutableDeleteSupport(CassandraTemplate template, Class domainType, Query query, + CqlIdentifier tableName) { + this.template = template; + this.domainType = domainType; + this.query = query; + this.tableName = tableName; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ExecutableDeleteOperation.DeleteWithTable#inTable(org.springframework.data.cassandra.core.cql.CqlIdentifier) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableInsertOperationSupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableInsertOperationSupport.java index 1bea814d8..19e70cb56 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableInsertOperationSupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableInsertOperationSupport.java @@ -15,10 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -32,10 +28,13 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @see org.springframework.data.cassandra.core.ExecutableInsertOperation * @since 2.1 */ -@RequiredArgsConstructor class ExecutableInsertOperationSupport implements ExecutableInsertOperation { - private final @NonNull CassandraTemplate template; + private final CassandraTemplate template; + + ExecutableInsertOperationSupport(CassandraTemplate template) { + this.template = template; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ExecutableInsertOperation#insert(java.lang.Class) @@ -48,17 +47,23 @@ class ExecutableInsertOperationSupport implements ExecutableInsertOperation { return new ExecutableInsertSupport<>(this.template, domainType, InsertOptions.empty(), null); } - @RequiredArgsConstructor - @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) static class ExecutableInsertSupport implements ExecutableInsert { - @NonNull CassandraTemplate template; + private final CassandraTemplate template; - @NonNull Class domainType; + private final Class domainType; - @NonNull InsertOptions insertOptions; + private final InsertOptions insertOptions; - @Nullable CqlIdentifier tableName; + @Nullable private final CqlIdentifier tableName; + + public ExecutableInsertSupport(CassandraTemplate template, Class domainType, InsertOptions insertOptions, + CqlIdentifier tableName) { + this.template = template; + this.domainType = domainType; + this.insertOptions = insertOptions; + this.tableName = tableName; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ExecutableInsertOperation.InsertWithTable#inTable(org.springframework.data.cassandra.core.cql.CqlIdentifier) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableSelectOperationSupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableSelectOperationSupport.java index e823f3f1d..737865a03 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableSelectOperationSupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableSelectOperationSupport.java @@ -15,11 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; - import java.util.List; import java.util.stream.Stream; @@ -39,10 +34,13 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @see org.springframework.data.cassandra.core.query.Query * @since 2.1 */ -@RequiredArgsConstructor class ExecutableSelectOperationSupport implements ExecutableSelectOperation { - private final @NonNull CassandraTemplate template; + private final CassandraTemplate template; + + public ExecutableSelectOperationSupport(CassandraTemplate template) { + this.template = template; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ExecutableSelectOperation#query(java.lang.Class) @@ -55,19 +53,26 @@ class ExecutableSelectOperationSupport implements ExecutableSelectOperation { return new ExecutableSelectSupport<>(this.template, domainType, domainType, Query.empty(), null); } - @RequiredArgsConstructor - @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) static class ExecutableSelectSupport implements ExecutableSelect { - @NonNull CassandraTemplate template; + private final CassandraTemplate template; - @NonNull Class domainType; + private final Class domainType; - @NonNull Class returnType; + private final Class returnType; - @NonNull Query query; + private final Query query; - @Nullable CqlIdentifier tableName; + private final @Nullable CqlIdentifier tableName; + + public ExecutableSelectSupport(CassandraTemplate template, Class domainType, Class returnType, Query query, + CqlIdentifier tableName) { + this.template = template; + this.domainType = domainType; + this.returnType = returnType; + this.query = query; + this.tableName = tableName; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ExecutableSelectOperation.SelectWithTable#inTable(org.springframework.data.cassandra.core.cql.CqlIdentifier) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableUpdateOperationSupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableUpdateOperationSupport.java index a01180324..4fbd3eadf 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableUpdateOperationSupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ExecutableUpdateOperationSupport.java @@ -15,11 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; - import org.springframework.data.cassandra.core.query.Query; import org.springframework.data.cassandra.core.query.Update; import org.springframework.lang.Nullable; @@ -36,10 +31,13 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @see org.springframework.data.cassandra.core.query.Update * @since 2.1 */ -@RequiredArgsConstructor class ExecutableUpdateOperationSupport implements ExecutableUpdateOperation { - private final @NonNull CassandraTemplate template; + private final CassandraTemplate template; + + public ExecutableUpdateOperationSupport(CassandraTemplate template) { + this.template = template; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ExecutableUpdateOperation#update(java.lang.Class) @@ -52,17 +50,23 @@ class ExecutableUpdateOperationSupport implements ExecutableUpdateOperation { return new ExecutableUpdateSupport(this.template, domainType, Query.empty(), null); } - @RequiredArgsConstructor - @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) static class ExecutableUpdateSupport implements ExecutableUpdate, TerminatingUpdate { - @NonNull CassandraTemplate template; + private final CassandraTemplate template; - @NonNull Class domainType; + private final Class domainType; - @NonNull Query query; + private final Query query; - @Nullable CqlIdentifier tableName; + private final @Nullable CqlIdentifier tableName; + + public ExecutableUpdateSupport(CassandraTemplate template, Class domainType, Query query, + CqlIdentifier tableName) { + this.template = template; + this.domainType = domainType; + this.query = query; + this.tableName = tableName; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ExecutableUpdateOperation.UpdateWithTable#inTable(org.springframework.data.cassandra.core.cql.CqlIdentifier) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/InsertOptions.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/InsertOptions.java index fb936e47d..b432a43ce 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/InsertOptions.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/InsertOptions.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.EqualsAndHashCode; - import java.time.Duration; import java.time.Instant; import java.util.concurrent.TimeUnit; @@ -34,7 +32,6 @@ import com.datastax.oss.driver.api.core.ConsistencyLevel; * @author Lukasz Antoniak * @since 2.0 */ -@EqualsAndHashCode(callSuper = true) public class InsertOptions extends WriteOptions { private static final InsertOptions EMPTY = new InsertOptionsBuilder().build(); @@ -98,6 +95,46 @@ public class InsertOptions extends WriteOptions { return this.insertNulls; } + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof InsertOptions)) { + return false; + } + + if (!super.equals(o)) { + return false; + } + + InsertOptions that = (InsertOptions) o; + + if (ifNotExists != that.ifNotExists) { + return false; + } + + return insertNulls == that.insertNulls; + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + (ifNotExists ? 1 : 0); + result = 31 * result + (insertNulls ? 1 : 0); + return result; + } + /** * Builder for {@link InsertOptions}. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java index 072301cfe..bf2061149 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java @@ -15,7 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.Value; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.publisher.SynchronousSink; @@ -914,12 +913,16 @@ public class ReactiveCassandraTemplate return Mono.just(object); } - @Value static class StatementCallback implements ReactiveSessionCallback, CqlProvider { - @lombok.NonNull SimpleStatement statement; + private final SimpleStatement statement; - /* (non-Javadoc) + StatementCallback(SimpleStatement statement) { + this.statement = statement; + } + + /* + * (non-Javadoc) * @see org.springframework.data.cassandra.core.cql.ReactiveSessionCallback#doInSession(org.springframework.data.cassandra.ReactiveSession) */ @Override @@ -927,7 +930,8 @@ public class ReactiveCassandraTemplate return session.execute(this.statement).flatMap(StatementCallback::toWriteResult); } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see org.springframework.data.cassandra.core.cql.CqlProvider#getCql() */ @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveDeleteOperationSupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveDeleteOperationSupport.java index 796b1de5c..487fed8bf 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveDeleteOperationSupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveDeleteOperationSupport.java @@ -15,10 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; import reactor.core.publisher.Mono; import org.springframework.data.cassandra.core.query.Query; @@ -35,10 +31,13 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @see org.springframework.data.cassandra.core.query.Query * @since 2.1 */ -@RequiredArgsConstructor class ReactiveDeleteOperationSupport implements ReactiveDeleteOperation { - private final @NonNull ReactiveCassandraTemplate template; + private final ReactiveCassandraTemplate template; + + public ReactiveDeleteOperationSupport(ReactiveCassandraTemplate template) { + this.template = template; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ReactiveDeleteOperation#remove(java.lang.Class) @@ -51,17 +50,23 @@ class ReactiveDeleteOperationSupport implements ReactiveDeleteOperation { return new ReactiveDeleteSupport(this.template, domainType, Query.empty(), null); } - @RequiredArgsConstructor - @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) static class ReactiveDeleteSupport implements ReactiveDelete, TerminatingDelete { - @NonNull ReactiveCassandraTemplate template; + private final ReactiveCassandraTemplate template; - @NonNull Class domainType; + private final Class domainType; - @NonNull Query query; + private final Query query; - @Nullable CqlIdentifier tableName; + private final @Nullable CqlIdentifier tableName; + + public ReactiveDeleteSupport(ReactiveCassandraTemplate template, Class domainType, Query query, + CqlIdentifier tableName) { + this.template = template; + this.domainType = domainType; + this.query = query; + this.tableName = tableName; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ReactiveDeleteOperation.DeleteWithTable#inTable(org.springframework.data.cassandra.core.cql.CqlIdentifier) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveInsertOperationSupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveInsertOperationSupport.java index 227d9c93f..1a134f1e6 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveInsertOperationSupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveInsertOperationSupport.java @@ -15,10 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; import reactor.core.publisher.Mono; import org.springframework.lang.Nullable; @@ -32,10 +28,13 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @author Mark Paluch * @since 2.1 */ -@RequiredArgsConstructor class ReactiveInsertOperationSupport implements ReactiveInsertOperation { - private final @NonNull ReactiveCassandraTemplate template; + private final ReactiveCassandraTemplate template; + + public ReactiveInsertOperationSupport(ReactiveCassandraTemplate template) { + this.template = template; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ReactiveInsertOperation#insert(java.lang.Class) @@ -48,17 +47,23 @@ class ReactiveInsertOperationSupport implements ReactiveInsertOperation { return new ReactiveInsertSupport<>(this.template, domainType, InsertOptions.empty(), null); } - @RequiredArgsConstructor - @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) static class ReactiveInsertSupport implements ReactiveInsert { - @NonNull ReactiveCassandraTemplate template; + private final ReactiveCassandraTemplate template; - @NonNull Class domainType; + private final Class domainType; - @NonNull InsertOptions insertOptions; + private final InsertOptions insertOptions; - @Nullable CqlIdentifier tableName; + private final @Nullable CqlIdentifier tableName; + + public ReactiveInsertSupport(ReactiveCassandraTemplate template, Class domainType, InsertOptions insertOptions, + CqlIdentifier tableName) { + this.template = template; + this.domainType = domainType; + this.insertOptions = insertOptions; + this.tableName = tableName; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ReactiveInsertOperation.InsertWithTable#inTable(org.springframework.data.cassandra.core.cql.CqlIdentifier) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveSelectOperationSupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveSelectOperationSupport.java index 96bb693cc..26d502a4d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveSelectOperationSupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveSelectOperationSupport.java @@ -15,10 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -37,10 +33,13 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @see org.springframework.data.cassandra.core.query.Query * @since 2.1 */ -@RequiredArgsConstructor class ReactiveSelectOperationSupport implements ReactiveSelectOperation { - private final @NonNull ReactiveCassandraTemplate template; + private final ReactiveCassandraTemplate template; + + public ReactiveSelectOperationSupport(ReactiveCassandraTemplate template) { + this.template = template; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ReactiveSelectOperation#query(java.lang.Class) @@ -53,19 +52,26 @@ class ReactiveSelectOperationSupport implements ReactiveSelectOperation { return new ReactiveSelectSupport<>(this.template, domainType, domainType, Query.empty(), null); } - @RequiredArgsConstructor - @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) static class ReactiveSelectSupport implements ReactiveSelect { - @NonNull ReactiveCassandraTemplate template; + private final ReactiveCassandraTemplate template; - @NonNull Class domainType; + private final Class domainType; - @NonNull Class returnType; + private final Class returnType; - @NonNull Query query; + private final Query query; - @Nullable CqlIdentifier tableName; + private final @Nullable CqlIdentifier tableName; + + public ReactiveSelectSupport(ReactiveCassandraTemplate template, Class domainType, Class returnType, + Query query, CqlIdentifier tableName) { + this.template = template; + this.domainType = domainType; + this.returnType = returnType; + this.query = query; + this.tableName = tableName; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ReactiveSelectOperation.SelectWithTable#inTable(org.springframework.data.cassandra.core.cql.CqlIdentifier) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveUpdateOperationSupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveUpdateOperationSupport.java index 8a671d78d..0ff22afed 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveUpdateOperationSupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveUpdateOperationSupport.java @@ -15,10 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.AccessLevel; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; -import lombok.experimental.FieldDefaults; import reactor.core.publisher.Mono; import org.springframework.data.cassandra.core.query.Query; @@ -37,10 +33,13 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @see org.springframework.data.cassandra.core.query.Update * @since 2.1 */ -@RequiredArgsConstructor class ReactiveUpdateOperationSupport implements ReactiveUpdateOperation { - private final @NonNull ReactiveCassandraTemplate template; + private final ReactiveCassandraTemplate template; + + public ReactiveUpdateOperationSupport(ReactiveCassandraTemplate template) { + this.template = template; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ReactiveUpdateOperation#update(java.lang.Class) @@ -53,17 +52,23 @@ class ReactiveUpdateOperationSupport implements ReactiveUpdateOperation { return new ReactiveUpdateSupport(this.template, domainType, Query.empty(), null); } - @RequiredArgsConstructor - @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) static class ReactiveUpdateSupport implements ReactiveUpdate, TerminatingUpdate { - @NonNull ReactiveCassandraTemplate template; + private final ReactiveCassandraTemplate template; - @NonNull Class domainType; + private final Class domainType; - @NonNull Query query; + private final Query query; - @Nullable CqlIdentifier tableName; + private final @Nullable CqlIdentifier tableName; + + public ReactiveUpdateSupport(ReactiveCassandraTemplate template, Class domainType, Query query, + CqlIdentifier tableName) { + this.template = template; + this.domainType = domainType; + this.query = query; + this.tableName = tableName; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.core.ReactiveUpdateOperation.UpdateWithTable#inTable(org.springframework.data.cassandra.core.cql.CqlIdentifier) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/UpdateOptions.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/UpdateOptions.java index 59c5cfa10..bf8e13ab4 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/UpdateOptions.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/UpdateOptions.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core; -import lombok.EqualsAndHashCode; - import java.time.Duration; import java.time.Instant; import java.util.concurrent.TimeUnit; @@ -27,6 +25,7 @@ import org.springframework.data.cassandra.core.query.CriteriaDefinition; import org.springframework.data.cassandra.core.query.Filter; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; import com.datastax.oss.driver.api.core.ConsistencyLevel; @@ -37,7 +36,6 @@ import com.datastax.oss.driver.api.core.ConsistencyLevel; * @author Lukasz Antoniak * @since 2.0 */ -@EqualsAndHashCode(callSuper = true) public class UpdateOptions extends WriteOptions { private static final UpdateOptions EMPTY = new UpdateOptionsBuilder().build(); @@ -102,6 +100,46 @@ public class UpdateOptions extends WriteOptions { return ifCondition; } + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof UpdateOptions)) { + return false; + } + + if (!super.equals(o)) { + return false; + } + + UpdateOptions that = (UpdateOptions) o; + + if (ifExists != that.ifExists) { + return false; + } + + return ObjectUtils.nullSafeEquals(ifCondition, that.ifCondition); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + (ifExists ? 1 : 0); + result = 31 * result + ObjectUtils.nullSafeHashCode(ifCondition); + return result; + } + /** * Builder for {@link UpdateOptions}. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/AbstractCassandraConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/AbstractCassandraConverter.java index e2bb05713..f4ce59d25 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/AbstractCassandraConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/AbstractCassandraConverter.java @@ -15,7 +15,6 @@ */ package org.springframework.data.cassandra.core.convert; -import lombok.NonNull; import java.util.Collections; @@ -66,7 +65,7 @@ public abstract class AbstractCassandraConverter implements CassandraConverter, this.instantiators = instantiators; } - @NonNull + @Override public ConversionService getConversionService() { return this.conversionService; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java index 119bfb62c..58c12d3d0 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core.convert; -import lombok.AllArgsConstructor; - import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -27,6 +25,7 @@ import java.util.function.Function; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.context.ApplicationContext; @@ -1156,11 +1155,14 @@ public class MappingCassandraConverter extends AbstractCassandraConverter * @author Mark Paluch * @since 1.5.1 */ - @AllArgsConstructor class MappingAndConvertingValueProvider implements CassandraValueProvider { private final CassandraValueProvider parent; + public MappingAndConvertingValueProvider(CassandraValueProvider parent) { + this.parent = parent; + } + /* (non-Javadoc) * @see org.springframework.data.cassandra.core.convert.CassandraValueProvider#hasProperty(org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty) */ diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ArgumentPreparedStatementBinder.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ArgumentPreparedStatementBinder.java index d80eb8023..3ee57887a 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ArgumentPreparedStatementBinder.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ArgumentPreparedStatementBinder.java @@ -15,12 +15,12 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.lang.Nullable; - import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.BoundStatement; import com.datastax.oss.driver.api.core.cql.PreparedStatement; +import org.springframework.lang.Nullable; + /** * Simple adapter for {@link PreparedStatementBinder} that applies a given array of arguments. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncCqlOperations.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncCqlOperations.java index bae8b162c..317f5341d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncCqlOperations.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncCqlOperations.java @@ -18,16 +18,16 @@ package org.springframework.data.cassandra.core.cql; import java.util.List; import java.util.Map; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.IncorrectResultSizeDataAccessException; -import org.springframework.lang.Nullable; -import org.springframework.util.concurrent.ListenableFuture; - import com.datastax.oss.driver.api.core.cql.AsyncResultSet; import com.datastax.oss.driver.api.core.cql.PreparedStatement; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Statement; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.IncorrectResultSizeDataAccessException; +import org.springframework.lang.Nullable; +import org.springframework.util.concurrent.ListenableFuture; + /** * Interface specifying a basic set of CQL asynchronously executed operations. Exposes similar methods as * {@link CqlTemplate}, but returns result handles or accepts callbacks as opposed to concrete results. Implemented by diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncCqlTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncCqlTemplate.java index f58698704..2c2efee3b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncCqlTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncCqlTemplate.java @@ -22,6 +22,13 @@ import java.util.concurrent.CompletionStage; import java.util.concurrent.ExecutionException; import java.util.function.Function; +import com.datastax.oss.driver.api.core.CqlSession; +import com.datastax.oss.driver.api.core.DriverException; +import com.datastax.oss.driver.api.core.cql.AsyncResultSet; +import com.datastax.oss.driver.api.core.cql.PreparedStatement; +import com.datastax.oss.driver.api.core.cql.ResultSet; +import com.datastax.oss.driver.api.core.cql.Statement; + import org.springframework.dao.DataAccessException; import org.springframework.dao.support.DataAccessUtils; import org.springframework.dao.support.PersistenceExceptionTranslator; @@ -32,13 +39,6 @@ import org.springframework.util.Assert; import org.springframework.util.concurrent.ListenableFuture; import org.springframework.util.concurrent.SettableListenableFuture; -import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.DriverException; -import com.datastax.oss.driver.api.core.cql.AsyncResultSet; -import com.datastax.oss.driver.api.core.cql.PreparedStatement; -import com.datastax.oss.driver.api.core.cql.ResultSet; -import com.datastax.oss.driver.api.core.cql.Statement; - /** * This is the central class in the CQL core package for asynchronous Cassandra data access. It simplifies the * use of CQL and helps to avoid common errors. It executes core CQL workflow, leaving application code to provide CQL diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncPreparedStatementCreator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncPreparedStatementCreator.java index 23dd4c903..e917a318b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncPreparedStatementCreator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncPreparedStatementCreator.java @@ -15,12 +15,12 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.util.concurrent.ListenableFuture; - import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.PreparedStatement; +import org.springframework.util.concurrent.ListenableFuture; + /** * One of the two central callback interfaces used by the {@link AsyncCqlTemplate} class. This interface prepares a CQL * statement returning a {@link org.springframework.util.concurrent.ListenableFuture} given a {@link CqlSession}, diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncResultSetExtractor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncResultSetExtractor.java index 2abad67bf..941d5cd40 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncResultSetExtractor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncResultSetExtractor.java @@ -15,13 +15,13 @@ */ package org.springframework.data.cassandra.core.cql; +import com.datastax.oss.driver.api.core.DriverException; +import com.datastax.oss.driver.api.core.cql.AsyncResultSet; + import org.springframework.dao.DataAccessException; import org.springframework.lang.Nullable; import org.springframework.util.concurrent.ListenableFuture; -import com.datastax.oss.driver.api.core.DriverException; -import com.datastax.oss.driver.api.core.cql.AsyncResultSet; - /** * Callback interface used by {@link AsyncCqlTemplate}'s query methods. Implementations of this interface perform the * actual work of extracting results from a {@link AsyncResultSet}, but don't need to worry about exception handling. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncResultStream.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncResultStream.java index 7ee0ed03b..df76dda21 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncResultStream.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncResultStream.java @@ -20,13 +20,13 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; import java.util.stream.Collector; +import com.datastax.oss.driver.api.core.cql.AsyncResultSet; +import com.datastax.oss.driver.api.core.cql.Row; + import org.springframework.util.Assert; import org.springframework.util.concurrent.ListenableFuture; import org.springframework.util.concurrent.SettableListenableFuture; -import com.datastax.oss.driver.api.core.cql.AsyncResultSet; -import com.datastax.oss.driver.api.core.cql.Row; - /** * Asynchronous supplied sequence of elements supporting sequential operations over a {@link AsyncResultSet a result * set}. An asynchronous stream represents a pipeline of operations to process a {@link AsyncResultSet}. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncRowMapperResultSetExtractor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncRowMapperResultSetExtractor.java index c98c38b8d..11fab7008 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncRowMapperResultSetExtractor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncRowMapperResultSetExtractor.java @@ -18,13 +18,13 @@ package org.springframework.data.cassandra.core.cql; import java.util.List; import java.util.stream.Collectors; +import com.datastax.oss.driver.api.core.DriverException; +import com.datastax.oss.driver.api.core.cql.AsyncResultSet; + import org.springframework.dao.DataAccessException; import org.springframework.util.Assert; import org.springframework.util.concurrent.ListenableFuture; -import com.datastax.oss.driver.api.core.DriverException; -import com.datastax.oss.driver.api.core.cql.AsyncResultSet; - /** * Adapter implementation of the {@link ResultSetExtractor} interface that delegates to a {@link RowMapper} which is * supposed to create an object for each row. Each object is added to the results List of this diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncSessionCallback.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncSessionCallback.java index b88251b98..088853860 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncSessionCallback.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/AsyncSessionCallback.java @@ -15,12 +15,12 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.dao.DataAccessException; -import org.springframework.util.concurrent.ListenableFuture; - import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.DriverException; +import org.springframework.dao.DataAccessException; +import org.springframework.util.concurrent.ListenableFuture; + /** * Generic callback interface for code that operates asynchronously on a Cassandra {@link CqlSession}. Allows to execute * any number of operations on a single session, using any type and number of statements. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CachedPreparedStatementCreator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CachedPreparedStatementCreator.java index 4b7113b0d..51616a252 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CachedPreparedStatementCreator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CachedPreparedStatementCreator.java @@ -18,15 +18,14 @@ package org.springframework.data.cassandra.core.cql; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.PreparedStatement; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.util.Assert; /** * This {@link PreparedStatementCreator} maintains a static cache of all prepared statements for the duration of the JVM diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CassandraAccessor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CassandraAccessor.java index 843ed641f..08513b1f7 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CassandraAccessor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CassandraAccessor.java @@ -18,6 +18,11 @@ package org.springframework.data.cassandra.core.cql; import java.util.Map; import java.util.Optional; +import com.datastax.oss.driver.api.core.ConsistencyLevel; +import com.datastax.oss.driver.api.core.CqlSession; +import com.datastax.oss.driver.api.core.cql.SimpleStatement; +import com.datastax.oss.driver.api.core.cql.Statement; +import com.datastax.oss.driver.api.core.retry.RetryPolicy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,12 +33,6 @@ import org.springframework.data.cassandra.core.cql.session.DefaultSessionFactory import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import com.datastax.oss.driver.api.core.ConsistencyLevel; -import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.cql.SimpleStatement; -import com.datastax.oss.driver.api.core.cql.Statement; -import com.datastax.oss.driver.api.core.retry.RetryPolicy; - /** * {@link CassandraAccessor} provides access to a Cassandra {@link SessionFactory} and the * {@link CassandraExceptionTranslator}. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CassandraExceptionTranslator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CassandraExceptionTranslator.java index 6c6f138c3..d8773d0a6 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CassandraExceptionTranslator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CassandraExceptionTranslator.java @@ -21,6 +21,12 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import com.datastax.oss.driver.api.core.AllNodesFailedException; +import com.datastax.oss.driver.api.core.DriverException; +import com.datastax.oss.driver.api.core.auth.AuthenticationException; +import com.datastax.oss.driver.api.core.metadata.Node; +import com.datastax.oss.driver.api.core.servererrors.*; + import org.springframework.dao.DataAccessException; import org.springframework.dao.DataAccessResourceFailureException; import org.springframework.dao.TransientDataAccessResourceException; @@ -30,12 +36,6 @@ import org.springframework.lang.Nullable; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; -import com.datastax.oss.driver.api.core.AllNodesFailedException; -import com.datastax.oss.driver.api.core.DriverException; -import com.datastax.oss.driver.api.core.auth.AuthenticationException; -import com.datastax.oss.driver.api.core.metadata.Node; -import com.datastax.oss.driver.api.core.servererrors.*; - /** * Simple {@link PersistenceExceptionTranslator} for Cassandra. *

diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ColumnMapRowMapper.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ColumnMapRowMapper.java index 59242e094..d607b373c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ColumnMapRowMapper.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ColumnMapRowMapper.java @@ -17,13 +17,13 @@ package org.springframework.data.cassandra.core.cql; import java.util.Map; -import org.springframework.lang.Nullable; -import org.springframework.util.LinkedCaseInsensitiveMap; - import com.datastax.oss.driver.api.core.cql.ColumnDefinition; import com.datastax.oss.driver.api.core.cql.ColumnDefinitions; import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.lang.Nullable; +import org.springframework.util.LinkedCaseInsensitiveMap; + /** * {@link RowMapper} implementation that creates a {@code java.util.Map} for each row, representing all columns as * key-value pairs: one entry for each column, with the column name as key. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlConstantType.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlConstantType.java index 7538cb4fd..e270f298f 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlConstantType.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlConstantType.java @@ -15,10 +15,10 @@ */ package org.springframework.data.cassandra.core.cql; -import static org.springframework.data.cassandra.core.cql.CqlConstantType.Regex.*; - import java.util.regex.Pattern; +import static org.springframework.data.cassandra.core.cql.CqlConstantType.Regex.*; + public enum CqlConstantType { STRING(STRING_PATTERN), INTEGER(INTEGER_PATTERN), FLOAT(FLOAT_PATTERN), BOOLEAN(BOOLEAN_PATTERN), UUID( diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlExceptionTranslator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlExceptionTranslator.java index 0914977fa..641908a2f 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlExceptionTranslator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlExceptionTranslator.java @@ -15,13 +15,13 @@ */ package org.springframework.data.cassandra.core.cql; +import com.datastax.oss.driver.api.core.DriverException; + import org.springframework.dao.DataAccessException; import org.springframework.dao.support.PersistenceExceptionTranslator; import org.springframework.data.cassandra.core.mapping.UnsupportedCassandraOperationException; import org.springframework.lang.Nullable; -import com.datastax.oss.driver.api.core.DriverException; - /** * Strategy interface for translating between {@link RuntimeException driver exceptions} and Spring's data access * strategy-agnostic {@link DataAccessException} hierarchy. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlIdentifier.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlIdentifier.java index 641ed93a5..898570a57 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlIdentifier.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlIdentifier.java @@ -249,12 +249,12 @@ public final class CqlIdentifier implements Comparable, Serializa return identifier.equals(that.identifier); } - /* (non-Javadoc) - * @see java.lang.Object#hashCode() + /* + * (non-Javadoc) + * @see java.lang.Object#toString() */ @Override public int hashCode() { - int result = identifier.hashCode(); result = 31 * result + (quoted ? 1 : 0); return result; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlOperations.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlOperations.java index 384f86f1e..14f356dcb 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlOperations.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlOperations.java @@ -19,15 +19,15 @@ import java.util.Collection; import java.util.List; import java.util.Map; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.IncorrectResultSizeDataAccessException; -import org.springframework.lang.Nullable; - import com.datastax.oss.driver.api.core.cql.PreparedStatement; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; import com.datastax.oss.driver.api.core.cql.Statement; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.IncorrectResultSizeDataAccessException; +import org.springframework.lang.Nullable; + /** * Interface specifying a basic set of CQL operations. Implemented by {@link CqlTemplate}. Not often used directly, but * a useful option to enhance testability, as it can easily be mocked or stubbed. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlTemplate.java index 227f29652..01a3c71dd 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/CqlTemplate.java @@ -21,12 +21,6 @@ import java.util.Map; import java.util.function.Function; import java.util.stream.StreamSupport; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.support.DataAccessUtils; -import org.springframework.data.cassandra.SessionFactory; -import org.springframework.lang.Nullable; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.PreparedStatement; @@ -35,6 +29,12 @@ import com.datastax.oss.driver.api.core.cql.Row; import com.datastax.oss.driver.api.core.cql.Statement; import com.datastax.oss.driver.api.core.metadata.Node; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.support.DataAccessUtils; +import org.springframework.data.cassandra.SessionFactory; +import org.springframework.lang.Nullable; +import org.springframework.util.Assert; + /** * This is the central class in the CQL core package. It simplifies the use of CQL and helps to avoid common * errors. It executes core CQL workflow, leaving application code to provide CQL and extract results. This class diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ExecutionProfileResolver.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ExecutionProfileResolver.java index 0a57e2545..aed851962 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ExecutionProfileResolver.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ExecutionProfileResolver.java @@ -15,11 +15,11 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.config.DriverExecutionProfile; import com.datastax.oss.driver.api.core.cql.Statement; +import org.springframework.util.Assert; + /** * Resolver for a {@link com.datastax.oss.driver.api.core.config.DriverExecutionProfile} used with * {@link com.datastax.oss.driver.api.core.cql.Statement#setExecutionProfileName(String)} or diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/KeyspaceIdentifier.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/KeyspaceIdentifier.java index 7ffef5ddf..c2cb1268f 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/KeyspaceIdentifier.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/KeyspaceIdentifier.java @@ -17,10 +17,10 @@ package org.springframework.data.cassandra.core.cql; import java.util.regex.Pattern; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.CqlIdentifier; +import org.springframework.util.Assert; + /** * This encapsulates the logic for keyspace identifiers. *

@@ -107,6 +107,10 @@ public final class KeyspaceIdentifier implements Comparable return toCql(); } + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ @Override public int hashCode() { return identifier.hashCode(); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/PreparedStatementCallback.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/PreparedStatementCallback.java index 4238861c7..92ac10d1b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/PreparedStatementCallback.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/PreparedStatementCallback.java @@ -15,13 +15,13 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.dao.DataAccessException; -import org.springframework.lang.Nullable; - import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.PreparedStatement; +import org.springframework.dao.DataAccessException; +import org.springframework.lang.Nullable; + /** * Generic callback interface for code that operates on a {@link PreparedStatement}. Allows to execute any number of * operations on a single {@link PreparedStatement}, for example a single {@link Session#execute(Statement). diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/QueryOptions.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/QueryOptions.java index f189911c2..602b4d669 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/QueryOptions.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/QueryOptions.java @@ -15,13 +15,12 @@ */ package org.springframework.data.cassandra.core.cql; -import lombok.EqualsAndHashCode; - import java.time.Duration; import java.util.concurrent.TimeUnit; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; import com.datastax.oss.driver.api.core.ConsistencyLevel; import com.datastax.oss.driver.api.core.config.DriverExecutionProfile; @@ -33,7 +32,6 @@ import com.datastax.oss.driver.api.core.config.DriverExecutionProfile; * @author David Webb * @author Mark Paluch */ -@EqualsAndHashCode public class QueryOptions { private static final QueryOptions EMPTY = QueryOptions.builder().build(); @@ -156,6 +154,61 @@ public class QueryOptions { return this.tracing; } + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof QueryOptions)) { + return false; + } + + QueryOptions options = (QueryOptions) o; + + if (!ObjectUtils.nullSafeEquals(consistencyLevel, options.consistencyLevel)) { + return false; + } + + if (!ObjectUtils.nullSafeEquals(executionProfileResolver, options.executionProfileResolver)) { + return false; + } + + if (!ObjectUtils.nullSafeEquals(pageSize, options.pageSize)) { + return false; + } + + if (!ObjectUtils.nullSafeEquals(serialConsistencyLevel, options.serialConsistencyLevel)) { + return false; + } + + if (!ObjectUtils.nullSafeEquals(timeout, options.timeout)) { + return false; + } + + return ObjectUtils.nullSafeEquals(tracing, options.tracing); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = ObjectUtils.nullSafeHashCode(consistencyLevel); + result = 31 * result + ObjectUtils.nullSafeHashCode(executionProfileResolver); + result = 31 * result + ObjectUtils.nullSafeHashCode(pageSize); + result = 31 * result + ObjectUtils.nullSafeHashCode(serialConsistencyLevel); + result = 31 * result + ObjectUtils.nullSafeHashCode(timeout); + result = 31 * result + ObjectUtils.nullSafeHashCode(tracing); + return result; + } + /** * Builder for {@link QueryOptions}. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/QueryOptionsUtil.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/QueryOptionsUtil.java index b45c8bd1f..3fac279aa 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/QueryOptionsUtil.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/QueryOptionsUtil.java @@ -17,8 +17,6 @@ package org.springframework.data.cassandra.core.cql; import java.time.Duration; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.cql.Statement; import com.datastax.oss.driver.api.querybuilder.delete.Delete; import com.datastax.oss.driver.api.querybuilder.delete.DeleteSelection; @@ -26,6 +24,8 @@ import com.datastax.oss.driver.api.querybuilder.insert.Insert; import com.datastax.oss.driver.api.querybuilder.update.Update; import com.datastax.oss.driver.api.querybuilder.update.UpdateStart; +import org.springframework.util.Assert; + /** * Utility class to associate {@link QueryOptions} and {@link WriteOptions} with QueryBuilder {@link Statement}s. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveCqlOperations.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveCqlOperations.java index 5257e85c9..6c15e4851 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveCqlOperations.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveCqlOperations.java @@ -15,22 +15,20 @@ */ package org.springframework.data.cassandra.core.cql; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - import java.util.Map; +import com.datastax.oss.driver.api.core.cql.PreparedStatement; +import com.datastax.oss.driver.api.core.cql.Row; +import com.datastax.oss.driver.api.core.cql.Statement; import org.reactivestreams.Publisher; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; import org.springframework.dao.DataAccessException; import org.springframework.dao.IncorrectResultSizeDataAccessException; import org.springframework.data.cassandra.ReactiveResultSet; import org.springframework.lang.Nullable; -import com.datastax.oss.driver.api.core.cql.PreparedStatement; -import com.datastax.oss.driver.api.core.cql.Row; -import com.datastax.oss.driver.api.core.cql.Statement; - /** * Interface specifying a basic set of CQL operations executed in a reactive fashion. Implemented by * {@link ReactiveCqlTemplate}. Not often used directly, but a useful option to enhance testability, as it can easily be diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveCqlTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveCqlTemplate.java index 76a81c3cd..c9d5d437d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveCqlTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveCqlTemplate.java @@ -15,24 +15,10 @@ */ package org.springframework.data.cassandra.core.cql; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - import java.util.Map; import java.util.Optional; import java.util.function.Function; -import org.reactivestreams.Publisher; - -import org.springframework.dao.DataAccessException; -import org.springframework.dao.support.DataAccessUtils; -import org.springframework.data.cassandra.ReactiveResultSet; -import org.springframework.data.cassandra.ReactiveSession; -import org.springframework.data.cassandra.ReactiveSessionFactory; -import org.springframework.data.cassandra.core.cql.session.DefaultReactiveSessionFactory; -import org.springframework.lang.Nullable; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.ConsistencyLevel; import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.BoundStatement; @@ -41,6 +27,18 @@ import com.datastax.oss.driver.api.core.cql.Row; import com.datastax.oss.driver.api.core.cql.SimpleStatement; import com.datastax.oss.driver.api.core.cql.Statement; import com.datastax.oss.driver.api.core.retry.RetryPolicy; +import org.reactivestreams.Publisher; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import org.springframework.dao.DataAccessException; +import org.springframework.dao.support.DataAccessUtils; +import org.springframework.data.cassandra.ReactiveResultSet; +import org.springframework.data.cassandra.ReactiveSession; +import org.springframework.data.cassandra.ReactiveSessionFactory; +import org.springframework.data.cassandra.core.cql.session.DefaultReactiveSessionFactory; +import org.springframework.lang.Nullable; +import org.springframework.util.Assert; /** * This is the central class in the CQL core package for reactive Cassandra data access. It simplifies the use of diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactivePreparedStatementCallback.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactivePreparedStatementCallback.java index ffc763f86..6e7f4e38c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactivePreparedStatementCallback.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactivePreparedStatementCallback.java @@ -15,14 +15,13 @@ */ package org.springframework.data.cassandra.core.cql; +import com.datastax.oss.driver.api.core.DriverException; +import com.datastax.oss.driver.api.core.cql.PreparedStatement; import org.reactivestreams.Publisher; import org.springframework.dao.DataAccessException; import org.springframework.data.cassandra.ReactiveSession; -import com.datastax.oss.driver.api.core.DriverException; -import com.datastax.oss.driver.api.core.cql.PreparedStatement; - /** * Generic callback interface for code that operates on a {@link PreparedStatement}. Allows to execute any number of * operations on a single {@link PreparedStatement}, for example a single {@link ReactiveSession#execute(Statement). diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactivePreparedStatementCreator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactivePreparedStatementCreator.java index b4e697f62..785266da8 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactivePreparedStatementCreator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactivePreparedStatementCreator.java @@ -15,13 +15,12 @@ */ package org.springframework.data.cassandra.core.cql; +import com.datastax.oss.driver.api.core.DriverException; +import com.datastax.oss.driver.api.core.cql.PreparedStatement; import reactor.core.publisher.Mono; import org.springframework.data.cassandra.ReactiveSession; -import com.datastax.oss.driver.api.core.DriverException; -import com.datastax.oss.driver.api.core.cql.PreparedStatement; - /** * One of the two central callback interfaces used by the {@link ReactiveCqlTemplate} class. This interface creates a * {@link PreparedStatement} given a {@link ReactiveSession}, provided by the {@link ReactiveCqlTemplate} class. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveResultSetExtractor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveResultSetExtractor.java index 4d7cfcd96..56c071a40 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveResultSetExtractor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveResultSetExtractor.java @@ -15,13 +15,12 @@ */ package org.springframework.data.cassandra.core.cql; +import com.datastax.oss.driver.api.core.DriverException; import org.reactivestreams.Publisher; import org.springframework.dao.DataAccessException; import org.springframework.data.cassandra.ReactiveResultSet; -import com.datastax.oss.driver.api.core.DriverException; - /** * Callback interface used by {@link ReactiveCqlTemplate}'s query methods. Implementations of this interface perform the * actual work of extracting results from a {@link ReactiveResultSet}, but don't need to worry about exception handling. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveRowMapperResultSetExtractor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveRowMapperResultSetExtractor.java index eb14dcf78..7a2919772 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveRowMapperResultSetExtractor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveRowMapperResultSetExtractor.java @@ -15,14 +15,13 @@ */ package org.springframework.data.cassandra.core.cql; +import com.datastax.oss.driver.api.core.DriverException; import org.reactivestreams.Publisher; import org.springframework.dao.DataAccessException; import org.springframework.data.cassandra.ReactiveResultSet; import org.springframework.util.Assert; -import com.datastax.oss.driver.api.core.DriverException; - /** * Adapter implementation of the {@link ReactiveResultSetExtractor} interface that delegates to a {@link RowMapper} * which is supposed to create an object for each row. Each object is emitted through the {@link Publisher} of this diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveSessionCallback.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveSessionCallback.java index 5f419f2d6..af616d229 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveSessionCallback.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveSessionCallback.java @@ -15,14 +15,13 @@ */ package org.springframework.data.cassandra.core.cql; +import com.datastax.oss.driver.api.core.DriverException; +import com.datastax.oss.driver.api.core.cql.Statement; import org.reactivestreams.Publisher; import org.springframework.dao.DataAccessException; import org.springframework.data.cassandra.ReactiveSession; -import com.datastax.oss.driver.api.core.DriverException; -import com.datastax.oss.driver.api.core.cql.Statement; - /** * Generic callback interface for code that operates on a CQL {@link ReactiveSession}. Allows to execute any number of * operations on a single {@link ReactiveSession}, using any type and number of Statements. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveStatementCallback.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveStatementCallback.java index de489bb64..56217ab3b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveStatementCallback.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ReactiveStatementCallback.java @@ -15,14 +15,13 @@ */ package org.springframework.data.cassandra.core.cql; +import com.datastax.oss.driver.api.core.DriverException; +import com.datastax.oss.driver.api.core.cql.Statement; import org.reactivestreams.Publisher; import org.springframework.dao.DataAccessException; import org.springframework.data.cassandra.ReactiveSession; -import com.datastax.oss.driver.api.core.DriverException; -import com.datastax.oss.driver.api.core.cql.Statement; - /** * Generic callback interface for code that operates on a CQL {@link Statement}. Allows to execute any number of * operations on a single {@link Statement}, for example a single {@link ReactiveSession#execute(Statement)}. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ResultSetExtractor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ResultSetExtractor.java index e6eab318a..b6a8b4d16 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ResultSetExtractor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/ResultSetExtractor.java @@ -15,12 +15,12 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.dao.DataAccessException; -import org.springframework.lang.Nullable; - import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.dao.DataAccessException; +import org.springframework.lang.Nullable; + /** * Callback interface used by {@link CqlTemplate}'s query methods. Implementations of this interface perform the actual * work of extracting results from a {@link ResultSet}, but don't need to worry about exception handling. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RingMember.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RingMember.java index db8a22e21..cde7b2f2a 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RingMember.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RingMember.java @@ -19,10 +19,10 @@ import java.io.Serializable; import java.net.InetAddress; import java.net.InetSocketAddress; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.metadata.Node; +import org.springframework.util.Assert; + /** * Domain object representing a Cassandra host. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RingMemberHostMapper.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RingMemberHostMapper.java index 10639f297..be74208b2 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RingMemberHostMapper.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RingMemberHostMapper.java @@ -19,11 +19,11 @@ import java.util.Collection; import java.util.stream.Collectors; import java.util.stream.StreamSupport; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.metadata.Node; +import org.springframework.util.Assert; + /** * {@link HostMapper} to to map hosts into {@link RingMember} objects. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowMapper.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowMapper.java index a65421fcb..a67ecb8e4 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowMapper.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowMapper.java @@ -15,11 +15,11 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.lang.Nullable; - import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.lang.Nullable; + /** * An interface used by {@link CqlTemplate} for mapping rows of a {@link com.datastax.driver.core.ResultSet} on a * per-row basis. Implementations of this interface perform the actual work of mapping each row to a result object, but diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowMapperResultSetExtractor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowMapperResultSetExtractor.java index 3f410d9a2..742533f9b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowMapperResultSetExtractor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowMapperResultSetExtractor.java @@ -18,13 +18,13 @@ package org.springframework.data.cassandra.core.cql; import java.util.ArrayList; import java.util.List; -import org.springframework.dao.DataAccessException; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.dao.DataAccessException; +import org.springframework.util.Assert; + /** * Adapter implementation of the {@link ResultSetExtractor} interface that delegates to a {@link RowMapper} which is * supposed to create an object for each row. Each object is added to the results List of this diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowUtils.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowUtils.java index c84dd42f1..6c7238bf6 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowUtils.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/RowUtils.java @@ -23,12 +23,12 @@ import java.time.LocalTime; import java.util.Date; import java.util.UUID; -import org.springframework.lang.Nullable; - import com.datastax.oss.driver.api.core.cql.Row; import com.datastax.oss.driver.api.core.data.TupleValue; import com.datastax.oss.driver.api.core.data.UdtValue; +import org.springframework.lang.Nullable; + /** * Generic utility methods for working with Cassandra. Mainly for internal use within the framework, but also useful for * custom CQL access code. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SessionCallback.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SessionCallback.java index af549e544..88683a5c6 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SessionCallback.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SessionCallback.java @@ -15,11 +15,11 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.dao.DataAccessException; - import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.DriverException; +import org.springframework.dao.DataAccessException; + /** * Generic callback interface for code that operates on a Cassandra {@link CqlSession}. Allows to execute any number of * operations on a single session, using any type and number of statements. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SimplePreparedStatementCreator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SimplePreparedStatementCreator.java index b0138a6dc..e6d9da7de 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SimplePreparedStatementCreator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SimplePreparedStatementCreator.java @@ -15,12 +15,12 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.PreparedStatement; +import org.springframework.util.Assert; + /** * Trivial implementation of {@link PreparedStatementCreator}. This prepared statement creator simply prepares a * statement from the CQL string. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SingleColumnRowMapper.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SingleColumnRowMapper.java index 7e72e1205..940652b28 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SingleColumnRowMapper.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/SingleColumnRowMapper.java @@ -15,16 +15,16 @@ */ package org.springframework.data.cassandra.core.cql; -import org.springframework.dao.TypeMismatchDataAccessException; -import org.springframework.lang.Nullable; -import org.springframework.util.ClassUtils; -import org.springframework.util.NumberUtils; - import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.ColumnDefinition; import com.datastax.oss.driver.api.core.cql.ColumnDefinitions; import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.dao.TypeMismatchDataAccessException; +import org.springframework.lang.Nullable; +import org.springframework.util.ClassUtils; +import org.springframework.util.NumberUtils; + /** * {@link RowMapper} implementation that converts a single column into a single result value per row. Expects to operate * on a {@link com.datastax.driver.core.Row} that just contains a single column. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/WriteOptions.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/WriteOptions.java index d4bfbca24..365005805 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/WriteOptions.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/WriteOptions.java @@ -15,16 +15,15 @@ */ package org.springframework.data.cassandra.core.cql; -import lombok.EqualsAndHashCode; - import java.time.Duration; import java.time.Instant; import java.util.concurrent.TimeUnit; +import com.datastax.oss.driver.api.core.ConsistencyLevel; + import org.springframework.lang.Nullable; import org.springframework.util.Assert; - -import com.datastax.oss.driver.api.core.ConsistencyLevel; +import org.springframework.util.ObjectUtils; /** * Cassandra Write Options are an extension to {@link QueryOptions} for write operations. {@link WriteOptions} allow @@ -35,7 +34,6 @@ import com.datastax.oss.driver.api.core.ConsistencyLevel; * @author Lukasz Antoniak * @see QueryOptions */ -@EqualsAndHashCode(callSuper = true) public class WriteOptions extends QueryOptions { private static final WriteOptions EMPTY = new WriteOptionsBuilder().build(); @@ -100,6 +98,46 @@ public class WriteOptions extends QueryOptions { return this.timestamp; } + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof WriteOptions)) { + return false; + } + + if (!super.equals(o)) { + return false; + } + + WriteOptions that = (WriteOptions) o; + + if (!ObjectUtils.nullSafeEquals(ttl, that.ttl)) { + return false; + } + + return ObjectUtils.nullSafeEquals(timestamp, that.timestamp); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + ObjectUtils.nullSafeHashCode(ttl); + result = 31 * result + ObjectUtils.nullSafeHashCode(timestamp); + return result; + } + /** * Builder for {@link WriteOptions}. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/AbstractResultSetConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/AbstractResultSetConverter.java index 9bcfdeecd..17c92a0ae 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/AbstractResultSetConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/AbstractResultSetConverter.java @@ -18,11 +18,11 @@ package org.springframework.data.cassandra.core.cql.converter; import java.util.List; import java.util.Map; +import com.datastax.oss.driver.api.core.cql.ResultSet; + import org.springframework.core.convert.converter.Converter; import org.springframework.lang.Nullable; -import com.datastax.oss.driver.api.core.cql.ResultSet; - /** * Convenient converter that can be used to convert a single-row-single-column, single-row-multi-column, or multi-row * {@link ResultSet} into the a value of a given type. The majority of the expected usage is to convert a diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/AbstractResultSetToBasicFixedTypeConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/AbstractResultSetToBasicFixedTypeConverter.java index 5227bb5e5..c0144e773 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/AbstractResultSetToBasicFixedTypeConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/AbstractResultSetToBasicFixedTypeConverter.java @@ -17,7 +17,6 @@ package org.springframework.data.cassandra.core.cql.converter; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.support.DefaultConversionService; -import org.springframework.core.convert.support.GenericConversionService; /** * Thin wrapper that allows subclasses to delegate conversion of the given value to a {@link DefaultConversionService}. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToArrayConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToArrayConverter.java index b6d5c74d2..6b2d058ff 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToArrayConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToArrayConverter.java @@ -18,12 +18,12 @@ package org.springframework.data.cassandra.core.cql.converter; import java.util.ArrayList; import java.util.List; -import org.springframework.core.convert.converter.Converter; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.core.convert.converter.Converter; +import org.springframework.util.Assert; + /** * {@link Converter} from {@link ResultSet} to {@link Object} array. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBigDecimalConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBigDecimalConverter.java index 15d579577..d17d04668 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBigDecimalConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBigDecimalConverter.java @@ -17,10 +17,10 @@ package org.springframework.data.cassandra.core.cql.converter; import java.math.BigDecimal; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link BigDecimal} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBigIntegerConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBigIntegerConverter.java index 51e2e2f74..18dcf530a 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBigIntegerConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBigIntegerConverter.java @@ -17,10 +17,10 @@ package org.springframework.data.cassandra.core.cql.converter; import java.math.BigInteger; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link BigInteger} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBooleanConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBooleanConverter.java index f45c02320..5c8c4b1bb 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBooleanConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToBooleanConverter.java @@ -15,10 +15,10 @@ */ package org.springframework.data.cassandra.core.cql.converter; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link Boolean} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToByteBufferConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToByteBufferConverter.java index baeb0554c..a585f2538 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToByteBufferConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToByteBufferConverter.java @@ -17,10 +17,10 @@ package org.springframework.data.cassandra.core.cql.converter; import java.nio.ByteBuffer; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link ByteBuffer} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToDateConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToDateConverter.java index c077b5446..94ed2ab39 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToDateConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToDateConverter.java @@ -17,10 +17,10 @@ package org.springframework.data.cassandra.core.cql.converter; import java.util.Date; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link Date} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToDoubleConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToDoubleConverter.java index 5427e87ab..2085e6ed2 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToDoubleConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToDoubleConverter.java @@ -15,10 +15,10 @@ */ package org.springframework.data.cassandra.core.cql.converter; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link Double} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToFloatConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToFloatConverter.java index 302b2c196..7b3eb7aa1 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToFloatConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToFloatConverter.java @@ -15,10 +15,10 @@ */ package org.springframework.data.cassandra.core.cql.converter; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link Float} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToInetAddressConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToInetAddressConverter.java index d3ed5a610..3c0b24bf0 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToInetAddressConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToInetAddressConverter.java @@ -17,10 +17,10 @@ package org.springframework.data.cassandra.core.cql.converter; import java.net.InetAddress; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link InetAddress} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToIntegerConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToIntegerConverter.java index d98606e3b..0f1cfa71c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToIntegerConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToIntegerConverter.java @@ -15,10 +15,10 @@ */ package org.springframework.data.cassandra.core.cql.converter; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link Integer} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToListConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToListConverter.java index be40a8724..54a7bb85c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToListConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToListConverter.java @@ -19,12 +19,12 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.springframework.core.convert.converter.Converter; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.core.convert.converter.Converter; +import org.springframework.util.Assert; + /** * {@link Converter} from {@link ResultSet} to {@link Map}. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToListOfStringConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToListOfStringConverter.java index 9328f0395..3ff58b9f6 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToListOfStringConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToListOfStringConverter.java @@ -20,11 +20,11 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import com.datastax.oss.driver.api.core.cql.ResultSet; + import org.springframework.core.convert.converter.Converter; import org.springframework.util.StringUtils; -import com.datastax.oss.driver.api.core.cql.ResultSet; - /** * {@link Converter} from {@link ResultSet} to a {@link List} of {@link String}. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToLongConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToLongConverter.java index f706b8839..6ee4cf0b3 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToLongConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToLongConverter.java @@ -15,10 +15,10 @@ */ package org.springframework.data.cassandra.core.cql.converter; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link Long} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToStringConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToStringConverter.java index 95020476a..fa89c0696 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToStringConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToStringConverter.java @@ -18,10 +18,10 @@ package org.springframework.data.cassandra.core.cql.converter; import java.util.List; import java.util.Map; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link String} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToUuidConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToUuidConverter.java index a79751ebc..fd581b8f6 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToUuidConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/ResultSetToUuidConverter.java @@ -17,10 +17,10 @@ package org.springframework.data.cassandra.core.cql.converter; import java.util.UUID; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.ResultSet; +import org.springframework.core.convert.converter.Converter; + /** * {@link Converter} from {@link ResultSet} to a single {@link UUID} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToArrayConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToArrayConverter.java index 56413da0d..d853aa01c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToArrayConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToArrayConverter.java @@ -17,10 +17,10 @@ package org.springframework.data.cassandra.core.cql.converter; import java.util.List; -import org.springframework.core.convert.converter.Converter; - import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.core.convert.converter.Converter; + /** * Converter to convert {@link Row} to {@link Object} array. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToListConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToListConverter.java index 203b62a8f..fdbafa1b0 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToListConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToListConverter.java @@ -18,12 +18,12 @@ package org.springframework.data.cassandra.core.cql.converter; import java.util.ArrayList; import java.util.List; -import org.springframework.core.convert.converter.Converter; -import org.springframework.data.convert.ReadingConverter; - import com.datastax.oss.driver.api.core.cql.ColumnDefinitions; import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.core.convert.converter.Converter; +import org.springframework.data.convert.ReadingConverter; + /** * Converter to convert {@link Row}s to a {@link List} of {@link Object} representation. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToMapConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToMapConverter.java index 3d5ad7e7e..cf918925f 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToMapConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/converter/RowToMapConverter.java @@ -18,12 +18,12 @@ package org.springframework.data.cassandra.core.cql.converter; import java.util.HashMap; import java.util.Map; -import org.springframework.core.convert.converter.Converter; -import org.springframework.data.convert.ReadingConverter; - import com.datastax.oss.driver.api.core.cql.ColumnDefinitions; import com.datastax.oss.driver.api.core.cql.Row; +import org.springframework.core.convert.converter.Converter; +import org.springframework.data.convert.ReadingConverter; + /** * Converter to convert {@link Row}s to a {@link Map} of {@link String}/{@link Object} representation. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGenerator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGenerator.java index 6597583db..e9e02556d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGenerator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/CreateTableCqlGenerator.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core.cql.generator; -import static org.springframework.data.cassandra.core.cql.PrimaryKeyType.*; - import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -27,6 +25,8 @@ import org.springframework.data.cassandra.core.cql.keyspace.Option; import org.springframework.data.cassandra.core.cql.keyspace.TableSpecification; import org.springframework.util.StringUtils; +import static org.springframework.data.cassandra.core.cql.PrimaryKeyType.*; + /** * CQL generator for generating a {@code CREATE TABLE} statement. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/OptionRenderUtil.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/OptionRenderUtil.java index c4a2578ba..3fe4a62ad 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/OptionRenderUtil.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/OptionRenderUtil.java @@ -15,12 +15,12 @@ */ package org.springframework.data.cassandra.core.cql.generator; -import static org.springframework.data.cassandra.core.cql.keyspace.CqlStringUtils.*; - import java.util.Map; import org.springframework.data.cassandra.core.cql.keyspace.Option; +import static org.springframework.data.cassandra.core.cql.keyspace.CqlStringUtils.*; + /** * @author Mark Paluch * @since 2.0 diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/AlterKeyspaceSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/AlterKeyspaceSpecification.java index f097367ca..0670906b0 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/AlterKeyspaceSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/AlterKeyspaceSpecification.java @@ -16,16 +16,12 @@ package org.springframework.data.cassandra.core.cql.keyspace; import com.datastax.oss.driver.api.core.CqlIdentifier; -import lombok.EqualsAndHashCode; - -import org.springframework.data.cassandra.core.cql.KeyspaceIdentifier; /** * Object to configure a {@code ALTER KEYSPACE} specification. * * @author Mark Paluch */ -@EqualsAndHashCode(callSuper = true) public class AlterKeyspaceSpecification extends KeyspaceOptionsSpecification { private AlterKeyspaceSpecification(CqlIdentifier name) { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/ColumnSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/ColumnSpecification.java index 84c4ebb9d..4210fbc61 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/ColumnSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/ColumnSpecification.java @@ -205,7 +205,8 @@ public class ColumnSpecification { return cql.append(name.asCql(true)).append(" ").append(type.asCql(true, true)); } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/ColumnTypeChangeSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/ColumnTypeChangeSpecification.java index 1c1fcba1e..df837c03e 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/ColumnTypeChangeSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/ColumnTypeChangeSpecification.java @@ -15,11 +15,11 @@ */ package org.springframework.data.cassandra.core.cql.keyspace; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.type.DataType; +import org.springframework.util.Assert; + /** * Base value object class for column changes that include {@link DataType} information. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/CreateIndexSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/CreateIndexSpecification.java index 0b2423620..0800c4db2 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/CreateIndexSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/CreateIndexSpecification.java @@ -20,12 +20,12 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; +import com.datastax.oss.driver.api.core.CqlIdentifier; + import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import com.datastax.oss.driver.api.core.CqlIdentifier; - /** * Object to configure a {@code CREATE INDEX} specification. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/CreateKeyspaceSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/CreateKeyspaceSpecification.java index 9eae9ab06..85a51c7b0 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/CreateKeyspaceSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/CreateKeyspaceSpecification.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core.cql.keyspace; -import lombok.EqualsAndHashCode; - import org.springframework.data.cassandra.core.cql.KeyspaceIdentifier; import org.springframework.data.cassandra.core.cql.keyspace.KeyspaceOption.ReplicationStrategy; import org.springframework.data.cassandra.util.MapBuilder; @@ -29,7 +27,6 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * * @author Mark Paluch */ -@EqualsAndHashCode(callSuper = true) public class CreateKeyspaceSpecification extends KeyspaceOptionsSpecification implements KeyspaceDescriptor { @@ -162,4 +159,38 @@ public class CreateKeyspaceSpecification extends KeyspaceOptionsSpecification diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/IndexDescriptor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/IndexDescriptor.java index f3c424e1d..138266505 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/IndexDescriptor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/IndexDescriptor.java @@ -16,6 +16,7 @@ package org.springframework.data.cassandra.core.cql.keyspace; import com.datastax.oss.driver.api.core.CqlIdentifier; + import org.springframework.lang.Nullable; /** diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/IndexNameSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/IndexNameSpecification.java index d4894bb3f..17b78c6df 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/IndexNameSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/IndexNameSpecification.java @@ -16,6 +16,7 @@ package org.springframework.data.cassandra.core.cql.keyspace; import com.datastax.oss.driver.api.core.CqlIdentifier; + import org.springframework.lang.Nullable; import org.springframework.util.Assert; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/KeyspaceActionSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/KeyspaceActionSpecification.java index fa713a7e6..29add8aaf 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/KeyspaceActionSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/KeyspaceActionSpecification.java @@ -15,9 +15,8 @@ */ package org.springframework.data.cassandra.core.cql.keyspace; -import lombok.EqualsAndHashCode; - import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; import com.datastax.oss.driver.api.core.CqlIdentifier; @@ -28,7 +27,6 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @author David Webb * @param The subtype of the {@link KeyspaceActionSpecification} */ -@EqualsAndHashCode public abstract class KeyspaceActionSpecification { /** @@ -46,4 +44,36 @@ public abstract class KeyspaceActionSpecification { public CqlIdentifier getName() { return name; } + + protected boolean canEqual(final Object other) { + return other instanceof KeyspaceActionSpecification; + } + + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof KeyspaceActionSpecification)) { + return false; + } + + KeyspaceActionSpecification that = (KeyspaceActionSpecification) o; + return ObjectUtils.nullSafeEquals(name, that.name); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + return ObjectUtils.nullSafeHashCode(name); + } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/KeyspaceOptionsSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/KeyspaceOptionsSpecification.java index 14c97546a..84eb505b4 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/KeyspaceOptionsSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/KeyspaceOptionsSpecification.java @@ -17,13 +17,12 @@ package org.springframework.data.cassandra.core.cql.keyspace; import static org.springframework.data.cassandra.core.cql.keyspace.CqlStringUtils.*; -import lombok.EqualsAndHashCode; - import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import org.springframework.lang.Nullable; +import org.springframework.util.ObjectUtils; import com.datastax.oss.driver.api.core.CqlIdentifier; @@ -40,7 +39,6 @@ import com.datastax.oss.driver.api.core.CqlIdentifier; * @author John McPeek * @param The subtype of the {@link KeyspaceOptionsSpecification}. */ -@EqualsAndHashCode(callSuper = true) public abstract class KeyspaceOptionsSpecification> extends KeyspaceActionSpecification { @@ -109,4 +107,38 @@ public abstract class KeyspaceOptionsSpecification getOptions() { return Collections.unmodifiableMap(options); } + + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof KeyspaceOptionsSpecification)) { + return false; + } + + if (!super.equals(o)) { + return false; + } + + KeyspaceOptionsSpecification that = (KeyspaceOptionsSpecification) o; + return ObjectUtils.nullSafeEquals(options, that.options); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + ObjectUtils.nullSafeHashCode(options); + return result; + } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/RenameColumnSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/RenameColumnSpecification.java index 8b86d0380..450080e76 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/RenameColumnSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/RenameColumnSpecification.java @@ -16,6 +16,7 @@ package org.springframework.data.cassandra.core.cql.keyspace; import com.datastax.oss.driver.api.core.CqlIdentifier; + import org.springframework.util.Assert; /** diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableNameSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableNameSpecification.java index 5c29c683c..ead9fbe01 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableNameSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableNameSpecification.java @@ -16,6 +16,7 @@ package org.springframework.data.cassandra.core.cql.keyspace; import com.datastax.oss.driver.api.core.CqlIdentifier; + import org.springframework.util.Assert; /** diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableOptionsSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableOptionsSpecification.java index 9a5c40b2b..e0f4ef15d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableOptionsSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableOptionsSpecification.java @@ -15,15 +15,16 @@ */ package org.springframework.data.cassandra.core.cql.keyspace; -import static org.springframework.data.cassandra.core.cql.keyspace.CqlStringUtils.*; - import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import com.datastax.oss.driver.api.core.CqlIdentifier; + import org.springframework.lang.Nullable; +import static org.springframework.data.cassandra.core.cql.keyspace.CqlStringUtils.*; + /** * Abstract builder class to support the construction of table specifications that have table options, that is, those * options normally specified by {@code WITH ... AND ...}. diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableSpecification.java index afa7e0cd5..dd46a3cb2 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/TableSpecification.java @@ -15,19 +15,19 @@ */ package org.springframework.data.cassandra.core.cql.keyspace; -import static org.springframework.data.cassandra.core.cql.PrimaryKeyType.*; - import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; +import com.datastax.oss.driver.api.core.CqlIdentifier; +import com.datastax.oss.driver.api.core.type.DataType; + import org.springframework.data.cassandra.core.cql.Ordering; import org.springframework.data.cassandra.core.cql.PrimaryKeyType; import org.springframework.util.Assert; -import com.datastax.oss.driver.api.core.CqlIdentifier; -import com.datastax.oss.driver.api.core.type.DataType; +import static org.springframework.data.cassandra.core.cql.PrimaryKeyType.*; /** * Object to support the configuration of table specifications that have columns. This class can also be used as a diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/UserTypeNameSpecification.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/UserTypeNameSpecification.java index ff0ccc3e2..c31ef28ce 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/UserTypeNameSpecification.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/keyspace/UserTypeNameSpecification.java @@ -15,10 +15,10 @@ */ package org.springframework.data.cassandra.core.cql.keyspace; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.CqlIdentifier; +import org.springframework.util.Assert; + /** * Base value object builder class to construction of user type specifications. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/DefaultBridgedReactiveSession.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/DefaultBridgedReactiveSession.java index ba07c2427..fdf2cc25f 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/DefaultBridgedReactiveSession.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/DefaultBridgedReactiveSession.java @@ -15,23 +15,11 @@ */ package org.springframework.data.cassandra.core.cql.session; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; -import reactor.core.publisher.MonoProcessor; -import reactor.core.scheduler.Scheduler; - import java.util.Collections; import java.util.List; import java.util.Map; import java.util.concurrent.CompletionStage; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.data.cassandra.ReactiveResultSet; -import org.springframework.data.cassandra.ReactiveSession; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.context.DriverContext; import com.datastax.oss.driver.api.core.cql.AsyncResultSet; @@ -41,6 +29,16 @@ import com.datastax.oss.driver.api.core.cql.PreparedStatement; import com.datastax.oss.driver.api.core.cql.Row; import com.datastax.oss.driver.api.core.cql.SimpleStatement; import com.datastax.oss.driver.api.core.cql.Statement; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.core.publisher.MonoProcessor; +import reactor.core.scheduler.Scheduler; + +import org.springframework.data.cassandra.ReactiveResultSet; +import org.springframework.data.cassandra.ReactiveSession; +import org.springframework.util.Assert; /** * Default implementation of a {@link ReactiveSession}. This implementation bridges asynchronous {@link CqlSession} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/DefaultSessionFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/DefaultSessionFactory.java index 1e51b1d43..5bc880151 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/DefaultSessionFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/DefaultSessionFactory.java @@ -15,11 +15,11 @@ */ package org.springframework.data.cassandra.core.cql.session; +import com.datastax.oss.driver.api.core.CqlSession; + import org.springframework.data.cassandra.SessionFactory; import org.springframework.util.Assert; -import com.datastax.oss.driver.api.core.CqlSession; - /** * Default {@link SessionFactory} implementation. *

diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/init/ResourceKeyspacePopulator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/init/ResourceKeyspacePopulator.java index c6b1caada..1c284484b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/init/ResourceKeyspacePopulator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/init/ResourceKeyspacePopulator.java @@ -19,6 +19,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import com.datastax.oss.driver.api.core.CqlSession; + import org.springframework.core.io.Resource; import org.springframework.core.io.support.EncodedResource; import org.springframework.data.cassandra.SessionFactory; @@ -26,8 +28,6 @@ import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import com.datastax.oss.driver.api.core.CqlSession; - /** * Populates, initializes, or cleans up a keyspace using CQL scripts defined in external resources. *

    diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/init/ScriptUtils.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/init/ScriptUtils.java index f96d88c4e..429ededf1 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/init/ScriptUtils.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/init/ScriptUtils.java @@ -20,6 +20,9 @@ import java.io.LineNumberReader; import java.util.ArrayList; import java.util.List; +import com.datastax.oss.driver.api.core.CqlSession; +import com.datastax.oss.driver.api.core.cql.ExecutionInfo; +import com.datastax.oss.driver.api.core.cql.ResultSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -29,10 +32,6 @@ import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import com.datastax.oss.driver.api.core.CqlSession; -import com.datastax.oss.driver.api.core.cql.ExecutionInfo; -import com.datastax.oss.driver.api.core.cql.ResultSet; - /** * Generic utility methods for working with CQL scripts. *

    diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/lookup/AbstractRoutingSessionFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/lookup/AbstractRoutingSessionFactory.java index c133a97a6..785b647c8 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/lookup/AbstractRoutingSessionFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/session/lookup/AbstractRoutingSessionFactory.java @@ -18,13 +18,13 @@ package org.springframework.data.cassandra.core.cql.session.lookup; import java.util.HashMap; import java.util.Map; +import com.datastax.oss.driver.api.core.CqlSession; + import org.springframework.beans.factory.InitializingBean; import org.springframework.data.cassandra.SessionFactory; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import com.datastax.oss.driver.api.core.CqlSession; - /** * Abstract {@link SessionFactory} implementation that routes {@link #getSession()} calls to one of various target * {@link SessionFactory factories} based on a lookup key. The latter is usually (but not necessarily) determined diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/support/CachedPreparedStatementCreator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/support/CachedPreparedStatementCreator.java index c9601bcff..f54a80f25 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/support/CachedPreparedStatementCreator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/support/CachedPreparedStatementCreator.java @@ -15,16 +15,16 @@ */ package org.springframework.data.cassandra.core.cql.support; -import org.springframework.data.cassandra.core.cql.PreparedStatementCreator; -import org.springframework.data.cassandra.core.cql.QueryOptions; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.DriverException; import com.datastax.oss.driver.api.core.cql.PreparedStatement; import com.datastax.oss.driver.api.core.cql.SimpleStatement; import com.datastax.oss.driver.api.core.cql.Statement; +import org.springframework.data.cassandra.core.cql.PreparedStatementCreator; +import org.springframework.data.cassandra.core.cql.QueryOptions; +import org.springframework.util.Assert; + /** * {@link PreparedStatementCreator} implementation using caching of prepared statements. *

    diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/support/MapPreparedStatementCache.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/support/MapPreparedStatementCache.java index 4f100c808..953e762d4 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/support/MapPreparedStatementCache.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/support/MapPreparedStatementCache.java @@ -15,13 +15,12 @@ */ package org.springframework.data.cassandra.core.cql.support; -import lombok.EqualsAndHashCode; - import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.CqlSession; @@ -93,7 +92,6 @@ public class MapPreparedStatementCache implements PreparedStatementCache { /** * {@link CacheKey} for {@link PreparedStatement} caching. */ - @EqualsAndHashCode protected static class CacheKey { final String sessionName; @@ -106,5 +104,39 @@ public class MapPreparedStatementCache implements PreparedStatementCache { this.keyspace = session.getKeyspace().orElse(CqlIdentifier.fromCql("system")).asInternal(); this.cql = cql; } + + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof CacheKey)) { + return false; + } + CacheKey cacheKey = (CacheKey) o; + if (!ObjectUtils.nullSafeEquals(sessionName, cacheKey.sessionName)) { + return false; + } + if (!ObjectUtils.nullSafeEquals(keyspace, cacheKey.keyspace)) { + return false; + } + return ObjectUtils.nullSafeEquals(cql, cacheKey.cql); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = ObjectUtils.nullSafeHashCode(sessionName); + result = 31 * result + ObjectUtils.nullSafeHashCode(keyspace); + result = 31 * result + ObjectUtils.nullSafeHashCode(cql); + return result; + } } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/util/StatementBuilder.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/util/StatementBuilder.java index 276a747cc..772026a3b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/util/StatementBuilder.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/util/StatementBuilder.java @@ -25,10 +25,6 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.function.UnaryOperator; -import org.springframework.lang.NonNull; -import org.springframework.lang.Nullable; -import org.springframework.util.Assert; - import com.datastax.oss.driver.api.core.cql.SimpleStatement; import com.datastax.oss.driver.api.core.cql.SimpleStatementBuilder; import com.datastax.oss.driver.api.core.type.codec.registry.CodecRegistry; @@ -37,6 +33,10 @@ import com.datastax.oss.driver.api.querybuilder.QueryBuilder; import com.datastax.oss.driver.api.querybuilder.term.Term; import com.datastax.oss.driver.internal.querybuilder.CqlHelper; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; +import org.springframework.util.Assert; + /** * Functional builder for Cassandra {@link BuildableQuery statements}. Statements are built by applying * {@link UnaryOperator builder functions} that get applied when {@link #build() building} the actual diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/util/TermFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/util/TermFactory.java index b1001ab6f..ab0ded4e5 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/util/TermFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/util/TermFactory.java @@ -15,10 +15,10 @@ */ package org.springframework.data.cassandra.core.cql.util; -import org.springframework.lang.Nullable; - import com.datastax.oss.driver.api.querybuilder.term.Term; +import org.springframework.lang.Nullable; + /** * Factory for {@link Term} objects encapsulating a binding {@code value}. Classes implementing this factory interface * may return inline terms to render values as part of the query string, or bind markers to supply parameters on diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/PropertyMapping.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/PropertyMapping.java index 62828a371..93c24346d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/PropertyMapping.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/PropertyMapping.java @@ -15,11 +15,10 @@ */ package org.springframework.data.cassandra.core.mapping; -import lombok.EqualsAndHashCode; - import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; /** * Mapping between a persistent entity's property and its column. @@ -27,7 +26,6 @@ import org.springframework.util.Assert; * @author Matthew T. Adams * @author John Blum */ -@EqualsAndHashCode public class PropertyMapping { private @Nullable String columnName; @@ -90,7 +88,48 @@ public class PropertyMapping { return this.propertyName; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof PropertyMapping)) { + return false; + } + + PropertyMapping that = (PropertyMapping) o; + + if (!ObjectUtils.nullSafeEquals(columnName, that.columnName)) { + return false; + } + + if (!ObjectUtils.nullSafeEquals(forceQuote, that.forceQuote)) { + return false; + } + + return ObjectUtils.nullSafeEquals(propertyName, that.propertyName); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = ObjectUtils.nullSafeHashCode(columnName); + result = 31 * result + ObjectUtils.nullSafeHashCode(forceQuote); + result = 31 * result + ObjectUtils.nullSafeHashCode(propertyName); + return result; + } + + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java index e8223b887..16c9c7d78 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Columns.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.core.query; -import lombok.EqualsAndHashCode; - import java.util.Arrays; import java.util.Collections; import java.util.HashMap; @@ -217,7 +215,8 @@ public class Columns implements Iterable { return Optional.ofNullable(this.columns.get(columnName)); } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override @@ -236,20 +235,19 @@ public class Columns implements Iterable { return this.columns.equals(that.columns); } - /* (non-Javadoc) - * @see java.lang.Object#hashCode() + /* + * (non-Javadoc) + * @see java.lang.Object#toString() */ @Override public int hashCode() { - int result = 17; - result += 31 * ObjectUtils.nullSafeHashCode(this.columns); - return result; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override @@ -305,7 +303,6 @@ public class Columns implements Iterable { * * @author Mark Paluch */ - @EqualsAndHashCode public static class ColumnSelector implements Selector { private final ColumnName columnName; @@ -385,12 +382,41 @@ public class Columns implements Iterable { return getAlias().map(cqlIdentifier -> String.format("%s AS %s", getExpression(), cqlIdentifier)) .orElseGet(this::getExpression); } + + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof ColumnSelector)) { + return false; + } + ColumnSelector that = (ColumnSelector) o; + if (!ObjectUtils.nullSafeEquals(columnName, that.columnName)) { + return false; + } + return ObjectUtils.nullSafeEquals(alias, that.alias); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = ObjectUtils.nullSafeHashCode(columnName); + result = 31 * result + ObjectUtils.nullSafeHashCode(alias); + return result; + } } /** * Function call selector with alias support. */ - @EqualsAndHashCode public static class FunctionCall implements Selector { private final String expression; @@ -461,5 +487,39 @@ public class Columns implements Iterable { .map(cqlIdentifier -> String.format("%s(%s) AS %s", getExpression(), parameters, cqlIdentifier)) .orElseGet(() -> String.format("%s(%s)", getExpression(), parameters)); } + + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof FunctionCall)) { + return false; + } + FunctionCall that = (FunctionCall) o; + if (!ObjectUtils.nullSafeEquals(expression, that.expression)) { + return false; + } + if (!ObjectUtils.nullSafeEquals(params, that.params)) { + return false; + } + return ObjectUtils.nullSafeEquals(alias, that.alias); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = ObjectUtils.nullSafeHashCode(expression); + result = 31 * result + ObjectUtils.nullSafeHashCode(params); + result = 31 * result + ObjectUtils.nullSafeHashCode(alias); + return result; + } } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Criteria.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Criteria.java index 628cb63f0..16fd9a8a9 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Criteria.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Criteria.java @@ -15,14 +15,13 @@ */ package org.springframework.data.cassandra.core.query; -import static org.springframework.util.ObjectUtils.*; - import java.util.Arrays; import java.util.Collection; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; /** * Basic class for creating queries. It follows a fluent API style so that you can easily create a @@ -276,7 +275,8 @@ public class Criteria implements CriteriaDefinition { return predicate; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override @@ -308,16 +308,14 @@ public class Criteria implements CriteriaDefinition { */ @Override public int hashCode() { - int result = 17; - - result += nullSafeHashCode(columnName); - result += nullSafeHashCode(predicate); - + result += ObjectUtils.nullSafeHashCode(columnName); + result += ObjectUtils.nullSafeHashCode(predicate); return result; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/CriteriaDefinition.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/CriteriaDefinition.java index 15993628d..d1e27dffd 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/CriteriaDefinition.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/CriteriaDefinition.java @@ -15,13 +15,13 @@ */ package org.springframework.data.cassandra.core.query; -import lombok.EqualsAndHashCode; import java.util.Optional; import java.util.function.Function; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; /** * Criteria definition for a {@link ColumnName} exposing a {@link Predicate}. @@ -50,7 +50,6 @@ public interface CriteriaDefinition { * * @author Mark Paluch */ - @EqualsAndHashCode class Predicate { private final Operator operator; @@ -97,6 +96,41 @@ public interface CriteriaDefinition { public R as(Function mappingFunction) { return mappingFunction.apply(this.value); } + + /* + * (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object o) { + + if (this == o) { + return true; + } + + if (!(o instanceof Predicate)) { + return false; + } + + Predicate predicate = (Predicate) o; + + if (!ObjectUtils.nullSafeEquals(operator, predicate.operator)) { + return false; + } + + return ObjectUtils.nullSafeEquals(value, predicate.value); + } + + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ + @Override + public int hashCode() { + int result = ObjectUtils.nullSafeHashCode(operator); + result = 31 * result + ObjectUtils.nullSafeHashCode(value); + return result; + } } /** @@ -164,6 +198,10 @@ public interface CriteriaDefinition { this.operator = operator; } + /* + * (non-Javadoc) + * @see java.lang.Object#toString() + */ @Override public String toString() { return this.operator; 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 38dba2f2b..a7121c700 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 @@ -298,7 +298,8 @@ public class Query implements Filter { return this.allowFiltering; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override @@ -335,14 +336,13 @@ public class Query implements Filter { && allowFilteringEqual; } - /* (non-Javadoc) - * @see java.lang.Object#hashCode() + /* + * (non-Javadoc) + * @see java.lang.Object#toString() */ @Override public int hashCode() { - int result = 17; - result += 31 * criteriaDefinitions.hashCode(); result += 31 * nullSafeHashCode(columns); result += 31 * nullSafeHashCode(sort); @@ -350,11 +350,11 @@ public class Query implements Filter { result += 31 * nullSafeHashCode(queryOptions); result += 31 * nullSafeHashCode(limit); result += (allowFiltering ? 0 : 1); - return result; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Update.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Update.java index 35d5759cd..16f824577 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Update.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/query/Update.java @@ -217,7 +217,8 @@ public class Update { return new Update(map); } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override @@ -523,7 +524,8 @@ public class Update { return this.mode; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override @@ -556,7 +558,8 @@ public class Update { return value; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override @@ -582,7 +585,8 @@ public class Update { return value; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override @@ -611,8 +615,9 @@ public class Update { return index; } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.query.Update.SetOp#toString() + /* + * (non-Javadoc) + * @see java.lang.Object#toString() */ @Override public String toString() { @@ -647,8 +652,9 @@ public class Update { return value; } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.query.Update.SetOp#toString() + /* + * (non-Javadoc) + * @see java.lang.Object#toString() */ @Override public String toString() { @@ -672,7 +678,8 @@ public class Update { return value; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override @@ -702,7 +709,8 @@ public class Update { return value; } - /* (non-Javadoc) + /* + * (non-Javadoc) * @see java.lang.Object#toString() */ @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryExecution.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryExecution.java index 2c58b84b1..c626e7dc2 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryExecution.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryExecution.java @@ -15,9 +15,6 @@ */ package org.springframework.data.cassandra.repository.query; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; - import java.util.Iterator; import java.util.List; @@ -58,11 +55,15 @@ interface CassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class StreamExecution implements CassandraQueryExecution { - private final @NonNull CassandraOperations operations; - private final @NonNull Converter resultProcessing; + private final CassandraOperations operations; + private final Converter resultProcessing; + + StreamExecution(CassandraOperations operations, Converter resultProcessing) { + this.operations = operations; + this.resultProcessing = resultProcessing; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraQueryExecution#execute(java.lang.String, java.lang.Class) @@ -78,11 +79,16 @@ interface CassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class SlicedExecution implements CassandraQueryExecution { - private final @NonNull CassandraOperations operations; - private final @NonNull Pageable pageable; + private final CassandraOperations operations; + + SlicedExecution(CassandraOperations operations, Pageable pageable) { + this.operations = operations; + this.pageable = pageable; + } + + private final Pageable pageable; /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraQueryExecution#execute(java.lang.String, java.lang.Class) @@ -114,10 +120,13 @@ interface CassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class CollectionExecution implements CassandraQueryExecution { - private final @NonNull CassandraOperations operations; + private final CassandraOperations operations; + + CollectionExecution(CassandraOperations operations) { + this.operations = operations; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraQueryExecution#execute(java.lang.String, java.lang.Class) @@ -133,12 +142,16 @@ interface CassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class SingleEntityExecution implements CassandraQueryExecution { - private final @NonNull CassandraOperations operations; + private final CassandraOperations operations; private final boolean limiting; + SingleEntityExecution(CassandraOperations operations, boolean limiting) { + this.operations = operations; + this.limiting = limiting; + } + /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraQueryExecution#execute(java.lang.String, java.lang.Class) */ @@ -166,10 +179,13 @@ interface CassandraQueryExecution { * @author Mark Paluch * @since 2.1 */ - @RequiredArgsConstructor final class ExistsExecution implements CassandraQueryExecution { - private final @NonNull CassandraOperations operations; + private final CassandraOperations operations; + + ExistsExecution(CassandraOperations operations) { + this.operations = operations; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraQueryExecution#execute(java.lang.String, java.lang.Class) @@ -204,10 +220,13 @@ interface CassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class ResultSetQuery implements CassandraQueryExecution { - private final @NonNull CassandraOperations operations; + private final CassandraOperations operations; + + ResultSetQuery(CassandraOperations operations) { + this.operations = operations; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraQueryExecution#execute(java.lang.String, java.lang.Class) @@ -223,11 +242,15 @@ interface CassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class ResultProcessingExecution implements CassandraQueryExecution { - private final @NonNull CassandraQueryExecution delegate; - private final @NonNull Converter converter; + private final CassandraQueryExecution delegate; + private final Converter converter; + + ResultProcessingExecution(CassandraQueryExecution delegate, Converter converter) { + this.delegate = delegate; + this.converter = converter; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraQueryExecution#execute(java.lang.String, java.lang.Class) @@ -247,12 +270,19 @@ interface CassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class ResultProcessingConverter implements Converter { - private final @NonNull ResultProcessor processor; - private final @NonNull MappingContext, CassandraPersistentProperty> mappingContext; - private final @NonNull EntityInstantiators instantiators; + private final ResultProcessor processor; + private final MappingContext, CassandraPersistentProperty> mappingContext; + private final EntityInstantiators instantiators; + + ResultProcessingConverter(ResultProcessor processor, + MappingContext, CassandraPersistentProperty> mappingContext, + EntityInstantiators instantiators) { + this.processor = processor; + this.mappingContext = mappingContext; + this.instantiators = instantiators; + } /* (non-Javadoc) * @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraRepositoryQuerySupport.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraRepositoryQuerySupport.java index 273a882d0..0b36096ca 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraRepositoryQuerySupport.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraRepositoryQuerySupport.java @@ -15,12 +15,11 @@ */ package org.springframework.data.cassandra.repository.query; -import lombok.RequiredArgsConstructor; - import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; @@ -98,12 +97,16 @@ public abstract class CassandraRepositoryQuerySupport implements RepositoryQuery return this.queryStatementCreator; } - @RequiredArgsConstructor class CassandraReturnedType { private final ReturnedType returnedType; private final CustomConversions customConversions; + CassandraReturnedType(ReturnedType returnedType, CustomConversions customConversions) { + this.returnedType = returnedType; + this.customConversions = customConversions; + } + boolean isProjecting() { if (!this.returnedType.isProjecting()) { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ProjectionUtil.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ProjectionUtil.java index b77012b00..c0125e1cd 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ProjectionUtil.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ProjectionUtil.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.repository.query; -import lombok.experimental.UtilityClass; - import java.util.Arrays; import java.util.HashSet; import java.util.Set; @@ -32,12 +30,13 @@ import com.datastax.oss.driver.api.core.type.DataTypes; * @author Mark Paluch * @since 2.1 */ -@UtilityClass -class ProjectionUtil { +abstract class ProjectionUtil { private final static Set NUMERIC_TYPES = new HashSet<>(Arrays.asList(DataTypes.BIGINT, DataTypes.VARINT, DataTypes.SMALLINT, DataTypes.INT, DataTypes.COUNTER, DataTypes.TINYINT)); + private ProjectionUtil() {} + /** * Determine whether multiple {@code boolean} flags are set. Allowed is at most a single {@literal true} value. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/QueryStatementCreator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/QueryStatementCreator.java index 3ae39522c..5bbe45741 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/QueryStatementCreator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/QueryStatementCreator.java @@ -15,7 +15,6 @@ */ package org.springframework.data.cassandra.repository.query; -import lombok.RequiredArgsConstructor; import java.util.Optional; import java.util.function.Function; @@ -47,7 +46,6 @@ import com.datastax.oss.driver.api.core.cql.Statement; * @author Mark Paluch * @since 2.0 */ -@RequiredArgsConstructor class QueryStatementCreator { private static final Logger LOG = LoggerFactory.getLogger(QueryStatementCreator.class); @@ -56,6 +54,12 @@ class QueryStatementCreator { private final MappingContext, CassandraPersistentProperty> mappingContext; + QueryStatementCreator(CassandraQueryMethod queryMethod, + MappingContext, CassandraPersistentProperty> mappingContext) { + this.queryMethod = queryMethod; + this.mappingContext = mappingContext; + } + private CassandraPersistentEntity getPersistentEntity() { return this.mappingContext.getRequiredPersistentEntity(this.queryMethod.getDomainClass()); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryExecution.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryExecution.java index 47f9e3b27..a2b142227 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryExecution.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryExecution.java @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.repository.query; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -60,11 +58,15 @@ interface ReactiveCassandraQueryExecution { * @author Mark Paluch * @since 2.1 */ - @RequiredArgsConstructor final class SlicedExecution implements ReactiveCassandraQueryExecution { - private final @NonNull ReactiveCassandraOperations operations; - private final @NonNull Pageable pageable; + private final ReactiveCassandraOperations operations; + private final Pageable pageable; + + SlicedExecution(ReactiveCassandraOperations operations, Pageable pageable) { + this.operations = operations; + this.pageable = pageable; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraQueryExecution#execute(java.lang.String, java.lang.Class) @@ -99,10 +101,13 @@ interface ReactiveCassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class CollectionExecution implements ReactiveCassandraQueryExecution { - private final @NonNull ReactiveCassandraOperations operations; + private final ReactiveCassandraOperations operations; + + CollectionExecution(ReactiveCassandraOperations operations) { + this.operations = operations; + } /* * (non-Javadoc) @@ -119,12 +124,16 @@ interface ReactiveCassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class SingleEntityExecution implements ReactiveCassandraQueryExecution { - private final @NonNull ReactiveCassandraOperations operations; + private final ReactiveCassandraOperations operations; private final boolean limiting; + SingleEntityExecution(ReactiveCassandraOperations operations, boolean limiting) { + this.operations = operations; + this.limiting = limiting; + } + /* * (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.ReactiveCassandraQueryExecution#execute(java.lang.String, java.lang.Class) @@ -154,10 +163,13 @@ interface ReactiveCassandraQueryExecution { * @author Mark Paluch * @since 2.1 */ - @RequiredArgsConstructor final class ExistsExecution implements ReactiveCassandraQueryExecution { - private final @NonNull ReactiveCassandraOperations operations; + private final ReactiveCassandraOperations operations; + + ExistsExecution(ReactiveCassandraOperations operations) { + this.operations = operations; + } /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.ReactiveCassandraQueryExecution#execute(com.datastax.oss.driver.api.core.cql.Statement, java.lang.Class) @@ -196,11 +208,15 @@ interface ReactiveCassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class ResultProcessingExecution implements ReactiveCassandraQueryExecution { - private final @NonNull ReactiveCassandraQueryExecution delegate; - private final @NonNull Converter converter; + private final ReactiveCassandraQueryExecution delegate; + private final Converter converter; + + ResultProcessingExecution(ReactiveCassandraQueryExecution delegate, Converter converter) { + this.delegate = delegate; + this.converter = converter; + } /* * (non-Javadoc) @@ -217,12 +233,19 @@ interface ReactiveCassandraQueryExecution { * * @author Mark Paluch */ - @RequiredArgsConstructor final class ResultProcessingConverter implements Converter { - private final @NonNull ResultProcessor processor; - private final @NonNull MappingContext, CassandraPersistentProperty> mappingContext; - private final @NonNull EntityInstantiators instantiators; + private final ResultProcessor processor; + private final MappingContext, CassandraPersistentProperty> mappingContext; + private final EntityInstantiators instantiators; + + ResultProcessingConverter(ResultProcessor processor, + MappingContext, CassandraPersistentProperty> mappingContext, + EntityInstantiators instantiators) { + this.processor = processor; + this.mappingContext = mappingContext; + this.instantiators = instantiators; + } /* * (non-Javadoc) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/InsertUtil.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/InsertUtil.java deleted file mode 100644 index 2857c0b0f..000000000 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/InsertUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2017-2020 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. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.cassandra.repository.support; - -import lombok.experimental.UtilityClass; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Map.Entry; - -import org.springframework.data.cassandra.core.convert.CassandraConverter; -import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; - -import com.datastax.oss.driver.api.core.CqlIdentifier; -import com.datastax.oss.driver.api.querybuilder.QueryBuilder; -import com.datastax.oss.driver.api.querybuilder.insert.Insert; -import com.datastax.oss.driver.api.querybuilder.insert.RegularInsert; - -/** - * Utility to create {@link com.datastax.driver.core.querybuilder.Insert} statements for repository use. - * - * @author Mark Paluch - * @since 2.0 - */ -@UtilityClass -class InsertUtil { - - /** - * Create a {@link Insert} statement containing all properties including these with {@literal null} values. - * - * @param entity the entity, must not be {@literal null}. - * @return the constructed {@link Insert} statement. - */ - static Insert createInsert(CassandraConverter converter, Object entity) { - - CassandraPersistentEntity persistentEntity = converter.getMappingContext() - .getRequiredPersistentEntity(entity.getClass()); - - Map toInsert = new LinkedHashMap<>(); - - converter.write(entity, toInsert, persistentEntity); - - RegularInsert insert = (RegularInsert) QueryBuilder.insertInto(persistentEntity.getTableName()); - - for (Entry entry : toInsert.entrySet()) { - insert = insert.value(CqlIdentifier.fromCql(entry.getKey()), QueryBuilder.literal(entry.getValue())); - } - - return insert; - } -}