diff --git a/pom.xml b/pom.xml index d658d747f..08270dfb1 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,25 @@ Spring Data Cassandra http://projects.spring.io/spring-data-cassandra/ + + multi + spring-data-cassandra + 1.13.0.BUILD-SNAPSHOT + 3.0.0.1 + 1.0 + 2.16 + 0.3.1 + 3.0.0 + 3.0.0-rc1 + + embedded + localhost + 19042 + 19160 + 17000 + 17001 + + madams @@ -64,23 +83,6 @@ spring-data-cassandra-distribution - - localhost - embedded - 19042 - 19160 - 17001 - 17000 - 2.1.11 - 2.1.7.1 - 2.1.9.2 - spring-data-cassandra - 1.0 - 2.16 - multi - 1.13.0.BUILD-SNAPSHOT - - spring-libs-snapshot @@ -141,7 +143,7 @@ org.xerial.snappy snappy-java - 1.1.0.1 + 1.1.2.1 test diff --git a/spring-cql/src/main/java/org/springframework/cassandra/core/CqlTemplate.java b/spring-cql/src/main/java/org/springframework/cassandra/core/CqlTemplate.java index 4d64f0112..ea9441b7e 100644 --- a/spring-cql/src/main/java/org/springframework/cassandra/core/CqlTemplate.java +++ b/spring-cql/src/main/java/org/springframework/cassandra/core/CqlTemplate.java @@ -55,6 +55,7 @@ import org.springframework.dao.QueryTimeoutException; import org.springframework.util.Assert; import com.datastax.driver.core.BoundStatement; +import com.datastax.driver.core.CodecRegistry; import com.datastax.driver.core.ColumnDefinitions; import com.datastax.driver.core.ColumnDefinitions.Definition; import com.datastax.driver.core.Host; @@ -571,7 +572,7 @@ public class CqlTemplate extends CassandraAccessor implements CqlOperations { if (cols.size() == 0) { return null; } - return cols.getType(0).deserialize(row.getBytesUnsafe(0), ProtocolVersion.NEWEST_SUPPORTED); + return CodecRegistry.DEFAULT_INSTANCE.codecFor(cols.getType(0)).deserialize(row.getBytesUnsafe(0), ProtocolVersion.NEWEST_SUPPORTED); } /** @@ -588,7 +589,7 @@ public class CqlTemplate extends CassandraAccessor implements CqlOperations { for (Definition def : cols.asList()) { String name = def.getName(); - map.put(name, def.getType().deserialize(row.getBytesUnsafe(name), ProtocolVersion.NEWEST_SUPPORTED)); + map.put(name, CodecRegistry.DEFAULT_INSTANCE.codecFor(def.getType()).deserialize(row.getBytesUnsafe(name), ProtocolVersion.NEWEST_SUPPORTED)); } return map; diff --git a/spring-cql/src/main/java/org/springframework/cassandra/core/converter/RowToListConverter.java b/spring-cql/src/main/java/org/springframework/cassandra/core/converter/RowToListConverter.java index 4fcf48174..e572e063f 100644 --- a/spring-cql/src/main/java/org/springframework/cassandra/core/converter/RowToListConverter.java +++ b/spring-cql/src/main/java/org/springframework/cassandra/core/converter/RowToListConverter.java @@ -22,6 +22,7 @@ import java.util.List; import org.springframework.core.convert.converter.Converter; import org.springframework.data.convert.ReadingConverter; +import com.datastax.driver.core.CodecRegistry; import com.datastax.driver.core.ColumnDefinitions; import com.datastax.driver.core.ColumnDefinitions.Definition; import com.datastax.driver.core.ProtocolVersion; @@ -51,8 +52,8 @@ public class RowToListConverter implements Converter> { for (Definition def : cols.asList()) { String name = def.getName(); - list.add(row.isNull(name) ? null - : def.getType().deserialize(row.getBytesUnsafe(name), ProtocolVersion.NEWEST_SUPPORTED)); + list.add(row.isNull(name) ? null : CodecRegistry.DEFAULT_INSTANCE.codecFor(def.getType()).deserialize( + row.getBytesUnsafe(name), ProtocolVersion.NEWEST_SUPPORTED)); } return list; diff --git a/spring-cql/src/main/java/org/springframework/cassandra/core/converter/RowToMapConverter.java b/spring-cql/src/main/java/org/springframework/cassandra/core/converter/RowToMapConverter.java index 6e3474c66..161898fbe 100644 --- a/spring-cql/src/main/java/org/springframework/cassandra/core/converter/RowToMapConverter.java +++ b/spring-cql/src/main/java/org/springframework/cassandra/core/converter/RowToMapConverter.java @@ -22,6 +22,7 @@ import java.util.Map; import org.springframework.core.convert.converter.Converter; import org.springframework.data.convert.ReadingConverter; +import com.datastax.driver.core.CodecRegistry; import com.datastax.driver.core.ColumnDefinitions; import com.datastax.driver.core.ColumnDefinitions.Definition; import com.datastax.driver.core.ProtocolVersion; @@ -52,8 +53,10 @@ public class RowToMapConverter implements Converter> { for (Definition def : cols.asList()) { String name = def.getName(); - map.put(name, row.isNull(name) ? null - : def.getType().deserialize(row.getBytesUnsafe(name), ProtocolVersion.NEWEST_SUPPORTED)); + map.put( + name, + row.isNull(name) ? null : CodecRegistry.DEFAULT_INSTANCE.codecFor(def.getType()) + .deserialize(row.getBytesUnsafe(name), ProtocolVersion.NEWEST_SUPPORTED)); } return map; diff --git a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/EmbeddedCassandraServerHelper.java b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/EmbeddedCassandraServerHelper.java index 6faebe819..1d41185f7 100644 --- a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/EmbeddedCassandraServerHelper.java +++ b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/EmbeddedCassandraServerHelper.java @@ -193,7 +193,7 @@ class EmbeddedCassandraServerHelper { CommitLog commitLog = CommitLog.instance; commitLog.getContext(); // wait for commit log allocator instantiation to avoid hanging on a race condition - commitLog.resetUnsafe(); // cleanup screws w/ CommitLog, this brings it back to safe state + commitLog.resetUnsafe(true); // cleanup screws w/ CommitLog, this brings it back to safe state } private static void cleanup() throws IOException { diff --git a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/CassandraCqlClusterFactoryBeanIntegrationTests.java b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/CassandraCqlClusterFactoryBeanIntegrationTests.java index 776c50636..4f762e895 100644 --- a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/CassandraCqlClusterFactoryBeanIntegrationTests.java +++ b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/CassandraCqlClusterFactoryBeanIntegrationTests.java @@ -47,11 +47,11 @@ public class CassandraCqlClusterFactoryBeanIntegrationTests extends AbstractEmbe @Test public void configuredProtocolVersionShouldBeSet() throws Exception { - cassandraCqlClusterFactoryBean.setProtocolVersion(ProtocolVersion.V2); + cassandraCqlClusterFactoryBean.setProtocolVersion(ProtocolVersion.V4); cassandraCqlClusterFactoryBean.setPort(cassandraEnvironment.getPort()); cassandraCqlClusterFactoryBean.afterPropertiesSet(); - assertEquals(ProtocolVersion.V2, getProtocolVersionEnum(cassandraCqlClusterFactoryBean)); + assertEquals(ProtocolVersion.V4, getProtocolVersionEnum(cassandraCqlClusterFactoryBean)); } @Test @@ -68,6 +68,6 @@ public class CassandraCqlClusterFactoryBeanIntegrationTests extends AbstractEmbe // initialize connection factory cassandraCqlClusterFactoryBean.getObject().init(); - return cassandraCqlClusterFactoryBean.getObject().getConfiguration().getProtocolOptions().getProtocolVersionEnum(); + return cassandraCqlClusterFactoryBean.getObject().getConfiguration().getProtocolOptions().getProtocolVersion(); } } diff --git a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/xml/TestHostStateListener.java b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/xml/TestHostStateListener.java index 1085c9271..a756a5fa9 100644 --- a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/xml/TestHostStateListener.java +++ b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/xml/TestHostStateListener.java @@ -18,6 +18,7 @@ package org.springframework.cassandra.test.integration.config.xml; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Host; import com.datastax.driver.core.Host.StateListener; @@ -49,8 +50,13 @@ public class TestHostStateListener implements StateListener { } @Override - public void onSuspected(Host host) { - log.info("Host Suspected: " + host.getAddress()); + public void onRegister(Cluster cluster) { + log.info("Cluster registered: " + cluster.getClusterName()); + } + + @Override + public void onUnregister(Cluster cluster) { + log.info("Cluster unregistered: " + cluster.getClusterName()); } } diff --git a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/xml/TestLatencyTracker.java b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/xml/TestLatencyTracker.java index 4efbc5586..656cac26f 100644 --- a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/xml/TestLatencyTracker.java +++ b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/config/xml/TestLatencyTracker.java @@ -18,6 +18,7 @@ package org.springframework.cassandra.test.integration.config.xml; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.datastax.driver.core.Cluster; import com.datastax.driver.core.Host; import com.datastax.driver.core.LatencyTracker; import com.datastax.driver.core.Statement; @@ -34,5 +35,13 @@ public class TestLatencyTracker implements LatencyTracker { public void update(Host host, Statement statement, Exception exception, long newLatencyNanos) { LOG.info("Latency Tracker: " + host.getAddress() + ", " + newLatencyNanos + " nanoseconds."); } + + @Override + public void onRegister(Cluster cluster) { + } + + @Override + public void onUnregister(Cluster cluster) { + } } diff --git a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/core/cql/generator/CqlIndexSpecificationAssertions.java b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/core/cql/generator/CqlIndexSpecificationAssertions.java index 92e591d5d..627b98a4c 100644 --- a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/core/cql/generator/CqlIndexSpecificationAssertions.java +++ b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/core/cql/generator/CqlIndexSpecificationAssertions.java @@ -19,8 +19,9 @@ import static org.junit.Assert.*; import org.springframework.cassandra.core.keyspace.IndexDescriptor; -import com.datastax.driver.core.ColumnMetadata.IndexMetadata; +import com.datastax.driver.core.IndexMetadata; import com.datastax.driver.core.Session; +import com.datastax.driver.core.TableMetadata; /** * @author David Webb @@ -29,15 +30,19 @@ import com.datastax.driver.core.Session; public class CqlIndexSpecificationAssertions { public static void assertIndex(IndexDescriptor expected, String keyspace, Session session) { - IndexMetadata imd = session.getCluster().getMetadata().getKeyspace(keyspace.toLowerCase()) - .getTable(expected.getTableName().toCql()).getColumn(expected.getColumnName().toCql()).getIndex(); + TableMetadata tableMetadata = session.getCluster().getMetadata().getKeyspace(keyspace.toLowerCase()) + .getTable(expected.getTableName().toCql()); + + IndexMetadata imd = tableMetadata.getIndex(expected.getName().toCql()); - assertEquals(expected.getName(), imd.getName()); + assertEquals(expected.getName(), imd == null ? null : imd.getName()); } public static void assertNoIndex(IndexDescriptor expected, String keyspace, Session session) { - IndexMetadata imd = session.getCluster().getMetadata().getKeyspace(keyspace.toLowerCase()) - .getTable(expected.getTableName().toCql()).getColumn(expected.getColumnName().toCql()).getIndex(); + TableMetadata tableMetadata = session.getCluster().getMetadata().getKeyspace(keyspace.toLowerCase()) + .getTable(expected.getTableName().toCql()); + + IndexMetadata imd = tableMetadata.getIndex(expected.getName().toCql()); assertNull(imd); } diff --git a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/core/cql/generator/CqlTableSpecificationAssertions.java b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/core/cql/generator/CqlTableSpecificationAssertions.java index 2f53228f0..8a839018b 100644 --- a/spring-cql/src/test/java/org/springframework/cassandra/test/integration/core/cql/generator/CqlTableSpecificationAssertions.java +++ b/spring-cql/src/test/java/org/springframework/cassandra/test/integration/core/cql/generator/CqlTableSpecificationAssertions.java @@ -31,7 +31,7 @@ import org.springframework.cassandra.core.keyspace.TableOption; import com.datastax.driver.core.ColumnMetadata; import com.datastax.driver.core.Session; import com.datastax.driver.core.TableMetadata; -import com.datastax.driver.core.TableMetadata.Options; +import com.datastax.driver.core.TableOptionsMetadata; /** * @author Matthew T. Adams @@ -70,7 +70,7 @@ public class CqlTableSpecificationAssertions { assertColumns(expected.getPrimaryKeyColumns(), actual.getPrimaryKey()); } - public static void assertOptions(Map expected, Options actual) { + public static void assertOptions(Map expected, TableOptionsMetadata actual) { for (String key : expected.keySet()) { @@ -143,7 +143,7 @@ public class CqlTableSpecificationAssertions { } @SuppressWarnings("unchecked") - public static T getOptionFor(TableOption option, Class type, Options options) { + public static T getOptionFor(TableOption option, Class type, TableOptionsMetadata options) { switch (option) { case BLOOM_FILTER_FP_CHANCE: return (T) (Double) options.getBloomFilterFalsePositiveChance(); diff --git a/spring-cql/src/test/resources/embedded-cassandra.yaml b/spring-cql/src/test/resources/embedded-cassandra.yaml index a96a878ce..8490167b0 100644 --- a/spring-cql/src/test/resources/embedded-cassandra.yaml +++ b/spring-cql/src/test/resources/embedded-cassandra.yaml @@ -108,6 +108,9 @@ partitioner: org.apache.cassandra.dht.Murmur3Partitioner data_file_directories: - target/embeddedCassandra/data +hints_directory: + - target/embeddedCassandra/hints + # commit log commitlog_directory: target/embeddedCassandra/commitlog diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/CassandraConverters.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/CassandraConverters.java index ad7628871..1d39c0297 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/CassandraConverters.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/CassandraConverters.java @@ -89,7 +89,7 @@ abstract class CassandraConverters { @Override public Date convert(Row row) { - return row.getDate(0); + return row.getTimestamp(0); } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/ColumnReader.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/ColumnReader.java index 512eba128..c724e563a 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/ColumnReader.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/ColumnReader.java @@ -4,6 +4,7 @@ import java.util.List; import org.springframework.cassandra.core.cql.CqlIdentifier; +import com.datastax.driver.core.CodecRegistry; import com.datastax.driver.core.ColumnDefinitions; import com.datastax.driver.core.DataType; import com.datastax.driver.core.Row; @@ -50,15 +51,15 @@ public class ColumnReader { List collectionTypes = type.getTypeArguments(); if (collectionTypes.size() == 2) { - return row.getMap(i, collectionTypes.get(0).asJavaClass(), collectionTypes.get(1).asJavaClass()); + return row.getMap(i, CodecRegistry.DEFAULT_INSTANCE.codecFor(collectionTypes.get(0)).getJavaType().getRawType(), CodecRegistry.DEFAULT_INSTANCE.codecFor(collectionTypes.get(1)).getJavaType().getRawType()); } if (type.equals(DataType.list(collectionTypes.get(0)))) { - return row.getList(i, collectionTypes.get(0).asJavaClass()); + return row.getList(i, CodecRegistry.DEFAULT_INSTANCE.codecFor(collectionTypes.get(0)).getJavaType().getRawType()); } if (type.equals(DataType.set(collectionTypes.get(0)))) { - return row.getSet(i, collectionTypes.get(0).asJavaClass()); + return row.getSet(i, CodecRegistry.DEFAULT_INSTANCE.codecFor(collectionTypes.get(0)).getJavaType().getRawType()); } throw new IllegalStateException("Unknown Collection type encountered. Valid collections are Set, List and Map."); 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 044a0f735..646aeb1c7 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 @@ -46,6 +46,7 @@ import org.springframework.data.util.TypeInformation; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; +import com.datastax.driver.core.CodecRegistry; import com.datastax.driver.core.Row; import com.datastax.driver.core.querybuilder.Delete.Where; import com.datastax.driver.core.querybuilder.Insert; @@ -254,7 +255,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter public void doWithPersistentProperty(CassandraPersistentProperty prop) { Object value = accessor.getProperty(prop, - prop.isCompositePrimaryKey() ? prop.getType() : prop.getDataType().asJavaClass()); + prop.isCompositePrimaryKey() ? prop.getType() : CodecRegistry.DEFAULT_INSTANCE.codecFor(prop.getDataType()).getJavaType().getRawType()); if (log.isDebugEnabled()) { log.debug("doWithProperties Property.type {}, Property.value {}", prop.getType().getName(), value); @@ -293,7 +294,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter public void doWithPersistentProperty(CassandraPersistentProperty prop) { Object value = accessor.getProperty(prop, - prop.isCompositePrimaryKey() ? prop.getType() : prop.getDataType().asJavaClass()); + prop.isCompositePrimaryKey() ? prop.getType() : CodecRegistry.DEFAULT_INSTANCE.codecFor(prop.getDataType()).getJavaType().getRawType()); if (prop.isCompositePrimaryKey()) { CassandraPersistentEntity keyEntity = prop.getCompositePrimaryKeyEntity(); @@ -326,7 +327,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter @Override public void doWithPersistentProperty(CassandraPersistentProperty prop) { - Object value = accessor.getProperty(prop, prop.getDataType().asJavaClass()); + Object value = accessor.getProperty(prop, CodecRegistry.DEFAULT_INSTANCE.codecFor(prop.getDataType()).getJavaType().getRawType()); where.and(QueryBuilder.eq(prop.getColumnName().toCql(), value)); } }); @@ -388,7 +389,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter CassandraPersistentProperty idProperty = entity.getIdProperty(); if (idProperty != null) { return wrapper.getProperty(entity.getIdProperty(), - idProperty.isCompositePrimaryKey() ? idProperty.getType() : idProperty.getDataType().asJavaClass()); + idProperty.isCompositePrimaryKey() ? idProperty.getType() : CodecRegistry.DEFAULT_INSTANCE.codecFor(idProperty.getDataType()).getJavaType().getRawType()); } // if the class doesn't have an id property, then it's using MapId diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/RowReaderPropertyAccessor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/RowReaderPropertyAccessor.java index 48b7c8ef8..544c34722 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/RowReaderPropertyAccessor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/convert/RowReaderPropertyAccessor.java @@ -21,6 +21,7 @@ import org.springframework.expression.EvaluationContext; import org.springframework.expression.PropertyAccessor; import org.springframework.expression.TypedValue; +import com.datastax.driver.core.CodecRegistry; import com.datastax.driver.core.DataType; import com.datastax.driver.core.ProtocolVersion; import com.datastax.driver.core.Row; @@ -52,7 +53,7 @@ enum RowReaderPropertyAccessor implements PropertyAccessor { } DataType columnType = row.getColumnDefinitions().getType(name); ByteBuffer bytes = row.getBytes(name); - Object object = columnType.deserialize(bytes, ProtocolVersion.NEWEST_SUPPORTED); + Object object = CodecRegistry.DEFAULT_INSTANCE.codecFor(columnType).deserialize(bytes, ProtocolVersion.NEWEST_SUPPORTED); return new TypedValue(object); } 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 928e6c379..1c2f29db5 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 @@ -188,30 +188,22 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP private DataType getDataTypeFor(CassandraType annotation) { DataType.Name type = annotation.type(); + switch (type) { - if (type.isCollection()) { - switch (type) { + case MAP: + ensureTypeArguments(annotation.typeArguments().length, 2); + return DataType.map(getDataTypeFor(annotation.typeArguments()[0]), + getDataTypeFor(annotation.typeArguments()[1])); - case MAP: - ensureTypeArguments(annotation.typeArguments().length, 2); - return DataType.map(getDataTypeFor(annotation.typeArguments()[0]), - getDataTypeFor(annotation.typeArguments()[1])); + case LIST: + ensureTypeArguments(annotation.typeArguments().length, 1); + return DataType.list(getDataTypeFor(annotation.typeArguments()[0])); - case LIST: - ensureTypeArguments(annotation.typeArguments().length, 1); - return DataType.list(getDataTypeFor(annotation.typeArguments()[0])); - - case SET: - ensureTypeArguments(annotation.typeArguments().length, 1); - return DataType.set(getDataTypeFor(annotation.typeArguments()[0])); - - default: - throw new InvalidDataAccessApiUsageException(String.format( - "unknown multivalued DataType [%s] for property [%s] in entity [%s]", type, getType(), getOwner() - .getName())); - } - } else { + case SET: + ensureTypeArguments(annotation.typeArguments().length, 1); + return DataType.set(getDataTypeFor(annotation.typeArguments()[0])); + default: return CassandraSimpleTypeHolder.getDataTypeFor(type); } } 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 index 6c04f40b0..27dcbabb4 100644 --- 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 @@ -26,6 +26,7 @@ import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.mapping.model.SimpleTypeHolder; import org.springframework.data.util.TypeInformation; +import com.datastax.driver.core.CodecRegistry; import com.datastax.driver.core.DataType; import com.datastax.driver.core.DataType.Name; @@ -87,9 +88,11 @@ public class CassandraSimpleTypeHolder extends SimpleTypeHolder { Map, DataType> classToDataType = new HashMap, DataType>(16); + CodecRegistry codecRegistry = CodecRegistry.DEFAULT_INSTANCE; + for (DataType dataType : DataType.allPrimitiveTypes()) { - Class javaClass = dataType.asJavaClass(); + Class javaClass = codecRegistry.codecFor(dataType).getJavaType().getRawType(); classToDataType.put(javaClass, dataType); Class primitiveJavaClass = primitiveWrappers.get(javaClass); @@ -114,7 +117,7 @@ public class CassandraSimpleTypeHolder extends SimpleTypeHolder { Set> simpleTypes = new HashSet>(); for (DataType dataType : DataType.allPrimitiveTypes()) { - Class javaClass = dataType.asJavaClass(); + Class javaClass = CodecRegistry.DEFAULT_INSTANCE.codecFor(dataType).getJavaType().getRawType(); simpleTypes.add(javaClass); } return simpleTypes; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/convert/MappingCassandraConverterUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/convert/MappingCassandraConverterUnitTests.java index d4989fc8a..8930c7509 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/convert/MappingCassandraConverterUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/convert/MappingCassandraConverterUnitTests.java @@ -389,7 +389,7 @@ public class MappingCassandraConverterUnitTests { public void shouldReadDateCorrectly() throws UnknownHostException { Date date = new Date(1); - when(rowMock.getDate(0)).thenReturn(date); + when(rowMock.getTimestamp(0)).thenReturn(date); Date result = mappingCassandraConverter.readRow(Date.class, rowMock);