From d6a32814ca4fb4efb02a944349f537cfe102a545 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 1 Oct 2020 10:45:18 +0200 Subject: [PATCH] DATACASS-809 - Add queryForStream methods to CqlOperations. CqlOperations now exposes queryForStream methods to consume a query as java.util.stream.Stream accepting a RowMapper. --- .../cassandra/core/CassandraTemplate.java | 11 +- .../cassandra/core/cql/AsyncCqlTemplate.java | 6 +- .../cassandra/core/cql/CqlOperations.java | 71 ++++++++- .../data/cassandra/core/cql/CqlTemplate.java | 142 ++++++++++++++++-- .../core/cql/CqlOperationsExtensions.kt | 8 + .../core/cql/CqlTemplateUnitTests.java | 35 ++++- .../cql/CqlOperationsExtensionsUnitTests.kt | 7 + src/main/asciidoc/new-features.adoc | 1 + 8 files changed, 254 insertions(+), 27 deletions(-) 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 a8a046c65..aa5390bf1 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 @@ -19,7 +19,6 @@ import java.util.List; import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Stream; -import java.util.stream.StreamSupport; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; @@ -374,10 +373,8 @@ public class CassandraTemplate implements CassandraOperations, ApplicationEventP Assert.notNull(statement, "Statement must not be null"); Assert.notNull(entityClass, "Entity type must not be null"); - ResultSet resultSet = getCqlOperations().queryForResultSet(statement); - - return StreamSupport.stream(resultSet.spliterator(), false) - .map(getMapper(entityClass, entityClass, EntityQueryUtils.getTableName(statement))); + Function mapper = getMapper(entityClass, entityClass, EntityQueryUtils.getTableName(statement)); + return getCqlOperations().queryForStream(statement, (row, rowNum) -> mapper.apply(row)); } // ------------------------------------------------------------------------- @@ -453,10 +450,8 @@ public class CassandraTemplate implements CassandraOperations, ApplicationEventP StatementBuilder