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 <anco...@gmail.com>
Authored: Fri Jul 3 17:07:36 2015 +0200
Committer: Andrea Cosentino <anco...@gmail.com>
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<K> extends 
ServiceSupport implements
     private PreparedStatement insertStatement;
     private PreparedStatement selectStatement;
     private PreparedStatement deleteStatement;
+    private PreparedStatement truncateStatement;
 
     public CassandraIdempotentRepository() {
     }
@@ -122,6 +126,7 @@ public class CassandraIdempotentRepository<K> extends 
ServiceSupport implements
         initInsertStatement();
         initSelectStatement();
         initDeleteStatement();
+        initClearStatement();
     }
 
     @Override
@@ -183,6 +188,23 @@ public class CassandraIdempotentRepository<K> 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));
+    }
 }

Reply via email to