From 9e43c6e58be4106cf0dac5aa37ebfb6ef80b952c Mon Sep 17 00:00:00 2001 From: Sasha Didukh Date: Tue, 6 Sep 2016 20:04:26 +0300 Subject: [PATCH] KAA-1268: Fix removeAll() method in the AbstractCassandraDao Fix PRIMARY KEY mistakes in the cassandra --- .../cassandra/dao/AbstractCassandraDao.java | 5 ++--- .../dao/model/CassandraCredentials.java | 4 +++- .../dao/model/CassandraEndpointUser.java | 5 +++-- .../dao/CredentialsCassandraDaoTest.java | 17 +++++++++++++++++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/AbstractCassandraDao.java b/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/AbstractCassandraDao.java index 7ea29aba61..51f3c6c5e6 100644 --- a/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/AbstractCassandraDao.java +++ b/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/AbstractCassandraDao.java @@ -158,9 +158,8 @@ public T findById(K key) { } public void removeAll() { - Statement delete = QueryBuilder.delete().all().from(getColumnFamilyName()).setConsistencyLevel(getWriteConsistencyLevel()); - LOG.debug("Remove all request: {}", delete.toString()); - session.execute(delete); + Statement truncate = QueryBuilder.truncate(getColumnFamilyName()).setConsistencyLevel(getWriteConsistencyLevel()); + session.execute(truncate); } public void removeById(K key) { diff --git a/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/model/CassandraCredentials.java b/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/model/CassandraCredentials.java index 36a3ecb6de..f858fc66a6 100644 --- a/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/model/CassandraCredentials.java +++ b/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/model/CassandraCredentials.java @@ -16,6 +16,7 @@ package org.kaaproject.kaa.server.common.nosql.cassandra.dao.model; +import com.datastax.driver.mapping.annotations.ClusteringColumn; import com.datastax.driver.mapping.annotations.Column; import com.datastax.driver.mapping.annotations.PartitionKey; import com.datastax.driver.mapping.annotations.Table; @@ -43,9 +44,10 @@ public class CassandraCredentials implements Credentials, Serializable { @Transient private static final long serialVersionUID = 5814711856025319827L; + @PartitionKey @Column(name = CREDENTIALS_APPLICATION_ID_PROPERTY) private String applicationId; - @PartitionKey + @ClusteringColumn @Column(name = CREDENTIALS_ID_PROPERTY) private String id; @Column(name = CREDENTIALS_BODY_PROPERTY) diff --git a/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/model/CassandraEndpointUser.java b/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/model/CassandraEndpointUser.java index ae573857ff..4277fa9ee6 100644 --- a/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/model/CassandraEndpointUser.java +++ b/server/common/nosql/cassandra-dao/src/main/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/model/CassandraEndpointUser.java @@ -31,6 +31,7 @@ import java.io.Serializable; import java.util.List; +import com.datastax.driver.mapping.annotations.ClusteringColumn; import org.kaaproject.kaa.common.dto.EndpointUserDto; import org.kaaproject.kaa.server.common.dao.model.EndpointUser; @@ -45,10 +46,10 @@ public final class CassandraEndpointUser implements EndpointUser, Serializable { @Transient private static final long serialVersionUID = 3766947955702551264L; - @PartitionKey(value = 0) + @PartitionKey @Column(name = EP_USER_EXTERNAL_ID_PROPERTY) private String externalId; - @PartitionKey(value = 1) + @ClusteringColumn @Column(name = EP_USER_TENANT_ID_PROPERTY) private String tenantId; diff --git a/server/common/nosql/cassandra-dao/src/test/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/CredentialsCassandraDaoTest.java b/server/common/nosql/cassandra-dao/src/test/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/CredentialsCassandraDaoTest.java index 2a386ba0fd..eb892dc5a1 100644 --- a/server/common/nosql/cassandra-dao/src/test/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/CredentialsCassandraDaoTest.java +++ b/server/common/nosql/cassandra-dao/src/test/java/org/kaaproject/kaa/server/common/nosql/cassandra/dao/CredentialsCassandraDaoTest.java @@ -26,6 +26,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import java.util.List; import java.util.Optional; import static org.kaaproject.kaa.common.dto.credentials.CredentialsStatus.AVAILABLE; @@ -75,4 +76,20 @@ public void testRemoveCredentials() { Optional removed = this.credentialsDao.find(CREDENTIALS_APPLICATION_ID, CREDENTIALS_ID); Assert.assertFalse(removed.isPresent()); } + + @Test + public void testRemoveAllCredentials() { + CredentialsDto firstCredentials = this.generateCredentials(CREDENTIALS_APPLICATION_ID, CREDENTIALS_ID, + CREDENTIALS_BODY, AVAILABLE); + CredentialsDto secondCredentials = this.generateCredentials(CREDENTIALS_APPLICATION_ID.concat("1"), CREDENTIALS_ID, + CREDENTIALS_BODY, AVAILABLE); + + List credentials = credentialsDao.find(); + Assert.assertEquals(credentials.size(), 2); + + credentialsDao.removeAll(); + List removed = credentialsDao.find(); + Assert.assertTrue(removed.isEmpty()); + } + }