From adeb4df5e5a0cd8d0892104016383d41bd89f1de Mon Sep 17 00:00:00 2001 From: Matthew Adams Date: Wed, 11 Dec 2013 11:25:43 -0600 Subject: [PATCH] wip --- .../convert/MappingCassandraConverter.java | 2 +- .../core/CassandraAdminTemplate.java | 2 +- .../cassandra/core/CassandraDataTemplate.java | 2 +- .../core/CassandraKeyspaceFactoryBean.java | 2 +- .../BasicCassandraPersistentEntity.java | 38 +------ .../BasicCassandraPersistentProperty.java | 12 +- .../mapping/CassandraMappingContext.java | 2 +- .../mapping/CassandraPersistentEntity.java | 8 +- ...ersistentPropertyColumnNameComparator.java | 18 +++ .../mapping/CassandraSimpleTypeHolder.java | 105 ++++++++++++++++++ .../mapping/CassandraSimpleTypes.java | 104 ----------------- .../{Qualify.java => CassandraType.java} | 5 +- .../mapping/DataTypeInformation.java | 74 ------------ .../MappingCassandraEntityInformation.java | 2 +- ...andraPersistentEntityIntegrationTests.java | 6 +- ...draPersistentPropertyIntegrationTests.java | 53 +++------ .../test/integration/table/Comment.java | 4 +- .../test/integration/table/CommentPK.java | 4 +- .../integration/table/NotificationPK.java | 4 +- 19 files changed, 168 insertions(+), 279 deletions(-) create mode 100644 spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentPropertyColumnNameComparator.java create mode 100644 spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraSimpleTypeHolder.java delete mode 100644 spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraSimpleTypes.java rename spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/{Qualify.java => CassandraType.java} (89%) delete mode 100644 spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/DataTypeInformation.java diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/MappingCassandraConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/MappingCassandraConverter.java index 5afdf7a59..7284aeeb6 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/MappingCassandraConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/MappingCassandraConverter.java @@ -263,7 +263,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter implem final CreateTableSpecification spec = new CreateTableSpecification(); - spec.name(entity.getTable()); + spec.name(entity.getTableName()); entity.doWithProperties(new PropertyHandler() { public void doWithPersistentProperty(CassandraPersistentProperty prop) { 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 7a36405ff..9e8268b85 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 @@ -238,7 +238,7 @@ public class CassandraAdminTemplate implements CassandraAdminOperations { throw new InvalidDataAccessApiUsageException("No Persitent Entity information found for the class " + entityClass.getName()); } - return entity.getTable(); + return entity.getTableName(); } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataTemplate.java index e5d878536..bb9fbd520 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataTemplate.java @@ -390,7 +390,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr throw new InvalidDataAccessApiUsageException("No Persitent Entity information found for the class " + entityClass.getName()); } - return entity.getTable(); + return entity.getTableName(); } /* (non-Javadoc) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraKeyspaceFactoryBean.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraKeyspaceFactoryBean.java index 06d7bb784..e37e05bc1 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraKeyspaceFactoryBean.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraKeyspaceFactoryBean.java @@ -205,7 +205,7 @@ public class CassandraKeyspaceFactoryBean implements FactoryBean entityClass = ClassUtils.forName(entityClassName, this.beanClassLoader); CassandraPersistentEntity entity = determineEntity(entityClass); - String useTableName = tableAttributes.getName() != null ? tableAttributes.getName() : entity.getTable(); + String useTableName = tableAttributes.getName() != null ? tableAttributes.getName() : entity.getTableName(); if (keyspaceCreated) { createNewTable(session, useTableName, entity); 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 030be69c6..5bac36bcb 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 @@ -15,8 +15,6 @@ */ package org.springframework.data.cassandra.mapping; -import java.util.Comparator; - import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -32,7 +30,7 @@ import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.util.StringUtils; /** - * Cassandra specific {@link BasicPersistentEntity} implementation that adds Cassandra specific meta-data such as the + * Cassandra specific {@link BasicPersistentEntity} implementation that adds Cassandra specific metadata such as the * table name. * * @author Alex Shvid @@ -52,7 +50,7 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity typeInformation) { - super(typeInformation, CassandraPersistentPropertyComparator.INSTANCE); + super(typeInformation, CassandraPersistentPropertyColumnNameComparator.INSTANCE); this.parser = new SpelExpressionParser(); this.context = new StandardEvaluationContext(); @@ -68,10 +66,6 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity extends BasicPersistentEntity { - - INSTANCE; - - /* - * (non-Javadoc) - * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) - */ - 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/BasicCassandraPersistentProperty.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/BasicCassandraPersistentProperty.java index f3b4bd052..14fbb2ebf 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 @@ -91,7 +91,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP } public DataType getDataType() { - Qualify annotation = getField().getAnnotation(Qualify.class); + CassandraType annotation = getField().getAnnotation(CassandraType.class); if (annotation != null) { return qualifyAnnotatedType(annotation); } @@ -110,7 +110,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP return DataType.list(autodetectPrimitiveType(args.get(0).getType())); } } - DataType dataType = CassandraSimpleTypes.autodetectPrimitive(this.getType()); + DataType dataType = CassandraSimpleTypeHolder.getDataTypeFor(this.getType()); if (dataType == null) { throw new InvalidDataAccessApiUsageException( "only primitive types and Set,List,Map collections are allowed, unknown type for property '" + this.getName() @@ -119,7 +119,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP return dataType; } - private DataType qualifyAnnotatedType(Qualify annotation) { + private DataType qualifyAnnotatedType(CassandraType annotation) { DataType.Name type = annotation.type(); if (type.isCollection()) { switch (type) { @@ -138,7 +138,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP + "' type is '" + this.getType() + "' in the entity " + this.getOwner().getName()); } } else { - return CassandraSimpleTypes.resolvePrimitive(type); + return CassandraSimpleTypeHolder.getDataTypeFor(type); } } @@ -172,7 +172,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP } DataType resolvePrimitiveType(DataType.Name typeName) { - DataType dataType = CassandraSimpleTypes.resolvePrimitive(typeName); + DataType dataType = CassandraSimpleTypeHolder.getDataTypeFor(typeName); if (dataType == null) { throw new InvalidDataAccessApiUsageException( "only primitive types are allowed inside collections for the property '" + this.getName() + "' type is '" @@ -182,7 +182,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP } DataType autodetectPrimitiveType(Class javaType) { - DataType dataType = CassandraSimpleTypes.autodetectPrimitive(javaType); + DataType dataType = CassandraSimpleTypeHolder.getDataTypeFor(javaType); if (dataType == null) { throw new InvalidDataAccessApiUsageException( "only primitive types are allowed inside collections for the property '" + this.getName() + "' type is '" diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraMappingContext.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraMappingContext.java index 341de5a35..d2a054213 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraMappingContext.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraMappingContext.java @@ -42,7 +42,7 @@ public class CassandraMappingContext extends * Creates a new {@link CassandraMappingContext}. */ public CassandraMappingContext() { - setSimpleTypeHolder(CassandraSimpleTypes.HOLDER); + setSimpleTypeHolder(new CassandraSimpleTypeHolder()); } /* diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentEntity.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentEntity.java index 1c39ed007..444f5e50d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentEntity.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentEntity.java @@ -21,14 +21,12 @@ import org.springframework.data.mapping.PersistentEntity; * Cassandra specific {@link PersistentEntity} abstraction. * * @author Alex Shvid + * @author Matthew T. Adams */ public interface CassandraPersistentEntity extends PersistentEntity { /** - * Returns the table the entity shall be persisted to. - * - * @return + * Returns the table name to which the entity shall be persisted. */ - String getTable(); - + String getTableName(); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentPropertyColumnNameComparator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentPropertyColumnNameComparator.java new file mode 100644 index 000000000..c0b0650d1 --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraPersistentPropertyColumnNameComparator.java @@ -0,0 +1,18 @@ +package org.springframework.data.cassandra.mapping; + +import java.util.Comparator; + +/** + * {@link Comparator} implementation that uses the {@link CassandraPersistentProperty}'s column name for ordering. + * + * @author Alex Shvid + * @author Matthew T. Adams + */ +public enum CassandraPersistentPropertyColumnNameComparator implements Comparator { + + INSTANCE; + + public int compare(CassandraPersistentProperty o1, CassandraPersistentProperty o2) { + return o1.getColumnName().compareTo(o2.getColumnName()); + } +} \ No newline at end of file diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraSimpleTypeHolder.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraSimpleTypeHolder.java new file mode 100644 index 000000000..73eb4d5b7 --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraSimpleTypeHolder.java @@ -0,0 +1,105 @@ +/* + * Copyright 2010-2013 the original author or authors. + * + * 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.mapping; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.dao.InvalidDataAccessApiUsageException; +import org.springframework.data.mapping.model.SimpleTypeHolder; +import org.springframework.data.util.TypeInformation; + +import com.datastax.driver.core.DataType; + +/** + * Simple constant holder for a {@link SimpleTypeHolder} enriched with Cassandra specific simple types. + * + * @author Alex Shvid + * @author Matthew T. Adams + */ +public class CassandraSimpleTypeHolder extends SimpleTypeHolder { + + public static final Set> CASSANDRA_SIMPLE_TYPES; + + private static final Map, Class> primitiveTypesByWrapperType = new HashMap, Class>(8); + + private static final Map, DataType> dataTypesByJavaClass = new HashMap, DataType>(); + + private static final Map dataTypesByDataTypeName = new HashMap(); + + static { + + primitiveTypesByWrapperType.put(Boolean.class, boolean.class); + primitiveTypesByWrapperType.put(Byte.class, byte.class); + primitiveTypesByWrapperType.put(Character.class, char.class); + primitiveTypesByWrapperType.put(Double.class, double.class); + primitiveTypesByWrapperType.put(Float.class, float.class); + primitiveTypesByWrapperType.put(Integer.class, int.class); + primitiveTypesByWrapperType.put(Long.class, long.class); + primitiveTypesByWrapperType.put(Short.class, short.class); + + Set> simpleTypes = new HashSet>(); + + for (DataType dataType : DataType.allPrimitiveTypes()) { + + Class javaClass = dataType.asJavaClass(); + simpleTypes.add(javaClass); + + dataTypesByJavaClass.put(javaClass, dataType); + + Class primitiveJavaClass = primitiveTypesByWrapperType.get(javaClass); + if (primitiveJavaClass != null) { + dataTypesByJavaClass.put(primitiveJavaClass, dataType); + } + + dataTypesByDataTypeName.put(dataType.getName(), dataType); + } + + dataTypesByJavaClass.put(String.class, DataType.text()); + + CASSANDRA_SIMPLE_TYPES = Collections.unmodifiableSet(simpleTypes); + } + + public static DataType getDataTypeFor(DataType.Name name) { + return dataTypesByDataTypeName.get(name); + } + + public static DataType getDataTypeFor(Class javaClass) { + return dataTypesByJavaClass.get(javaClass); + } + + public static DataType.Name[] getDataTypeNamesFrom(List> arguments) { + DataType.Name[] array = new DataType.Name[arguments.size()]; + for (int i = 0; i != array.length; i++) { + TypeInformation typeInfo = arguments.get(i); + DataType dataType = getDataTypeFor(typeInfo.getType()); + if (dataType == null) { + throw new InvalidDataAccessApiUsageException("not found appropriate primitive DataType for type = '" + + typeInfo.getType()); + } + array[i] = dataType.getName(); + } + return array; + } + + public CassandraSimpleTypeHolder() { + super(CASSANDRA_SIMPLE_TYPES, true); + } +} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraSimpleTypes.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraSimpleTypes.java deleted file mode 100644 index 0ed4739ea..000000000 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraSimpleTypes.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2010-2013 the original author or authors. - * - * 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.mapping; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.springframework.dao.InvalidDataAccessApiUsageException; -import org.springframework.data.mapping.model.SimpleTypeHolder; -import org.springframework.data.util.TypeInformation; - -import com.datastax.driver.core.DataType; - -/** - * Simple constant holder for a {@link SimpleTypeHolder} enriched with Cassandra specific simple types. - * - * @author Alex Shvid - */ -public class CassandraSimpleTypes { - - private static final Map, Class> primitiveWrapperTypeMap = new HashMap, Class>(8); - - private static final Map, DataType> javaClassToDataType = new HashMap, DataType>(); - - private static final Map nameToDataType = new HashMap(); - - static { - - primitiveWrapperTypeMap.put(Boolean.class, boolean.class); - primitiveWrapperTypeMap.put(Byte.class, byte.class); - primitiveWrapperTypeMap.put(Character.class, char.class); - primitiveWrapperTypeMap.put(Double.class, double.class); - primitiveWrapperTypeMap.put(Float.class, float.class); - primitiveWrapperTypeMap.put(Integer.class, int.class); - primitiveWrapperTypeMap.put(Long.class, long.class); - primitiveWrapperTypeMap.put(Short.class, short.class); - - Set> simpleTypes = new HashSet>(); - - for (DataType dataType : DataType.allPrimitiveTypes()) { - - Class javaClass = dataType.asJavaClass(); - simpleTypes.add(javaClass); - - javaClassToDataType.put(javaClass, dataType); - - Class primitiveJavaClass = primitiveWrapperTypeMap.get(javaClass); - if (primitiveJavaClass != null) { - javaClassToDataType.put(primitiveJavaClass, dataType); - } - - nameToDataType.put(dataType.getName(), dataType); - } - - javaClassToDataType.put(String.class, DataType.text()); - CASSANDRA_SIMPLE_TYPES = Collections.unmodifiableSet(simpleTypes); - } - - private static final Set> CASSANDRA_SIMPLE_TYPES; - public static final SimpleTypeHolder HOLDER = new SimpleTypeHolder(CASSANDRA_SIMPLE_TYPES, true); - - private CassandraSimpleTypes() { - } - - public static DataType resolvePrimitive(DataType.Name name) { - return nameToDataType.get(name); - } - - public static DataType autodetectPrimitive(Class javaClass) { - return javaClassToDataType.get(javaClass); - } - - public static DataType.Name[] convertPrimitiveTypeArguments(List> arguments) { - DataType.Name[] result = new DataType.Name[arguments.size()]; - for (int i = 0; i != result.length; ++i) { - TypeInformation type = arguments.get(i); - DataType dataType = autodetectPrimitive(type.getType()); - if (dataType == null) { - throw new InvalidDataAccessApiUsageException("not found appropriate primitive DataType for type = '" - + type.getType()); - } - result[i] = dataType.getName(); - } - return result; - } - -} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/Qualify.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraType.java similarity index 89% rename from spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/Qualify.java rename to spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraType.java index 5c6772762..1b94c3e70 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/Qualify.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/CassandraType.java @@ -22,13 +22,14 @@ import java.lang.annotation.RetentionPolicy; import com.datastax.driver.core.DataType; /** - * Qualifies data type as Cassandra type. + * Specifies the Cassandra type of the annotated property. * * @author Alex Shvid + * @author Matthew T. Adams */ @Documented @Retention(RetentionPolicy.RUNTIME) -public @interface Qualify { +public @interface CassandraType { DataType.Name type(); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/DataTypeInformation.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/DataTypeInformation.java deleted file mode 100644 index 51e71f5d0..000000000 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/mapping/DataTypeInformation.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2010-2013 the original author or authors. - * - * 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.mapping; - -import com.datastax.driver.core.DataType; - -/** - * Uses to transfer DataType and attributes for the property. - * - * @author Alex Shvid - */ -public class DataTypeInformation { - - public static DataType.Name[] EMPTY_ATTRIBUTES = {}; - - private DataType.Name typeName; - private DataType.Name[] typeAttributes; - - public DataTypeInformation(DataType.Name typeName) { - this(typeName, EMPTY_ATTRIBUTES); - } - - public DataTypeInformation(DataType.Name typeName, DataType.Name[] typeAttributes) { - this.typeName = typeName; - this.typeAttributes = typeAttributes; - } - - public DataType.Name getTypeName() { - return typeName; - } - - public void setTypeName(DataType.Name typeName) { - this.typeName = typeName; - } - - public DataType.Name[] getTypeAttributes() { - return typeAttributes; - } - - public void setTypeAttributes(DataType.Name[] typeAttributes) { - this.typeAttributes = typeAttributes; - } - - public String toCQL() { - if (typeAttributes.length == 0) { - return typeName.name(); - } else { - StringBuilder str = new StringBuilder(); - str.append(typeName.name()); - str.append('<'); - for (int i = 0; i != typeAttributes.length; ++i) { - if (i != 0) { - str.append(','); - } - str.append(typeAttributes[i].name()); - } - str.append('>'); - return str.toString(); - } - } -} diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/MappingCassandraEntityInformation.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/MappingCassandraEntityInformation.java index a49c61178..c3385ad4e 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/MappingCassandraEntityInformation.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/MappingCassandraEntityInformation.java @@ -94,7 +94,7 @@ public class MappingCassandraEntityInformation exten */ @Override public String getTableName() { - return customTableName == null ? entityMetadata.getTable() : customTableName; + return customTableName == null ? entityMetadata.getTableName() : customTableName; } /* (non-Javadoc) 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 8fbd88315..0112a2ae1 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 @@ -58,7 +58,7 @@ public class BasicCassandraPersistentEntityIntegrationTests { BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity( ClassTypeInformation.from(Notification.class)); - assertThat(entity.getTable(), is("messages")); + assertThat(entity.getTableName(), is("messages")); } @Test @@ -66,7 +66,7 @@ public class BasicCassandraPersistentEntityIntegrationTests { BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity( ClassTypeInformation.from(Area.class)); - assertThat(entity.getTable(), is("123")); + assertThat(entity.getTableName(), is("123")); } @Test @@ -82,7 +82,7 @@ public class BasicCassandraPersistentEntityIntegrationTests { ClassTypeInformation.from(UserLine.class)); entity.setApplicationContext(context); - assertThat(entity.getTable(), is("user_line")); + assertThat(entity.getTableName(), is("user_line")); } @After diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/BasicCassandraPersistentPropertyIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/BasicCassandraPersistentPropertyIntegrationTests.java index 0dd7ad2f3..bcaede589 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/BasicCassandraPersistentPropertyIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/mapping/BasicCassandraPersistentPropertyIntegrationTests.java @@ -17,25 +17,19 @@ package org.springframework.data.cassandra.test.integration.mapping; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; -import java.io.IOException; import java.lang.reflect.Field; import java.util.Date; -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.Before; -import org.junit.BeforeClass; import org.junit.Test; -import org.springframework.data.annotation.Id; 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.Column; +import org.springframework.data.cassandra.mapping.PrimaryKey; import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.util.ClassTypeInformation; import org.springframework.util.ReflectionUtils; @@ -47,14 +41,20 @@ import org.springframework.util.ReflectionUtils; */ public class BasicCassandraPersistentPropertyIntegrationTests { - CassandraPersistentEntity entity; + static class Timeline { + + @PrimaryKey + String id; + + Date time; + + @Column("message") + String text; - @BeforeClass - public static void startCassandra() throws IOException, TTransportException, ConfigurationException, - InterruptedException { - EmbeddedCassandraServerHelper.startEmbeddedCassandra("cassandra.yaml"); } + CassandraPersistentEntity entity; + @Before public void setup() { entity = new BasicCassandraPersistentEntity(ClassTypeInformation.from(Timeline.class)); @@ -71,39 +71,16 @@ public class BasicCassandraPersistentPropertyIntegrationTests { public void checksIdProperty() { Field field = ReflectionUtils.findField(Timeline.class, "id"); CassandraPersistentProperty property = getPropertyFor(field); - assertThat(property.isIdProperty(), is(true)); + assertTrue(property.isIdProperty()); } @Test - public void returnsPropertyNameForUnannotatedProperties() { + public void returnsPropertyNameForUnannotatedProperty() { Field field = ReflectionUtils.findField(Timeline.class, "time"); assertThat(getPropertyFor(field).getColumnName(), is("time")); } - @After - public void clearCassandra() { - EmbeddedCassandraServerHelper.cleanEmbeddedCassandra(); - } - - @AfterClass - public static void stopCassandra() { - EmbeddedCassandraServerHelper.stopEmbeddedCassandra(); - } - private CassandraPersistentProperty getPropertyFor(Field field) { return new BasicCassandraPersistentProperty(field, null, entity, new SimpleTypeHolder()); } - - class Timeline { - - @Id - String id; - - Date time; - - @Column("message") - String text; - - } - } 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 f049833ca..b7b02b3d8 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 @@ -19,7 +19,7 @@ import java.util.Date; import java.util.Set; import org.springframework.data.cassandra.mapping.PrimaryKey; -import org.springframework.data.cassandra.mapping.Qualify; +import org.springframework.data.cassandra.mapping.CassandraType; import org.springframework.data.cassandra.mapping.Table; import com.datastax.driver.core.DataType; @@ -41,7 +41,7 @@ public class Comment { private String text; - @Qualify(type = DataType.Name.SET, typeArguments = { DataType.Name.TEXT }) + @CassandraType(type = DataType.Name.SET, typeArguments = { DataType.Name.TEXT }) private Set likes; /* 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 d4ed31cbf..6ebe1ad8f 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 @@ -20,7 +20,7 @@ import java.util.Date; import org.springframework.cassandra.core.PrimaryKeyType; import org.springframework.data.cassandra.mapping.CompositePrimaryKey; import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; -import org.springframework.data.cassandra.mapping.Qualify; +import org.springframework.data.cassandra.mapping.CassandraType; import com.datastax.driver.core.DataType; @@ -43,7 +43,7 @@ public class CommentPK { * Clustered Column */ @PrimaryKeyColumn(ordinal = 1) - @Qualify(type = DataType.Name.TIMESTAMP) + @CassandraType(type = DataType.Name.TIMESTAMP) private Date time; public String getAuthor() { 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 cf9664c55..884a73f40 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 @@ -20,7 +20,7 @@ import java.util.Date; import org.springframework.cassandra.core.PrimaryKeyType; import org.springframework.data.cassandra.mapping.CompositePrimaryKey; import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; -import org.springframework.data.cassandra.mapping.Qualify; +import org.springframework.data.cassandra.mapping.CassandraType; import com.datastax.driver.core.DataType; @@ -45,7 +45,7 @@ public class NotificationPK { * Clustered Column */ @PrimaryKeyColumn(ordinal = 1) - @Qualify(type = DataType.Name.TIMESTAMP) + @CassandraType(type = DataType.Name.TIMESTAMP) private Date time; public String getUsername() {