From 31c373376d570553d0e9c9e2de876b4b99333488 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 5 Jun 2018 09:45:27 +0200 Subject: [PATCH] DATACASS-555 - Polishing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Javadoc. Tweak Javadoc for consistency. Refactor SimpleReactivePreparedStatementCreator into newReactivePreparedStatementCreator(…) method. Reformat code. Original pull request: #133. --- .../cassandra/core/cql/AsyncCqlTemplate.java | 2 +- .../data/cassandra/core/cql/CqlTemplate.java | 21 +++++++++------ .../core/cql/ReactiveCqlTemplate.java | 27 +++++++++++++------ 3 files changed, 33 insertions(+), 17 deletions(-) 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 b765b55f4..e02d7d10a 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 @@ -740,7 +740,7 @@ public class AsyncCqlTemplate extends CassandraAccessor implements AsyncCqlOpera // ------------------------------------------------------------------------- /** - * Create a new CQL-based AsyncPreparedStatementCreator using the CQL passed in. By default, we'll create an + * Create a new CQL-based {@link AsyncPreparedStatementCreator} using the CQL passed in. By default, we'll create an * {@link SimpleAsyncPreparedStatementCreator}. This method allows for the creation to be overridden by subclasses. * * @param cql static CQL to execute, must not be empty or {@literal null}. 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 b99f8c178..0a7c38aa0 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 @@ -69,8 +69,7 @@ import com.datastax.driver.core.exceptions.DriverException; * @author Antoine Toulme * @author John Blum * @author Mark Paluch - * @author Mike Barlotta (CodeSmell) - * + * @author Mike Barlotta * @see PreparedStatementCreator * @see PreparedStatementBinder * @see PreparedStatementCallback @@ -406,7 +405,7 @@ public class CqlTemplate extends CassandraAccessor implements CqlOperations { @Override public boolean execute(String cql, @Nullable PreparedStatementBinder psb) throws DataAccessException { // noinspection ConstantConditions - return query(newPreparedStatementCreator(cql), psb, ResultSet::wasApplied); + return query(newPreparedStatementCreator(cql), psb, ResultSet::wasApplied); } /* @@ -705,15 +704,21 @@ public class CqlTemplate extends CassandraAccessor implements CqlOperations { return getCurrentSession().getCluster().getMetadata().getAllHosts(); } - /* (non-Javadoc) */ - protected PreparedStatementCreator newPreparedStatementCreator(String cql) { - return new SimplePreparedStatementCreator(cql); - } - // ------------------------------------------------------------------------- // Implementation hooks and helper methods // ------------------------------------------------------------------------- + /** + * Create a new CQL-based {@link PreparedStatementCreator} using the CQL passed in. By default, we'll create an + * {@link SimplePreparedStatementCreator}. This method allows for the creation to be overridden by subclasses. + * + * @param cql static CQL to execute, must not be empty or {@literal null}. + * @return the new {@link PreparedStatementCreator} to use + */ + protected PreparedStatementCreator newPreparedStatementCreator(String cql) { + return new SimplePreparedStatementCreator(cql); + } + /** * Translate the given {@link DriverException} into a generic {@link DataAccessException}. * 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 2eb7b685d..68c47e838 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 @@ -470,7 +470,7 @@ public class ReactiveCqlTemplate extends ReactiveCassandraAccessor implements Re */ @Override public Flux execute(String cql, ReactivePreparedStatementCallback action) throws DataAccessException { - return execute(new SimpleReactivePreparedStatementCreator(cql), action); + return execute(newReactivePreparedStatementCreator(cql), action); } /** @@ -520,7 +520,7 @@ public class ReactiveCqlTemplate extends ReactiveCassandraAccessor implements Re @Override public Flux query(String cql, @Nullable PreparedStatementBinder psb, ReactiveResultSetExtractor rse) throws DataAccessException { - return query(new SimpleReactivePreparedStatementCreator(cql), psb, rse); + return query(newReactivePreparedStatementCreator(cql), psb, rse); } /* (non-Javadoc) @@ -528,7 +528,7 @@ public class ReactiveCqlTemplate extends ReactiveCassandraAccessor implements Re */ @Override public Flux query(String cql, ReactiveResultSetExtractor rse, Object... args) throws DataAccessException { - return query(new SimpleReactivePreparedStatementCreator(cql), newArgPreparedStatementBinder(args), rse); + return query(newReactivePreparedStatementCreator(cql), newArgPreparedStatementBinder(args), rse); } /* (non-Javadoc) @@ -615,7 +615,7 @@ public class ReactiveCqlTemplate extends ReactiveCassandraAccessor implements Re Assert.hasText(cql, "CQL must not be empty"); - return query(new SimpleReactivePreparedStatementCreator(cql), newArgPreparedStatementBinder(args), Mono::just) + return query(newReactivePreparedStatementCreator(cql), newArgPreparedStatementBinder(args), Mono::just) .next(); } @@ -641,7 +641,7 @@ public class ReactiveCqlTemplate extends ReactiveCassandraAccessor implements Re */ @Override public Mono execute(String cql, @Nullable PreparedStatementBinder psb) throws DataAccessException { - return query(new SimpleReactivePreparedStatementCreator(cql), psb, resultSet -> Mono.just(resultSet.wasApplied())) + return query(newReactivePreparedStatementCreator(cql), psb, resultSet -> Mono.just(resultSet.wasApplied())) .next(); } @@ -661,9 +661,7 @@ public class ReactiveCqlTemplate extends ReactiveCassandraAccessor implements Re Assert.notNull(args, "Args Publisher must not be null"); - SimpleReactivePreparedStatementCreator psc = new SimpleReactivePreparedStatementCreator(cql); - - return execute(psc, (session, ps) -> Flux.from(args).flatMap(objects -> { + return execute(newReactivePreparedStatementCreator(cql), (session, ps) -> Flux.from(args).flatMap(objects -> { if (logger.isDebugEnabled()) { logger.debug("Executing Prepared CQL Statement [{}]", cql); @@ -682,6 +680,19 @@ public class ReactiveCqlTemplate extends ReactiveCassandraAccessor implements Re // Implementation hooks and helper methods // ------------------------------------------------------------------------- + /** + * Create a new CQL-based {@link ReactivePreparedStatementCreator} using the CQL passed in. By default, we'll create + * an {@link SimpleReactivePreparedStatementCreator}. This method allows for the creation to be overridden by + * subclasses. + * + * @param cql static CQL to execute, must not be empty or {@literal null}. + * @return the new {@link ReactivePreparedStatementCreator} to use + * @since 2.0.8 + */ + protected ReactivePreparedStatementCreator newReactivePreparedStatementCreator(String cql) { + return new SimpleReactivePreparedStatementCreator(cql); + } + /** * Create a reusable {@link Flux} given a {@link ReactiveStatementCallback} without exception translation. *