diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/core/Ordering.java b/spring-cassandra/src/main/java/org/springframework/cassandra/core/Ordering.java index 72fdc7632..1a2d48fc2 100644 --- a/spring-cassandra/src/main/java/org/springframework/cassandra/core/Ordering.java +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/core/Ordering.java @@ -15,12 +15,15 @@ */ package org.springframework.cassandra.core; +import java.util.Comparator; + /** - * Enum for Cassandra primary key column ordering. + * Enum for Cassandra primary key column ordering. Implements {@link Comparator} in that {@link Ordering#ASCENDING} is + * ordered before {@link Ordering#DESCENDING}. * * @author Matthew T. Adams */ -public enum Ordering { +public enum Ordering implements Comparator { /** * Ascending Cassandra column ordering. @@ -44,4 +47,18 @@ public enum Ordering { public String cql() { return cql; } + + @Override + public int compare(Ordering l, Ordering r) { + if (l == r) { + return 0; + } + if (l == null && r != null) { + return 1; + } + if (l != null && r == null) { + return -1; + } + return (l == ASCENDING && r == DESCENDING) ? 1 : -1; + } } \ No newline at end of file diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/core/PrimaryKeyType.java b/spring-cassandra/src/main/java/org/springframework/cassandra/core/PrimaryKeyType.java index 6a729626a..c6df3ac18 100644 --- a/spring-cassandra/src/main/java/org/springframework/cassandra/core/PrimaryKeyType.java +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/core/PrimaryKeyType.java @@ -15,13 +15,16 @@ */ package org.springframework.cassandra.core; +import java.util.Comparator; + /** - * Values representing primary key column types. + * Values representing primary key column types. Implements {@link Comparator} in that + * {@link PrimaryKeyType#PARTITIONED} is ordered before {@link PrimaryKeyType#CLUSTERED}. * * @author Matthew T. Adams * @author Alex Shvid */ -public enum PrimaryKeyType { +public enum PrimaryKeyType implements Comparator { /** * Used for a column that is part of the partition key. @@ -31,5 +34,19 @@ public enum PrimaryKeyType { /** * Used for a column that is clustered key. */ - CLUSTERED + CLUSTERED; + + @Override + public int compare(PrimaryKeyType l, PrimaryKeyType r) { + if (l == r) { + return 0; + } + if (l == null && r != null) { + return 1; + } + if (l != null && r == null) { + return -1; + } + return l == PARTITIONED && r == CLUSTERED ? 1 : -1; + } } \ No newline at end of file diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/CassandraPropertyValueProvider.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/CassandraPropertyValueProvider.java index 1c0c11653..d308945f9 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/CassandraPropertyValueProvider.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/CassandraPropertyValueProvider.java @@ -55,10 +55,7 @@ public class CassandraPropertyValueProvider implements PropertyValueProvider T getPropertyValue(CassandraPersistentProperty property) { @@ -75,10 +72,6 @@ public class CassandraPropertyValueProvider implements PropertyValueProvider S readRowInternal(final CassandraPersistentEntity entity, final Row row) { + protected S readEntityFromRow(final CassandraPersistentEntity entity, final Row row) { final DefaultSpELExpressionEvaluator evaluator = new DefaultSpELExpressionEvaluator(row, spELContext); @@ -290,7 +290,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter implem if (pkProp.isPartitionKeyColumn()) { spec.partitionKeyColumn(pkProp.getColumnName(), pkProp.getDataType()); } else { - spec.clusteredKeyColumn(pkProp.getColumnName(), pkProp.getDataType(), pkProp.getOrdering()); + spec.clusteredKeyColumn(pkProp.getColumnName(), pkProp.getDataType(), pkProp.getPrimaryKeyOrdering()); } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ClassNameToTableNameConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ClassNameToTableNameConverter.java deleted file mode 100644 index aee4faf3f..000000000 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ClassNameToTableNameConverter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.springframework.data.cassandra.core; - -import org.springframework.core.convert.converter.Converter; - -public interface ClassNameToTableNameConverter extends Converter { -} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ColumnNameToFieldNameConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ColumnNameToFieldNameConverter.java deleted file mode 100644 index 627873cd1..000000000 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ColumnNameToFieldNameConverter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.springframework.data.cassandra.core; - -import org.springframework.core.convert.converter.Converter; - -public interface ColumnNameToFieldNameConverter extends Converter { -} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/FieldNameToColumnNameConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/FieldNameToColumnNameConverter.java deleted file mode 100644 index 7d0d888ee..000000000 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/FieldNameToColumnNameConverter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.springframework.data.cassandra.core; - -import org.springframework.core.convert.converter.Converter; - -public interface FieldNameToColumnNameConverter extends Converter { -} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/TableNameToClassNameConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/TableNameToClassNameConverter.java deleted file mode 100644 index 02a88d3fe..000000000 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/TableNameToClassNameConverter.java +++ /dev/null @@ -1,6 +0,0 @@ -package org.springframework.data.cassandra.core; - -import org.springframework.core.convert.converter.Converter; - -public interface TableNameToClassNameConverter extends Converter { -} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentEntity.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentEntity.java index e649c7bcf..2b8be6e6b 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentEntity.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentEntity.java @@ -51,7 +51,7 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity typeInformation) { - super(typeInformation, CassandraPersistentPropertyColumnNameComparator.INSTANCE); + super(typeInformation, DefaultCassandraPersistentPropertyColumnComparator.IT); this.parser = new SpelExpressionParser(); this.context = new StandardEvaluationContext(); @@ -59,7 +59,7 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity rawType = typeInformation.getType(); Table anno = rawType.getAnnotation(Table.class); - this.table = anno != null && StringUtils.hasText(anno.name()) ? anno.name() : CassandraNamingUtils + this.table = anno != null && StringUtils.hasText(anno.value()) ? anno.value() : CassandraNamingUtils .getPreferredTableName(rawType); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentProperty.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentProperty.java index 1ca9e6a9c..6513b7fe1 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentProperty.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentProperty.java @@ -64,7 +64,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP @Override public boolean isCompositePrimaryKey() { - return getField().getType().isAnnotationPresent(CompositePrimaryKey.class); + return getField().getType().isAnnotationPresent(PrimaryKeyClass.class); } @Override @@ -85,6 +85,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP return (CassandraPersistentEntity) ClassTypeInformation.from(getCompositePrimaryKeyType()); } + @Override public String getColumnName() { // first check @Column annotation @@ -93,23 +94,25 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP return column.value(); } - // else check @KeyColumn annotation + // else check @PrimaryKeyColumn annotation PrimaryKeyColumn pk = findAnnotation(PrimaryKeyColumn.class); - if (pk != null && StringUtils.hasText(pk.value())) { - return pk.value(); + if (pk != null && StringUtils.hasText(pk.name())) { + return pk.name(); } // else default - return field.getName().toLowerCase(); + return field.getName().toLowerCase(); // TODO: replace with naming strategy class } - public Ordering getOrdering() { + @Override + public Ordering getPrimaryKeyOrdering() { PrimaryKeyColumn anno = findAnnotation(PrimaryKeyColumn.class); return anno == null ? null : anno.ordering(); } + @Override public DataType getDataType() { CassandraType annotation = findAnnotation(CassandraType.class); @@ -180,10 +183,12 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP } } + @Override public boolean isIndexed() { return isAnnotationPresent(Indexed.class); } + @Override public boolean isPartitionKeyColumn() { PrimaryKeyColumn anno = findAnnotation(PrimaryKeyColumn.class); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CachingCassandraPersistentProperty.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CachingCassandraPersistentProperty.java index 0b4d05ed7..06ddc4aaa 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CachingCassandraPersistentProperty.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CachingCassandraPersistentProperty.java @@ -97,10 +97,10 @@ public class CachingCassandraPersistentProperty extends BasicCassandraPersistent } @Override - public Ordering getOrdering() { + public Ordering getPrimaryKeyOrdering() { if (!orderingCached) { - ordering = super.getOrdering(); + ordering = super.getPrimaryKeyOrdering(); orderingCached = true; } return ordering; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentProperty.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentProperty.java index 5b54b024c..3fb346fdb 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentProperty.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentProperty.java @@ -53,7 +53,7 @@ public interface CassandraPersistentProperty extends PersistentProperty { +public enum DefaultCassandraPersistentPropertyColumnComparator implements Comparator { - INSTANCE; + /** + * The sole instance of this class. + */ + IT; + @Override public int compare(CassandraPersistentProperty o1, CassandraPersistentProperty o2) { return o1.getColumnName().compareTo(o2.getColumnName()); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/DefaultCassandraPrimaryKeyColumnComparator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/DefaultCassandraPrimaryKeyColumnComparator.java new file mode 100644 index 000000000..db70c908e --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/DefaultCassandraPrimaryKeyColumnComparator.java @@ -0,0 +1,49 @@ +package org.springframework.data.cassandra.mapping; + +import java.util.Comparator; + +import org.springframework.cassandra.core.Ordering; +import org.springframework.cassandra.core.PrimaryKeyType; + +/** + * {@link Comparator} implementation that uses, in order, the + *
    + *
  • {@link PrimaryKeyColumn#type()}, then, if ordered the same,
  • + *
  • {@link PrimaryKeyColumn#ordinal()}, then, if ordered the same
  • + *
  • {@link PrimaryKeyColumn#name()}, then, if ordered the same,
  • + *
  • {@link PrimaryKeyColumn#ordering()}.
  • + *
+ * + * @see PrimaryKeyType#compareTo(PrimaryKeyType) + * @see Ordering#compareTo(Ordering) + * + * @author Matthew T. Adams + */ +public enum DefaultCassandraPrimaryKeyColumnComparator implements Comparator { + + /** + * The sole instance of this class. + */ + IT; + + @Override + public int compare(PrimaryKeyColumn o1, PrimaryKeyColumn o2) { + + int comparison = o1.type().compareTo(o2.type()); + if (comparison != 0) { + return comparison; + } + + comparison = new Integer(o1.ordinal()).compareTo(o2.ordinal()); + if (comparison != 0) { + return comparison; + } + + comparison = o1.name().compareTo(o2.name()); + if (comparison != 0) { + return comparison; + } + + return o1.ordering().compareTo(o2.ordering()); + } +} \ No newline at end of file diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKey.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKey.java index a738af9f9..ddc284963 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKey.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKey.java @@ -24,7 +24,11 @@ import org.springframework.data.annotation.Id; /** * Identifies the primary key field of the entity, which may be of a basic type or of a type that represents a composite - * primary key class. This field corresponds to the PRIMARY KEY of the corresponding Cassandra table. + * primary key class. This field corresponds to the PRIMARY KEY of the corresponding Cassandra table. Only + * one field in a given type hierarchy may be annotated with this annotation. + *

+ * Remember, if the Cassandra table has multiple primary key columns, then you must define a class annotated with + * {@link PrimaryKeyClass} to represent the primary key! * * @author Alex Shvid * @author Matthew T. Adams diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CompositePrimaryKey.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKeyClass.java similarity index 73% rename from spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CompositePrimaryKey.java rename to spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKeyClass.java index 8288da4ea..c99049bd5 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CompositePrimaryKey.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKeyClass.java @@ -22,7 +22,10 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Defines composite primary key class in the Cassandra table that contains several fields. + * Annotates a type that represents the identity type of another class whose instances are stored in a table. + *

+ * If your Cassandra table has multiple primary key columns, then you must define a primary key class, annotate it with + * this annotation, and use that class as the {@link PrimaryKey} of your entity class! * * @author Alex Shvid * @author Matthew T. Adams @@ -30,5 +33,5 @@ import java.lang.annotation.Target; @Inherited @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.TYPE }) -public @interface CompositePrimaryKey { +public @interface PrimaryKeyClass { } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKeyColumn.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKeyColumn.java index ce6861a53..d21f4ee49 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKeyColumn.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/PrimaryKeyColumn.java @@ -26,6 +26,8 @@ import org.springframework.cassandra.core.PrimaryKeyType; /** * Identifies the annotated field of a composite primary key class as a primary key field that is either a partition or * cluster key field. + * + * @author Matthew T. Adams */ @Retention(value = RetentionPolicy.RUNTIME) @Target(value = { ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE }) @@ -34,10 +36,10 @@ public @interface PrimaryKeyColumn { /** * The name of the column in the table. */ - String value() default ""; + String name() default ""; /** - * The order of this column among all primary key columns. + * The order of this column relative to other primary key columns. */ int ordinal(); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/Table.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/Table.java index c875102af..d11a2448a 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/Table.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/Table.java @@ -27,6 +27,7 @@ import org.springframework.data.annotation.Persistent; * Identifies a domain object to be persisted to Cassandra as a table. * * @author Alex Shvid + * @author Matthew T. Adams */ @Persistent @Inherited @@ -34,6 +35,8 @@ import org.springframework.data.annotation.Persistent; @Target({ ElementType.TYPE }) public @interface Table { - String name() default ""; - + /** + * The name of the table; must be a valid CQL identifier or quoted identifier. + */ + String value() default ""; } 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 0112a2ae1..b5940e112 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 @@ -25,7 +25,6 @@ import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.thrift.transport.TTransportException; import org.cassandraunit.utils.EmbeddedCassandraServerHelper; import org.junit.After; -import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -70,19 +69,19 @@ public class BasicCassandraPersistentEntityIntegrationTests { } @Test - public void collectionAllowsReferencingSpringBean() { + public void tableAllowsReferencingSpringBean() { - MappingBean bean = new MappingBean(); - bean.userLine = "user_line"; + TableNameHolderThingy bean = new TableNameHolderThingy(); + bean.tableName = "my_user_line"; - when(context.getBean("mappingBean")).thenReturn(bean); - when(context.containsBean("mappingBean")).thenReturn(true); + when(context.getBean("tableNameHolderThingy")).thenReturn(bean); + when(context.containsBean("tableNameHolderThingy")).thenReturn(true); BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity( ClassTypeInformation.from(UserLine.class)); entity.setApplicationContext(context); - assertThat(entity.getTableName(), is("user_line")); + assertThat(entity.getTableName(), is(bean.tableName)); } @After @@ -90,36 +89,31 @@ public class BasicCassandraPersistentEntityIntegrationTests { EmbeddedCassandraServerHelper.cleanEmbeddedCassandra(); } - @AfterClass - public static void stopCassandra() { - EmbeddedCassandraServerHelper.stopEmbeddedCassandra(); - } - - @Table(name = "messages") - class Message { + @Table("messages") + static class Message { } - class Notification extends Message { + static class Notification extends Message { } - @Table(name = "#{123}") - class Area { + @Table("#{123}") + static class Area { } - @Table(name = "#{mappingBean.userLine}") - class UserLine { + @Table("#{tableNameHolderThingy.tableName}") + static class UserLine { } - class MappingBean { + static class TableNameHolderThingy { - String userLine; + String tableName; - public String getUserLine() { - return userLine; + public String getTableName() { + return tableName; } } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/CompoundPrimaryKeyIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/CompoundPrimaryKeyIntegrationTests.java new file mode 100644 index 000000000..60601573c --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/CompoundPrimaryKeyIntegrationTests.java @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2011 by the original author(s). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.cassandra.test.integration.mapping; + +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.Field; +import java.util.Date; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.data.cassandra.mapping.BasicCassandraPersistentEntity; +import org.springframework.data.cassandra.mapping.BasicCassandraPersistentProperty; +import org.springframework.data.cassandra.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.mapping.CassandraPersistentProperty; +import org.springframework.data.cassandra.mapping.CassandraSimpleTypeHolder; +import org.springframework.data.cassandra.mapping.Column; +import org.springframework.data.cassandra.mapping.PrimaryKey; +import org.springframework.data.cassandra.mapping.PrimaryKeyClass; +import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; +import org.springframework.data.util.ClassTypeInformation; +import org.springframework.util.ReflectionUtils; + +/** + * Integration test for {@link BasicCassandraPersistentProperty}. + * + * @author Alex Shvid + */ +public class CompoundPrimaryKeyIntegrationTests { + + @PrimaryKeyClass + static class TimelineKey { + + @PrimaryKeyColumn(ordinal = 0) + String id; + + @PrimaryKeyColumn(ordinal = 1) + Date dt; + } + + static class Timeline { + + @PrimaryKey + TimelineKey id; + + @Column("message") + String text; + + } + + CassandraPersistentEntity entity; + + @Before + public void setup() { + entity = new BasicCassandraPersistentEntity(ClassTypeInformation.from(Timeline.class)); + } + + @Test + public void checksIdProperty() { + Field field = ReflectionUtils.findField(Timeline.class, "id"); + CassandraPersistentProperty property = getPropertyFor(field); + assertTrue(property.isIdProperty()); + } + + private CassandraPersistentProperty getPropertyFor(Field field) { + return new BasicCassandraPersistentProperty(field, null, entity, new CassandraSimpleTypeHolder()); + } +} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Book.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Book.java index e647f9da1..9ba3dd3b9 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Book.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Book.java @@ -24,7 +24,7 @@ import org.springframework.data.cassandra.mapping.Table; * @author David Webb * */ -@Table(name = "book") +@Table("book") public class Book { @PrimaryKey @@ -93,6 +93,7 @@ public class Book { /* (non-Javadoc) * @see java.lang.Object#toString() */ + @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("isbn -> " + isbn).append("\n"); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Comment.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Comment.java index b7b02b3d8..f01875f11 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Comment.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Comment.java @@ -30,7 +30,7 @@ import com.datastax.driver.core.DataType; * * @author Alex Shvid */ -@Table(name = "comments") +@Table("comments") public class Comment { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/CommentPK.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/CommentPK.java index 6ebe1ad8f..3a870b9ea 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/CommentPK.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/CommentPK.java @@ -18,7 +18,7 @@ package org.springframework.data.cassandra.test.integration.table; import java.util.Date; import org.springframework.cassandra.core.PrimaryKeyType; -import org.springframework.data.cassandra.mapping.CompositePrimaryKey; +import org.springframework.data.cassandra.mapping.PrimaryKeyClass; import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; import org.springframework.data.cassandra.mapping.CassandraType; @@ -30,7 +30,7 @@ import com.datastax.driver.core.DataType; * @author Alex Shvid */ -@CompositePrimaryKey +@PrimaryKeyClass public class CommentPK { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/LogEntry.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/LogEntry.java index d2650f536..3ba920b46 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/LogEntry.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/LogEntry.java @@ -26,7 +26,7 @@ import org.springframework.data.cassandra.mapping.Table; * * @author Alex Shvid */ -@Table(name = "log_entry") +@Table("log_entry") public class LogEntry { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Notification.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Notification.java index 5b6ed07d7..999623fa9 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Notification.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Notification.java @@ -29,7 +29,7 @@ import org.springframework.data.cassandra.mapping.Table; * * @author Alex Shvid */ -@Table(name = "notifications") +@Table("notifications") public class Notification { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/NotificationPK.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/NotificationPK.java index 884a73f40..1689860e6 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/NotificationPK.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/NotificationPK.java @@ -18,7 +18,7 @@ package org.springframework.data.cassandra.test.integration.table; import java.util.Date; import org.springframework.cassandra.core.PrimaryKeyType; -import org.springframework.data.cassandra.mapping.CompositePrimaryKey; +import org.springframework.data.cassandra.mapping.PrimaryKeyClass; import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; import org.springframework.data.cassandra.mapping.CassandraType; @@ -32,7 +32,7 @@ import com.datastax.driver.core.DataType; * * @author Alex Shvid */ -@CompositePrimaryKey +@PrimaryKeyClass public class NotificationPK { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Post.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Post.java index c4d9317ff..89dcc4cc3 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Post.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Post.java @@ -31,7 +31,7 @@ import org.springframework.data.cassandra.mapping.Table; * * @author Alex Shvid */ -@Table(name = "posts") +@Table("posts") public class Post { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/PostPK.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/PostPK.java index b6f7e3630..fcdd78455 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/PostPK.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/PostPK.java @@ -18,7 +18,7 @@ package org.springframework.data.cassandra.test.integration.table; import java.util.Date; import org.springframework.cassandra.core.PrimaryKeyType; -import org.springframework.data.cassandra.mapping.CompositePrimaryKey; +import org.springframework.data.cassandra.mapping.PrimaryKeyClass; import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; /** @@ -31,7 +31,7 @@ import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; * @author Alex Shvid */ -@CompositePrimaryKey +@PrimaryKeyClass public class PostPK { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Timeline.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Timeline.java index 813f6a444..78d3d6854 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Timeline.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/Timeline.java @@ -29,7 +29,7 @@ import org.springframework.data.cassandra.mapping.Table; * * @author Alex Shvid */ -@Table(name = "timeline") +@Table("timeline") public class Timeline { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/TimelinePK.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/TimelinePK.java index 8a54f2191..1107868f1 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/TimelinePK.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/TimelinePK.java @@ -18,7 +18,7 @@ package org.springframework.data.cassandra.test.integration.table; import java.util.Date; import org.springframework.cassandra.core.PrimaryKeyType; -import org.springframework.data.cassandra.mapping.CompositePrimaryKey; +import org.springframework.data.cassandra.mapping.PrimaryKeyClass; import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; /** @@ -31,7 +31,7 @@ import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; * @author Alex Shvid */ -@CompositePrimaryKey +@PrimaryKeyClass public class TimelinePK { /* diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/User.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/User.java index 3bb91aeff..08179459a 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/User.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/table/User.java @@ -30,7 +30,7 @@ import org.springframework.data.cassandra.mapping.Table; * * @author Alex Shvid */ -@Table(name = "users") +@Table("users") public class User { /*