We now apply custom conversions for collection elements if a read converter is registered. Previously, we used the presence/absence of a write converter to initiate conversion for collections.
cassandraTemplate(…) and cqlTemplate(…) bean methods now use the template implementation class as their return type to provide the most specific type information for the bean declaration.
Previously, we declared the bean type using their interface which made it impossible to resolve beans using the template class.
We now accept CriteriaDefinition when creating a single-criteria query in the Kotlin extension. Previously, we only accepted Criteria which is a concrete implementation type.
Reduce visibility of ReactiveCassandraBatchTemplate to package-private. Move registration of stream subscription to a deferred Mono to allow multiple execute calls and only prevent multiple subscriptions.
Convert spaces to tabs, formatting, javadoc, author and since tags.
Original pull request: #134.
Remove Google Guava as dependency so it can be pulled in as transitive dependency of cassandra-driver-core. We are no longer in charge of managing the actual Guava version.
Introduce ReactiveResultSet.availableRows() to fetch rows without transparent paging. Refactor QueryUtils to extract a Slice from an Iterable. Add slice(Query, Class) to ReactiveCassandraOperations to expose a consistent API. Convert space indentation to tab indentation. Add tests. Add since tags. Add documentation. Reformat code.
Original pull request: #128.
We now support Slice queries using reactive Cassandra repositories. Repository query methods can declare Mono<Slice<T>> as their return type to query for slices without applying transparent paging. The resulting Mono always completes with a value. An empty query result returns a Mono emitting an empty Slice.
interface UserRepository extends CrudRepository<User, String> {
Mono<Slice<User>> findByLastname(String firstname, Pageable pageable);
}
Mono<Slice<User>> result =repository.findByLastname("White", CassandraPageRequest.first(1));
Original pull request: #128.
We now check whether the inspected property type is a AnnotatedParameterizedType one before attempting to extract type parameters. Map-like and Collection-like properties can be generic typed, untyped or subtype of either one and we restrict annotation scanning to generic typed ones.
Previously, we applied a downcast without checking for the actual type which lead to a ClassCastException.