diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/core/cql/KeyspaceIdentifier.java b/spring-cassandra/src/main/java/org/springframework/cassandra/core/cql/KeyspaceIdentifier.java new file mode 100644 index 000000000..062c4626a --- /dev/null +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/core/cql/KeyspaceIdentifier.java @@ -0,0 +1,123 @@ +package org.springframework.cassandra.core.cql; + +import java.util.regex.Pattern; + +import org.springframework.cassandra.core.ReservedKeyword; +import org.springframework.util.Assert; + +/** + * This encapsulates the logic for keyspace identifiers. + *

+ * Keyspace identifiers are converted to lower case. To render, use any of the methods {@link #toCql()}, + * {@link #toCql(StringBuilder)}, or {@link #toString()}. + * + * @see #KeyspaceIdentifier(String) + * @see #toCql() + * @see #toCql(StringBuilder) + * @see #toString() + * + * @author Matthew T. Adams + */ +public final class KeyspaceIdentifier implements Comparable { + + public static final String REGEX = "(?i)[a-z][\\w]{0,47}"; + public static final Pattern PATTERN = Pattern.compile(REGEX); + + /** + * Factory method for {@link KeyspaceIdentifier}. Convenient if imported statically. + */ + public static KeyspaceIdentifier ksId(CharSequence identifier) { + return new KeyspaceIdentifier(identifier); + } + + /** + * Returns true if the given {@link CharSequence} is a legal keyspace identifier. + */ + public static boolean isIdentifier(CharSequence chars) { + return PATTERN.matcher(chars).matches() && !ReservedKeyword.isReserved(chars); + } + + private String identifier; + + /** + * Creates a new {@link KeyspaceIdentifier}. + */ + public KeyspaceIdentifier(CharSequence identifier) { + setIdentifier(identifier); + } + + /** + * Tests & sets the given identifier. + */ + private void setIdentifier(CharSequence identifier) { + + Assert.notNull(identifier); + + String string = identifier.toString(); + Assert.hasText(string); + + if (!isIdentifier(string)) { + throw new IllegalArgumentException(String.format("given string [%s] is not a valid keyspace identifier", + identifier)); + } + this.identifier = string.toLowerCase(); + } + + /** + * Renders this identifier appropriately. + */ + public String toCql() { + return identifier; + } + + /** + * Appends the rendering of this identifier to the given {@link StringBuilder}, then returns that + * {@link StringBuilder}. If null is given, a new {@link StringBuilder} is created, appended to, and + * returned. + */ + public StringBuilder toCql(StringBuilder sb) { + sb = sb == null ? new StringBuilder() : sb; + return sb.append(toCql()); + } + + /** + * Alias for {@link #toCql()}. + */ + @Override + public String toString() { + return toCql(); + } + + @Override + public int hashCode() { + return identifier.hashCode(); + } + + /** + * Compares this {@link KeyspaceIdentifier} to the given object. Note that if a {@link CharSequence} is given, a new + * {@link KeyspaceIdentifier} is created from it and compared, such that a {@link CharSequence} can be effectively + * equal to a {@link KeyspaceIdentifier}. + */ + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (!(that instanceof KeyspaceIdentifier) && !(that instanceof CharSequence)) { + return false; + } + + KeyspaceIdentifier other = (that instanceof KeyspaceIdentifier) ? (KeyspaceIdentifier) that + : ksId((CharSequence) that); + + return this.identifier.equals(other.identifier); + } + + @Override + public int compareTo(KeyspaceIdentifier that) { + return this.identifier.compareTo(that.identifier); + } +} diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/core/keyspace/AlterKeyspaceSpecification.java b/spring-cassandra/src/main/java/org/springframework/cassandra/core/keyspace/AlterKeyspaceSpecification.java index b3864df49..d9a07ceb5 100644 --- a/spring-cassandra/src/main/java/org/springframework/cassandra/core/keyspace/AlterKeyspaceSpecification.java +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/core/keyspace/AlterKeyspaceSpecification.java @@ -15,6 +15,8 @@ */ package org.springframework.cassandra.core.keyspace; +import org.springframework.cassandra.core.cql.KeyspaceIdentifier; + public class AlterKeyspaceSpecification extends KeyspaceOptionsSpecification { /** @@ -24,4 +26,23 @@ public class AlterKeyspaceSpecification extends KeyspaceOptionsSpecificationIF NOT EXISTS clause. * @@ -88,7 +116,7 @@ public class CreateKeyspaceSpecification extends KeyspaceSpecification { + /** + * Entry point into the {@link DropKeyspaceSpecification}'s fluent API to drop a keyspace. Convenient if imported + * statically. + */ + public static DropKeyspaceSpecification dropKeyspace() { + return new DropKeyspaceSpecification(); + } + + /** + * Entry point into the {@link DropKeyspaceSpecification}'s fluent API to drop a keyspace. Convenient if imported + * statically. + */ + public static DropKeyspaceSpecification dropKeyspace(KeyspaceIdentifier name) { + return new DropKeyspaceSpecification(name); + } + + /** + * Entry point into the {@link DropKeyspaceSpecification}'s fluent API to drop a keyspace. Convenient if imported + * statically. + */ + public static DropKeyspaceSpecification dropKeyspace(String name) { + return new DropKeyspaceSpecification(name); + } + private boolean ifExists; + public DropKeyspaceSpecification() { + } + + public DropKeyspaceSpecification(String name) { + name(name); + } + + public DropKeyspaceSpecification(KeyspaceIdentifier name) { + name(name); + } + public DropKeyspaceSpecification ifExists() { return ifExists(true); } @@ -31,12 +68,4 @@ public class DropKeyspaceSpecification extends KeyspaceActionSpecification propertyMappings = new HashMap(); public EntityMapping(String entityClassName, String tableName) { - this(entityClassName, tableName, false); + this(entityClassName, tableName, Boolean.FALSE.toString()); } - public EntityMapping(String entityClassName, String tableName, boolean forceQuote) { + public EntityMapping(String entityClassName, String tableName, String forceQuote) { setEntityClassName(entityClassName); setTableName(tableName); @@ -77,15 +74,17 @@ public class EntityMapping { public void setTableName(String tableName) { - Assert.hasText(tableName); + Assert.notNull(tableName); this.tableName = tableName; } - public boolean getForceQuote() { + public String getForceQuote() { return forceQuote; } - public void setForceQuote(boolean forceQuote) { + public void setForceQuote(String forceQuote) { + + Assert.notNull(forceQuote); this.forceQuote = forceQuote; } @@ -103,12 +102,12 @@ public class EntityMapping { EntityMapping other = (EntityMapping) that; - return this.entityClassName.equals(other.entityClassName) - && (forceQuote ? quotedCqlId(this.tableName) : cqlId(this.tableName)).equals(other.tableName); + return this.entityClassName.equals(other.entityClassName) && this.forceQuote.equals(other.forceQuote) + && this.tableName.equals(other.tableName); } @Override public int hashCode() { - return entityClassName.hashCode() ^ (forceQuote ? quotedCqlId(this.tableName) : cqlId(this.tableName)).hashCode(); + return entityClassName.hashCode() ^ forceQuote.hashCode() ^ tableName.hashCode(); } } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/collections/CollectionsRowValueProviderTest.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/collections/CollectionsRowValueProviderTest.java index c168323bd..b7d3a7b95 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/collections/CollectionsRowValueProviderTest.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/collections/CollectionsRowValueProviderTest.java @@ -15,10 +15,7 @@ */ package org.springframework.data.cassandra.test.integration.collections; -import static org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification.createKeyspace; - import java.io.IOException; -import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -31,9 +28,7 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification; import org.springframework.context.annotation.Configuration; -import org.springframework.data.cassandra.config.SchemaAction; import org.springframework.data.cassandra.test.integration.simpletons.Book; import org.springframework.data.cassandra.test.integration.simpletons.BookHistory; import org.springframework.data.cassandra.test.integration.simpletons.BookReference; @@ -56,16 +51,6 @@ public class CollectionsRowValueProviderTest extends AbstractSpringDataEmbeddedC @Configuration public static class Config extends IntegrationTestConfig { - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } - - @Override - protected List getKeyspaceCreations() { - return Arrays.asList(createKeyspace().name(getKeyspaceName()).withSimpleReplication()); - } - @Override public String[] getEntityBasePackages() { return new String[] { Book.class.getPackage().getName() }; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/composites/CommentRepositoryJavaConfigIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/composites/CommentRepositoryJavaConfigIntegrationTests.java index 2a3ea384c..07ffa027c 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/composites/CommentRepositoryJavaConfigIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/composites/CommentRepositoryJavaConfigIntegrationTests.java @@ -15,18 +15,11 @@ */ package org.springframework.data.cassandra.test.integration.composites; -import static org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification.createKeyspace; - -import java.util.ArrayList; -import java.util.List; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification; import org.springframework.context.annotation.Configuration; -import org.springframework.data.cassandra.config.SchemaAction; import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; import org.springframework.data.cassandra.test.integration.repository.UserRepository; @@ -48,24 +41,10 @@ public class CommentRepositoryJavaConfigIntegrationTests extends AbstractSpringD @EnableCassandraRepositories(basePackageClasses = CommentRepository.class) public static class Config extends IntegrationTestConfig { - @Override - protected String getKeyspaceName() { - return CommentRepositoryJavaConfigIntegrationTests.class.getSimpleName(); - } - - @Override - protected List getKeyspaceCreations() { - List creates = new ArrayList(); - - creates.add(createKeyspace().name(getKeyspaceName()).withSimpleReplication()); - - return creates; - } - - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } + // @Override + // protected String getKeyspaceName() { + // return CommentRepositoryJavaConfigIntegrationTests.class.getSimpleName(); + // } @Override public String[] getEntityBasePackages() { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/Explicit.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/Explicit.java new file mode 100644 index 000000000..62c1f961c --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/Explicit.java @@ -0,0 +1,31 @@ +package org.springframework.data.cassandra.test.integration.forcequote.config; + +import java.util.UUID; + +import org.springframework.data.cassandra.mapping.PrimaryKey; +import org.springframework.data.cassandra.mapping.Table; + +@Table(forceQuote = true, value = Explicit.TABLE_NAME) +public class Explicit { + + public static final String TABLE_NAME = "Xx"; + + @PrimaryKey + String key; + + public Explicit() { + this(UUID.randomUUID().toString()); + } + + public Explicit(String key) { + setKey(key); + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitRepository.java new file mode 100644 index 000000000..3dec3a438 --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ExplicitRepository.java @@ -0,0 +1,6 @@ +package org.springframework.data.cassandra.test.integration.forcequote.config; + +import org.springframework.data.cassandra.repository.CassandraRepository; + +public interface ExplicitRepository extends CassandraRepository { +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryIntegrationTests.java new file mode 100644 index 000000000..4dd20e4c6 --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryIntegrationTests.java @@ -0,0 +1,58 @@ +package org.springframework.data.cassandra.test.integration.forcequote.config; + +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; + +import org.springframework.data.cassandra.core.CassandraTemplate; + +public class ForceQuotedRepositoryIntegrationTests { + + ImplicitRepository implicits; + ExplicitRepository explicits; + CassandraTemplate template; + + public ForceQuotedRepositoryIntegrationTests() { + } + + public ForceQuotedRepositoryIntegrationTests(ImplicitRepository implicits, ExplicitRepository explicits, + CassandraTemplate template) { + this.implicits = implicits; + this.explicits = explicits; + this.template = template; + } + + public void before() { + template.deleteAll(Implicit.class); + } + + public void testImplicit() { + Implicit entity = new Implicit(); + String key = entity.getKey(); + + Implicit si = implicits.save(entity); + assertSame(si, entity); + + Implicit fi = implicits.findOne(key); + assertNotSame(fi, entity); + + implicits.delete(key); + + assertNull(implicits.findOne(key)); + } + + public void testExplicit() { + Explicit entity = new Explicit(); + String key = entity.getKey(); + + Explicit si = explicits.save(entity); + assertSame(si, entity); + + Explicit fi = explicits.findOne(key); + assertNotSame(fi, entity); + + explicits.delete(key); + + assertNull(explicits.findOne(key)); + } +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryJavaConfigIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryJavaConfigIntegrationTests.java new file mode 100644 index 000000000..13c48298b --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryJavaConfigIntegrationTests.java @@ -0,0 +1,50 @@ +package org.springframework.data.cassandra.test.integration.forcequote.config; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.cassandra.core.CassandraTemplate; +import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; +import org.springframework.data.cassandra.test.integration.support.AbstractSpringDataEmbeddedCassandraIntegrationTest; +import org.springframework.data.cassandra.test.integration.support.IntegrationTestConfig; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration +public class ForceQuotedRepositoryJavaConfigIntegrationTests extends AbstractSpringDataEmbeddedCassandraIntegrationTest { + + @Configuration + @EnableCassandraRepositories(basePackageClasses = ForceQuotedRepositoryIntegrationTests.class) + public static class Config extends IntegrationTestConfig { + } + + @Autowired + ImplicitRepository implicits; + + @Autowired + ExplicitRepository explicits; + + @Autowired + CassandraTemplate template; + + ForceQuotedRepositoryIntegrationTests tests; + + @Before + public void before() { + tests = new ForceQuotedRepositoryIntegrationTests(implicits, explicits, template); + tests.before(); + } + + @Test + public void testImplicit() { + tests.testImplicit(); + } + + @Test + public void testExplicit() { + tests.testExplicit(); + } +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryXmlConfigIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryXmlConfigIntegrationTests.java new file mode 100644 index 000000000..c94b40b28 --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryXmlConfigIntegrationTests.java @@ -0,0 +1,42 @@ +package org.springframework.data.cassandra.test.integration.forcequote.config; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.cassandra.core.CassandraTemplate; +import org.springframework.data.cassandra.test.integration.support.AbstractSpringDataEmbeddedCassandraIntegrationTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration +public class ForceQuotedRepositoryXmlConfigIntegrationTests extends AbstractSpringDataEmbeddedCassandraIntegrationTest { + + @Autowired + ImplicitRepository implicits; + + @Autowired + ExplicitRepository explicits; + + @Autowired + CassandraTemplate template; + + ForceQuotedRepositoryIntegrationTests tests; + + @Before + public void before() { + tests = new ForceQuotedRepositoryIntegrationTests(implicits, explicits, template); + tests.before(); + } + + @Test + public void testImplicit() { + tests.testImplicit(); + } + + @Test + public void testExplicit() { + tests.testExplicit(); + } +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/Implicit.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/Implicit.java new file mode 100644 index 000000000..87cd247eb --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/Implicit.java @@ -0,0 +1,29 @@ +package org.springframework.data.cassandra.test.integration.forcequote.config; + +import java.util.UUID; + +import org.springframework.data.cassandra.mapping.PrimaryKey; +import org.springframework.data.cassandra.mapping.Table; + +@Table(forceQuote = true) +public class Implicit { + + @PrimaryKey + String key; + + public Implicit() { + this(UUID.randomUUID().toString()); + } + + public Implicit(String key) { + setKey(key); + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitRepository.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitRepository.java new file mode 100644 index 000000000..606f3fea7 --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/config/ImplicitRepository.java @@ -0,0 +1,6 @@ +package org.springframework.data.cassandra.test.integration.forcequote.config; + +import org.springframework.data.cassandra.repository.CassandraRepository; + +public interface ImplicitRepository extends CassandraRepository { +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/simple/ForceQuotedEntitiesSimpleIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/simple/ForceQuotedEntitiesSimpleIntegrationTests.java new file mode 100644 index 000000000..1966dd64b --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/forcequote/simple/ForceQuotedEntitiesSimpleIntegrationTests.java @@ -0,0 +1,39 @@ +package org.springframework.data.cassandra.test.integration.forcequote.simple; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.springframework.data.cassandra.mapping.BasicCassandraPersistentEntity; +import org.springframework.data.cassandra.mapping.Table; +import org.springframework.data.util.ClassTypeInformation; + +public class ForceQuotedEntitiesSimpleIntegrationTests { + + @Test + public void testImplicitTableNameForceQuoted() { + BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity( + ClassTypeInformation.from(ImplicitTableNameForceQuoted.class)); + + assertEquals("\"" + ImplicitTableNameForceQuoted.class.getSimpleName() + "\"", entity.getTableName().toCql()); + assertEquals(ImplicitTableNameForceQuoted.class.getSimpleName(), entity.getTableName().getUnquoted()); + } + + @Table(forceQuote = true) + public static class ImplicitTableNameForceQuoted { + } + + public static final String EXPLICIT_TABLE_NAME = "Xx"; + + @Test + public void testExplicitTableNameForceQuoted() { + BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity( + ClassTypeInformation.from(ExplicitTableNameForceQuoted.class)); + + assertEquals("\"" + EXPLICIT_TABLE_NAME + "\"", entity.getTableName().toCql()); + assertEquals(EXPLICIT_TABLE_NAME, entity.getTableName().getUnquoted()); + } + + @Table(value = EXPLICIT_TABLE_NAME, forceQuote = true) + public static class ExplicitTableNameForceQuoted { + } +} \ No newline at end of file diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/BasicCassandraPersistentEntityIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/BasicCassandraPersistentEntityIntegrationTests.java index 2449945b9..9ac54d563 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/BasicCassandraPersistentEntityIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/BasicCassandraPersistentEntityIntegrationTests.java @@ -26,16 +26,16 @@ import org.mockito.runners.MockitoJUnitRunner; import org.springframework.context.ApplicationContext; import org.springframework.data.cassandra.mapping.BasicCassandraPersistentEntity; import org.springframework.data.cassandra.mapping.Table; -import org.springframework.data.cassandra.test.integration.support.AbstractSpringDataEmbeddedCassandraIntegrationTest; import org.springframework.data.util.ClassTypeInformation; /** * Integration tests for {@link BasicCassandraPersistentEntity}. * * @author Alex Shvid + * @author Matthew T. Adams */ @RunWith(MockitoJUnitRunner.class) -public class BasicCassandraPersistentEntityIntegrationTests extends AbstractSpringDataEmbeddedCassandraIntegrationTest { +public class BasicCassandraPersistentEntityIntegrationTests { @Mock ApplicationContext context; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/repository/UserRepositoryJavaConfigIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/repository/UserRepositoryJavaConfigIntegrationTests.java index 6f5e5196a..992dd8ec0 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/repository/UserRepositoryJavaConfigIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/repository/UserRepositoryJavaConfigIntegrationTests.java @@ -15,19 +15,11 @@ */ package org.springframework.data.cassandra.test.integration.repository; -import static org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification.createKeyspace; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification; import org.springframework.context.annotation.Configuration; -import org.springframework.data.cassandra.config.SchemaAction; import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; import org.springframework.data.cassandra.test.integration.support.AbstractSpringDataEmbeddedCassandraIntegrationTest; @@ -48,24 +40,10 @@ public class UserRepositoryJavaConfigIntegrationTests extends AbstractSpringData @EnableCassandraRepositories(basePackageClasses = UserRepository.class) public static class Config extends IntegrationTestConfig { - @Override - protected String getKeyspaceName() { - return UserRepositoryJavaConfigIntegrationTests.class.getSimpleName(); - } - - @Override - protected List getKeyspaceCreations() { - List creates = new ArrayList(); - - creates.add(createKeyspace().name(getKeyspaceName()).withSimpleReplication()); - - return creates; - } - - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } + // @Override + // protected String getKeyspaceName() { + // return UserRepositoryJavaConfigIntegrationTests.class.getSimpleName(); + // } @Override public String[] getEntityBasePackages() { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/support/IntegrationTestConfig.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/support/IntegrationTestConfig.java index f16ff8f21..5c13d75a6 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/support/IntegrationTestConfig.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/support/IntegrationTestConfig.java @@ -15,8 +15,15 @@ */ package org.springframework.data.cassandra.test.integration.support; +import static org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification.createKeyspace; + +import java.util.Arrays; +import java.util.List; + +import org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification; import org.springframework.cassandra.test.unit.support.Utils; import org.springframework.context.annotation.Configuration; +import org.springframework.data.cassandra.config.SchemaAction; import org.springframework.data.cassandra.config.java.AbstractSpringDataCassandraConfiguration; /** @@ -34,13 +41,23 @@ public class IntegrationTestConfig extends AbstractSpringDataCassandraConfigurat public String keyspaceName = Utils.randomKeyspaceName(); + @Override + protected int getPort() { + return PORT; + } + + @Override + public SchemaAction getSchemaAction() { + return SchemaAction.RECREATE; + } + @Override protected String getKeyspaceName() { return keyspaceName; } @Override - protected int getPort() { - return PORT; + protected List getKeyspaceCreations() { + return Arrays.asList(createKeyspace().name(getKeyspaceName()).withSimpleReplication()); } } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraDataOperationsTest.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraDataOperationsTest.java index 987a63624..9fd7bffdb 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraDataOperationsTest.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraDataOperationsTest.java @@ -15,11 +15,7 @@ */ package org.springframework.data.cassandra.test.integration.template; -import static org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification.createKeyspace; - -import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.UUID; @@ -31,9 +27,7 @@ import org.junit.runner.RunWith; import org.springframework.cassandra.core.ConsistencyLevel; import org.springframework.cassandra.core.QueryOptions; import org.springframework.cassandra.core.RetryPolicy; -import org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification; import org.springframework.context.annotation.Configuration; -import org.springframework.data.cassandra.config.SchemaAction; import org.springframework.data.cassandra.test.integration.simpletons.Book; import org.springframework.data.cassandra.test.integration.support.AbstractSpringDataEmbeddedCassandraIntegrationTest; import org.springframework.data.cassandra.test.integration.support.IntegrationTestConfig; @@ -56,16 +50,6 @@ public class CassandraDataOperationsTest extends AbstractSpringDataEmbeddedCassa @Configuration public static class Config extends IntegrationTestConfig { - @Override - public SchemaAction getSchemaAction() { - return SchemaAction.RECREATE; - } - - @Override - protected List getKeyspaceCreations() { - return Arrays.asList(createKeyspace().name(getKeyspaceName()).withSimpleReplication()); - } - @Override public String[] getEntityBasePackages() { return new String[] { Book.class.getPackage().getName() }; diff --git a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryXmlConfigIntegrationTests-context.xml b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryXmlConfigIntegrationTests-context.xml new file mode 100644 index 000000000..4357dea16 --- /dev/null +++ b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/test/integration/forcequote/config/ForceQuotedRepositoryXmlConfigIntegrationTests-context.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + +