From 8001354308faa7b68c9e5ea0df5cf3512735b17c Mon Sep 17 00:00:00 2001 From: Tudor Marc Date: Thu, 19 May 2022 22:43:12 +0300 Subject: [PATCH] Allow WriterOptionsBuilder to set ttl to 0. Value 0 tells the Cassandra driver to disable the ttl. Closes #1262 --- .../data/cassandra/core/cql/WriteOptions.java | 3 ++- .../cassandra/core/cql/WriteOptionsUnitTests.java | 15 +++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) 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 9e211ea82..85002d5f3 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 @@ -145,6 +145,7 @@ public int hashCode() { * @author Mark Paluch * @author Lukasz Antoniak * @author Thomas Strauß + * @author Tudor Marc * @since 1.5 */ public static class WriteOptionsBuilder extends QueryOptionsBuilder { @@ -288,7 +289,7 @@ public WriteOptionsBuilder ttl(int ttl) { public WriteOptionsBuilder ttl(Duration ttl) { Assert.notNull(ttl, "TTL must not be null"); - Assert.isTrue(!ttl.isNegative() && !ttl.isZero(), "TTL must be greater than equal to zero"); + Assert.isTrue(!ttl.isNegative(), "TTL must be greater than equal to zero"); this.ttl = ttl; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/WriteOptionsUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/WriteOptionsUnitTests.java index 0d6f9a756..d1200fdc5 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/WriteOptionsUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/cql/WriteOptionsUnitTests.java @@ -35,6 +35,7 @@ * @author Mark Paluch * @author Sam Lightfoot * @author Thomas Strauß + * @author Tudor Marc */ class WriteOptionsUnitTests { @@ -107,16 +108,18 @@ void buildWriteOptionsMutate() { assertThat(writeOptions.getRoutingKey()).isEqualTo(ByteBuffer.allocate(1)); } - @Test // GH-1248 - void buildWriteOptionsWithTtlDurationZero() { - assertThatIllegalArgumentException().isThrownBy(() -> WriteOptions.builder().ttl(0)); - assertThatIllegalArgumentException().isThrownBy(() -> WriteOptions.builder().ttl(Duration.ZERO)); - } - @Test // GH-1248 void buildWriteOptionsWithTtlNegativeDuration() { assertThatIllegalArgumentException().isThrownBy(() -> WriteOptions.builder().ttl(-1)); assertThatIllegalArgumentException() .isThrownBy(() -> WriteOptions.builder().ttl(Duration.of(-1, ChronoUnit.MICROS))); } + + @Test // GH-1262 + void buildZeroDurationTtlWriterOptions() { + + WriteOptions writeOptions = WriteOptions.builder().ttl(0).build(); + + assertThat(writeOptions.getTtl()).isEqualTo(Duration.ZERO); + } }