From 9cd48548e96b6ce0734f0167754d28741f97e9d1 Mon Sep 17 00:00:00 2001 From: Matthew Adams Date: Mon, 17 Feb 2014 11:04:12 -0600 Subject: [PATCH] DATACASS-94 - added AbstractCqlTemplateConfiguration --- .../java/AbstractClusterConfiguration.java | 2 +- .../AbstractCqlTemplateConfiguration.java | 12 +++++ .../config/IntegrationTestUtils.java | 6 +++ ...AbstractKeyspaceCreatingConfiguration.java | 8 ++-- .../CqlTemplateConfigIntegrationTest.java | 46 +++++++++++++++++++ 5 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 spring-cassandra/src/main/java/org/springframework/cassandra/config/java/AbstractCqlTemplateConfiguration.java create mode 100644 spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/CqlTemplateConfigIntegrationTest.java diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/config/java/AbstractClusterConfiguration.java b/spring-cassandra/src/main/java/org/springframework/cassandra/config/java/AbstractClusterConfiguration.java index 071242f03..7b84040c0 100644 --- a/spring-cassandra/src/main/java/org/springframework/cassandra/config/java/AbstractClusterConfiguration.java +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/config/java/AbstractClusterConfiguration.java @@ -42,7 +42,7 @@ import com.datastax.driver.core.policies.RetryPolicy; public abstract class AbstractClusterConfiguration { @Bean - public CassandraClusterFactoryBean cluster() throws Exception { + public CassandraClusterFactoryBean cluster() { CassandraClusterFactoryBean bean = new CassandraClusterFactoryBean(); bean.setAuthProvider(getAuthProvider()); diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/config/java/AbstractCqlTemplateConfiguration.java b/spring-cassandra/src/main/java/org/springframework/cassandra/config/java/AbstractCqlTemplateConfiguration.java new file mode 100644 index 000000000..433fd06b9 --- /dev/null +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/config/java/AbstractCqlTemplateConfiguration.java @@ -0,0 +1,12 @@ +package org.springframework.cassandra.config.java; + +import org.springframework.cassandra.core.CqlTemplate; +import org.springframework.context.annotation.Bean; + +public abstract class AbstractCqlTemplateConfiguration extends AbstractSessionConfiguration { + + @Bean + public CqlTemplate cqlTemplate() throws Exception { + return new CqlTemplate(session().getObject()); + } +} diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/IntegrationTestUtils.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/IntegrationTestUtils.java index 3fc5ac8eb..60c6fab80 100644 --- a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/IntegrationTestUtils.java +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/IntegrationTestUtils.java @@ -17,10 +17,16 @@ package org.springframework.cassandra.test.integration.config; import static org.junit.Assert.assertNotNull; +import org.springframework.cassandra.core.CqlTemplate; + import com.datastax.driver.core.Session; public class IntegrationTestUtils { + public static void assertCqlTemplate(CqlTemplate cqlTemplate) { + assertNotNull(cqlTemplate); + } + public static void assertSession(Session session) { assertNotNull(session); } diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/AbstractKeyspaceCreatingConfiguration.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/AbstractKeyspaceCreatingConfiguration.java index d5a7eb7f1..0c54db89f 100644 --- a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/AbstractKeyspaceCreatingConfiguration.java +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/AbstractKeyspaceCreatingConfiguration.java @@ -15,6 +15,9 @@ */ package org.springframework.cassandra.test.integration.config.java; +import static org.springframework.cassandra.core.cql.generator.CreateKeyspaceCqlGenerator.toCql; +import static org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification.createKeyspace; + import org.springframework.cassandra.config.CassandraSessionFactoryBean; import org.springframework.cassandra.config.java.AbstractSessionConfiguration; import org.springframework.context.annotation.Configuration; @@ -46,10 +49,7 @@ public abstract class AbstractKeyspaceCreatingConfiguration extends AbstractSess return; } - // TODO: use KeyspaceBuilder to build keyspace with attributes & options - - system.execute("CREATE KEYSPACE " + keyspace - + " WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };"); + system.execute(toCql(createKeyspace().name(keyspace).withSimpleReplication())); system.shutdown(); } } diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/CqlTemplateConfigIntegrationTest.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/CqlTemplateConfigIntegrationTest.java new file mode 100644 index 000000000..8fba37288 --- /dev/null +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/CqlTemplateConfigIntegrationTest.java @@ -0,0 +1,46 @@ +package org.springframework.cassandra.test.integration.config.java; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cassandra.config.java.AbstractCqlTemplateConfiguration; +import org.springframework.cassandra.core.CqlTemplate; +import org.springframework.cassandra.test.integration.AbstractKeyspaceCreatingIntegrationTest; +import org.springframework.cassandra.test.integration.config.IntegrationTestUtils; +import org.springframework.cassandra.test.unit.support.Utils; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration +public class CqlTemplateConfigIntegrationTest extends AbstractKeyspaceCreatingIntegrationTest { + + public static final String KEYSPACE_NAME = Utils.randomKeyspaceName(); + + @Configuration + public static class Config extends AbstractCqlTemplateConfiguration { + + @Override + protected String getKeyspaceName() { + return KEYSPACE_NAME; + } + + @Override + protected int getPort() { + return CASSANDRA_NATIVE_PORT; + } + } + + @Autowired + CqlTemplate template; + + public CqlTemplateConfigIntegrationTest() { + super(KEYSPACE_NAME); + } + + @Test + public void test() { + IntegrationTestUtils.assertCqlTemplate(template); + } +}