Return-Path: X-Original-To: apmail-camel-commits-archive@www.apache.org Delivered-To: apmail-camel-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8EE7318EFC for ; Fri, 3 Jul 2015 20:23:46 +0000 (UTC) Received: (qmail 87431 invoked by uid 500); 3 Jul 2015 20:23:46 -0000 Delivered-To: apmail-camel-commits-archive@camel.apache.org Received: (qmail 87298 invoked by uid 500); 3 Jul 2015 20:23:46 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 87272 invoked by uid 99); 3 Jul 2015 20:23:46 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Jul 2015 20:23:46 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 00D4FE3686; Fri, 3 Jul 2015 20:23:45 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: acosentino@apache.org To: commits@camel.apache.org Date: Fri, 03 Jul 2015 20:23:47 -0000 Message-Id: <18bdb9e9b855425683500d6ac430260d@git.apache.org> In-Reply-To: <6ced8f6c9e6748aa9331ccf1d270cf56@git.apache.org> References: <6ced8f6c9e6748aa9331ccf1d270cf56@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [03/13] camel git commit: CAMEL-8478: IdempotentRepository - Add clear operation, align CassandraIdempotentRepository CAMEL-8478: IdempotentRepository - Add clear operation, align CassandraIdempotentRepository Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b346017f Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b346017f Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b346017f Branch: refs/heads/master Commit: b346017ff662a2a656afce15daab603183fcd69a Parents: c5674e8 Author: Andrea Cosentino Authored: Fri Jul 3 17:07:36 2015 +0200 Committer: Andrea Cosentino Committed: Fri Jul 3 17:07:36 2015 +0200 ---------------------------------------------------------------------- .../CassandraIdempotentRepository.java | 22 ++++++++++++++++++++ .../camel/utils/cassandra/CassandraUtils.java | 10 +++++++++ .../CassandraIdempotentRepositoryTest.java | 11 ++++++++++ .../NamedCassandraIdempotentRepositoryTest.java | 13 +++++++++++- 4 files changed, 55 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b346017f/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java ---------------------------------------------------------------------- diff --git a/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java b/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java index 7546f17..d1eced7 100644 --- a/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java +++ b/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java @@ -25,6 +25,8 @@ import com.datastax.driver.core.Session; import com.datastax.driver.core.querybuilder.Delete; import com.datastax.driver.core.querybuilder.Insert; import com.datastax.driver.core.querybuilder.Select; +import com.datastax.driver.core.querybuilder.Truncate; + import org.apache.camel.spi.IdempotentRepository; import org.apache.camel.support.ServiceSupport; import org.apache.camel.utils.cassandra.CassandraSessionHolder; @@ -36,6 +38,7 @@ import static org.apache.camel.utils.cassandra.CassandraUtils.applyConsistencyLe import static org.apache.camel.utils.cassandra.CassandraUtils.generateDelete; import static org.apache.camel.utils.cassandra.CassandraUtils.generateInsert; import static org.apache.camel.utils.cassandra.CassandraUtils.generateSelect; +import static org.apache.camel.utils.cassandra.CassandraUtils.generateTruncate; /** * Implementation of {@link IdempotentRepository} using Cassandra table to store @@ -82,6 +85,7 @@ public class CassandraIdempotentRepository extends ServiceSupport implements private PreparedStatement insertStatement; private PreparedStatement selectStatement; private PreparedStatement deleteStatement; + private PreparedStatement truncateStatement; public CassandraIdempotentRepository() { } @@ -122,6 +126,7 @@ public class CassandraIdempotentRepository extends ServiceSupport implements initInsertStatement(); initSelectStatement(); initDeleteStatement(); + initClearStatement(); } @Override @@ -183,6 +188,23 @@ public class CassandraIdempotentRepository extends ServiceSupport implements LOGGER.debug("Deleting key {}", (Object) idValues); return isApplied(getSession().execute(deleteStatement.bind(idValues))); } + + // ------------------------------------------------------------------------- + // Clear the repository + + protected void initClearStatement() { + Truncate truncate = generateTruncate(table); + truncate = applyConsistencyLevel(truncate, writeConsistencyLevel); + LOGGER.debug("Generated truncate for clear operation {}", truncate); + truncateStatement = getSession().prepare(truncate); + } + + @Override + public void clear() { + LOGGER.debug("Clear table {}", table); + getSession().execute(truncateStatement.bind()); + } + // ------------------------------------------------------------------------- // Getters & Setters http://git-wip-us.apache.org/repos/asf/camel/blob/b346017f/components/camel-cassandraql/src/main/java/org/apache/camel/utils/cassandra/CassandraUtils.java ---------------------------------------------------------------------- diff --git a/components/camel-cassandraql/src/main/java/org/apache/camel/utils/cassandra/CassandraUtils.java b/components/camel-cassandraql/src/main/java/org/apache/camel/utils/cassandra/CassandraUtils.java index 32b41b3..1af07c7 100644 --- a/components/camel-cassandraql/src/main/java/org/apache/camel/utils/cassandra/CassandraUtils.java +++ b/components/camel-cassandraql/src/main/java/org/apache/camel/utils/cassandra/CassandraUtils.java @@ -20,7 +20,9 @@ import com.datastax.driver.core.ConsistencyLevel; import com.datastax.driver.core.RegularStatement; import com.datastax.driver.core.querybuilder.Delete; import com.datastax.driver.core.querybuilder.Insert; +import com.datastax.driver.core.querybuilder.QueryBuilder; import com.datastax.driver.core.querybuilder.Select; +import com.datastax.driver.core.querybuilder.Truncate; import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker; import static com.datastax.driver.core.querybuilder.QueryBuilder.delete; @@ -160,6 +162,14 @@ public final class CassandraUtils { private static boolean isWhereClause(String[] whereColumns, int whereColumnsMaxIndex) { return !isEmpty(whereColumns) && whereColumnsMaxIndex > 0; } + + /** + * Generate delete where columns = ? CQL. + */ + public static Truncate generateTruncate(String table) { + Truncate truncate = QueryBuilder.truncate(table); + return truncate; + } /** * Apply consistency level if provided, else leave default. http://git-wip-us.apache.org/repos/asf/camel/blob/b346017f/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryTest.java b/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryTest.java index d4b7b72..f6b8506 100644 --- a/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryTest.java +++ b/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryTest.java @@ -139,5 +139,16 @@ public class CassandraIdempotentRepositoryTest { // Then assertTrue(result); } + + @Test + public void testClear() { + // Given + String key = "Remove_Exists"; + assertTrue(exists(key)); + // When + idempotentRepository.clear(); + // Then + assertFalse(idempotentRepository.contains(key)); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/b346017f/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepositoryTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepositoryTest.java b/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepositoryTest.java index bdb577f..db3498f 100644 --- a/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepositoryTest.java +++ b/components/camel-cassandraql/src/test/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepositoryTest.java @@ -18,6 +18,7 @@ package org.apache.camel.processor.idempotent.cassandra; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Session; + import org.apache.camel.component.cassandra.CassandraUnitUtils; import org.cassandraunit.CassandraCQLUnit; import org.junit.After; @@ -140,5 +141,15 @@ public class NamedCassandraIdempotentRepositoryTest { // Then assertTrue(result); } - + + @Test + public void testClear() { + // Given + String key = "Remove_Exists"; + assertTrue(exists(key)); + // When + idempotentRepository.clear(); + // Then + assertFalse(idempotentRepository.contains(key)); + } }