From 58d6eb2b2687fd8176f9547c733792f7966a9187 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 31 Oct 2014 19:18:21 +0100 Subject: [PATCH] DATACASS-174 - Fix StackOverflowError in CassandraAdminTemplate#dropTable(Class). Delete recursive function to determine table name from entity class and reuse getTableName(...) Original pull request: #28. --- .../cassandra/core/CassandraAdminTemplate.java | 2 +- .../data/cassandra/core/CassandraTemplate.java | 4 ---- .../template/CassandraAdminTemplateTest.java | 15 +++++++++++++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminTemplate.java index 317417e21..790130c66 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminTemplate.java @@ -114,7 +114,7 @@ public class CassandraAdminTemplate extends CassandraTemplate implements Cassand } public void dropTable(Class entityClass) { - dropTable(determineTableName(entityClass)); + dropTable(getTableName(entityClass)); } @Override diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java index ee22c5c86..6f0aa1410 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java @@ -516,10 +516,6 @@ public class CassandraTemplate extends CqlTemplate implements CassandraOperation return doUpdateAsync(entity, listener, options); } - protected CqlIdentifier determineTableName(T obj) { - return obj == null ? null : determineTableName(obj.getClass()); - } - protected List select(final String query, CassandraConverterRowCallback readRowCallback) { ResultSet resultSet = doExecute(new SessionCallback() { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraAdminTemplateTest.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraAdminTemplateTest.java index 4f188f2be..a23be4a64 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraAdminTemplateTest.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraAdminTemplateTest.java @@ -94,4 +94,19 @@ public class CassandraAdminTemplateTest extends AbstractSpringDataEmbeddedCassan cassandraAdminTemplate.createTable(true, CqlIdentifier.cqlId("book"), Book.class, null); assertThat(getKeyspaceMetadata().getTables().size(), is(1)); } + + @Test + public void testDropTable() throws Exception { + + cassandraAdminTemplate.createTable(true, CqlIdentifier.cqlId("book"), Book.class, null); + assertThat(getKeyspaceMetadata().getTables().size(), is(1)); + + cassandraAdminTemplate.dropTable(Book.class); + assertThat(getKeyspaceMetadata().getTables().size(), is(0)); + + cassandraAdminTemplate.createTable(true, CqlIdentifier.cqlId("book"), Book.class, null); + cassandraAdminTemplate.dropTable(CqlIdentifier.cqlId("book")); + + assertThat(getKeyspaceMetadata().getTables().size(), is(0)); + } }