DATACASS-656 - Move Name enumeration to CassandraType.

CassandraType is a better place for the name enumeration as it provides the necessary context how Cassandra primitives are used than CassandraSimpleTypeHolder.

Original pull request: #167.
This commit is contained in:
Mark Paluch
2020-01-08 10:57:45 +01:00
parent 4098040e71
commit 4d08a90eda
20 changed files with 107 additions and 105 deletions

View File

@@ -73,7 +73,7 @@ public class CassandraCustomConversions extends org.springframework.data.convert
CassandraType annotation = AnnotatedElementUtils.getMergedAnnotation(it, CassandraType.class);
return annotation != null && annotation.type() == CassandraSimpleTypeHolder.Name.TIME;
return annotation != null && annotation.type() == CassandraType.Name.TIME;
}) //
.map(it -> {

View File

@@ -15,6 +15,8 @@
*/
package org.springframework.data.cassandra.core.convert;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;
@@ -27,7 +29,6 @@ import org.joda.time.LocalDateTime;
import org.joda.time.LocalTime;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.convert.WritingConverter;
import org.springframework.util.ClassUtils;
@@ -112,7 +113,7 @@ public abstract class CassandraJodaTimeConverters {
* @author Mark Paluch
*/
@WritingConverter
@CassandraType(type = CassandraSimpleTypeHolder.Name.TIME)
@CassandraType(type = Name.TIME)
public enum FromJodaLocalTimeConverter implements Converter<LocalTime, java.time.LocalTime> {
INSTANCE;
@@ -144,7 +145,7 @@ public abstract class CassandraJodaTimeConverters {
* @author Mark Paluch
*/
@WritingConverter
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE)
@CassandraType(type = Name.DATE)
public enum FromJodaLocalDateConverter implements Converter<LocalDate, java.time.LocalDate> {
INSTANCE;

View File

@@ -15,6 +15,8 @@
*/
package org.springframework.data.cassandra.core.convert;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
@@ -23,7 +25,6 @@ import java.util.List;
import java.util.concurrent.TimeUnit;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.data.convert.ThreeTenBackPortConverters;
@@ -125,7 +126,7 @@ public abstract class CassandraThreeTenBackPortConverters {
* @since 3.0
*/
@WritingConverter
@CassandraType(type = CassandraSimpleTypeHolder.Name.TIME)
@CassandraType(type = Name.TIME)
public enum FromBpLocalTimeConverter implements Converter<LocalTime, java.time.LocalTime> {
INSTANCE;
@@ -158,7 +159,7 @@ public abstract class CassandraThreeTenBackPortConverters {
* @since 3.0
*/
@WritingConverter
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE)
@CassandraType(type = Name.DATE)
public enum FromBpLocalDateConverter implements Converter<LocalDate, java.time.LocalDate> {
INSTANCE;

View File

@@ -15,6 +15,8 @@
*/
package org.springframework.data.cassandra.core.mapping;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedParameterizedType;
import java.lang.reflect.AnnotatedType;
@@ -215,7 +217,7 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP
private DataType getDataTypeFor(CassandraType annotation) {
CassandraSimpleTypeHolder.Name type = annotation.type();
Name type = annotation.type();
switch (type) {
case MAP:
@@ -224,12 +226,12 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP
CassandraSimpleTypeHolder.getDataTypeFor(annotation.typeArguments()[1]));
case LIST:
assertTypeArguments(annotation.typeArguments().length, 1);
return annotation.typeArguments()[0] == CassandraSimpleTypeHolder.Name.UDT
return annotation.typeArguments()[0] == Name.UDT
? DataTypes.listOf(getUserType(annotation))
: DataTypes.listOf(CassandraSimpleTypeHolder.getDataTypeFor(annotation.typeArguments()[0]));
case SET:
assertTypeArguments(annotation.typeArguments().length, 1);
return annotation.typeArguments()[0] == CassandraSimpleTypeHolder.Name.UDT
return annotation.typeArguments()[0] == Name.UDT
? DataTypes.setOf(getUserType(annotation))
: DataTypes.setOf(CassandraSimpleTypeHolder.getDataTypeFor(annotation.typeArguments()[0]));
case UDT:

View File

@@ -16,6 +16,7 @@
package org.springframework.data.cassandra.core.mapping;
import static org.springframework.data.cassandra.core.cql.keyspace.CreateTableSpecification.*;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import java.util.*;
import java.util.function.Supplier;
@@ -588,7 +589,7 @@ public class CassandraMappingContext
CassandraType annotation = property.getRequiredAnnotation(CassandraType.class);
if (annotation.type() == CassandraSimpleTypeHolder.Name.TUPLE) {
if (annotation.type() == Name.TUPLE) {
DataType[] dataTypes = Arrays.stream(annotation.typeArguments()).map(CassandraSimpleTypeHolder::getDataTypeFor)
.toArray(DataType[]::new);
@@ -596,7 +597,7 @@ public class CassandraMappingContext
return getTupleTypeFactory().create(dataTypes);
}
if (annotation.type() == CassandraSimpleTypeHolder.Name.UDT) {
if (annotation.type() == Name.UDT) {
com.datastax.oss.driver.api.core.CqlIdentifier userTypeName = com.datastax.oss.driver.api.core.CqlIdentifier
.fromCql(annotation.userTypeName());

View File

@@ -60,7 +60,7 @@ public class CassandraSimpleTypeHolder extends SimpleTypeHolder {
private static final Map<Class<?>, DataType> classToDataType;
private static final Map<Name, DataType> nameToDataType;
private static final Map<CassandraType.Name, DataType> nameToDataType;
static {
@@ -132,33 +132,33 @@ public class CassandraSimpleTypeHolder extends SimpleTypeHolder {
}
/**
* @return the map between {@link Name} and {@link DataType}.
* @return the map between {@link CassandraType.Name} and {@link DataType}.
*/
private static Map<Name, DataType> nameToDataType() {
private static Map<CassandraType.Name, DataType> nameToDataType() {
Map<Name, DataType> nameToDataType = new HashMap<>(16);
Map<CassandraType.Name, DataType> nameToDataType = new HashMap<>(16);
nameToDataType.put(Name.ASCII, DataTypes.ASCII);
nameToDataType.put(Name.BIGINT, DataTypes.BIGINT);
nameToDataType.put(Name.BLOB, DataTypes.BLOB);
nameToDataType.put(Name.BOOLEAN, DataTypes.BOOLEAN);
nameToDataType.put(Name.COUNTER, DataTypes.COUNTER);
nameToDataType.put(Name.DECIMAL, DataTypes.DECIMAL);
nameToDataType.put(Name.DOUBLE, DataTypes.DOUBLE);
nameToDataType.put(Name.FLOAT, DataTypes.FLOAT);
nameToDataType.put(Name.INT, DataTypes.INT);
nameToDataType.put(Name.TIMESTAMP, DataTypes.TIMESTAMP);
nameToDataType.put(Name.UUID, DataTypes.UUID);
nameToDataType.put(Name.VARCHAR, DataTypes.TEXT);
nameToDataType.put(Name.TEXT, DataTypes.TEXT);
nameToDataType.put(Name.TIMEUUID, DataTypes.TIMEUUID);
nameToDataType.put(Name.INET, DataTypes.INET);
nameToDataType.put(Name.DATE, DataTypes.DATE);
nameToDataType.put(Name.SMALLINT, DataTypes.SMALLINT);
nameToDataType.put(Name.TINYINT, DataTypes.TINYINT);
nameToDataType.put(Name.VARINT, DataTypes.VARINT);
nameToDataType.put(Name.TIME, DataTypes.TIME);
nameToDataType.put(Name.DURATION, DataTypes.DURATION);
nameToDataType.put(CassandraType.Name.ASCII, DataTypes.ASCII);
nameToDataType.put(CassandraType.Name.BIGINT, DataTypes.BIGINT);
nameToDataType.put(CassandraType.Name.BLOB, DataTypes.BLOB);
nameToDataType.put(CassandraType.Name.BOOLEAN, DataTypes.BOOLEAN);
nameToDataType.put(CassandraType.Name.COUNTER, DataTypes.COUNTER);
nameToDataType.put(CassandraType.Name.DECIMAL, DataTypes.DECIMAL);
nameToDataType.put(CassandraType.Name.DOUBLE, DataTypes.DOUBLE);
nameToDataType.put(CassandraType.Name.FLOAT, DataTypes.FLOAT);
nameToDataType.put(CassandraType.Name.INT, DataTypes.INT);
nameToDataType.put(CassandraType.Name.TIMESTAMP, DataTypes.TIMESTAMP);
nameToDataType.put(CassandraType.Name.UUID, DataTypes.UUID);
nameToDataType.put(CassandraType.Name.VARCHAR, DataTypes.TEXT);
nameToDataType.put(CassandraType.Name.TEXT, DataTypes.TEXT);
nameToDataType.put(CassandraType.Name.TIMEUUID, DataTypes.TIMEUUID);
nameToDataType.put(CassandraType.Name.INET, DataTypes.INET);
nameToDataType.put(CassandraType.Name.DATE, DataTypes.DATE);
nameToDataType.put(CassandraType.Name.SMALLINT, DataTypes.SMALLINT);
nameToDataType.put(CassandraType.Name.TINYINT, DataTypes.TINYINT);
nameToDataType.put(CassandraType.Name.VARINT, DataTypes.VARINT);
nameToDataType.put(CassandraType.Name.TIME, DataTypes.TIME);
nameToDataType.put(CassandraType.Name.DURATION, DataTypes.DURATION);
return nameToDataType;
}
@@ -188,21 +188,13 @@ public class CassandraSimpleTypeHolder extends SimpleTypeHolder {
}
/**
* Returns the {@link DataType} for a {@link Name}.
* Returns the {@link DataType} for a {@link CassandraType.Name}.
*
* @param dataTypeName must not be {@literal null}.
* @return the {@link DataType} for {@link Name}.
* @return the {@link DataType} for {@link CassandraType.Name}.
*/
public static DataType getDataTypeFor(Name dataTypeName) {
public static DataType getDataTypeFor(CassandraType.Name dataTypeName) {
return nameToDataType.get(dataTypeName);
}
/**
* Cassandra Protocol types.
*
* @since 3.0
*/
public enum Name {
ASCII, BIGINT, BLOB, BOOLEAN, COUNTER, DECIMAL, DOUBLE, FLOAT, INT, TIMESTAMP, UUID, VARCHAR, TEXT, VARINT, TIMEUUID, INET, DATE, TIME, SMALLINT, TINYINT, DURATION, LIST, MAP, SET, UDT, TUPLE;
}
}

View File

@@ -27,7 +27,7 @@ import java.lang.annotation.Target;
* @author Alex Shvid
* @author Matthew T. Adams
* @author Mark Paluch
* @see CassandraSimpleTypeHolder.Name
* @see Name
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@@ -38,12 +38,11 @@ public @interface CassandraType {
/**
* The {@link Name} of the property.
*/
CassandraSimpleTypeHolder.Name type();
Name type();
/**
* If the property is {@link java.util.Collection Collection-like}, then this attribute holds a single
* {@link CassandraSimpleTypeHolder.Name DataType Name} representing the element type of the
* {@link java.util.Collection}.
* If the property is {@link java.util.Collection Collection-like}, then this attribute holds a single {@link Name
* DataType Name} representing the element type of the {@link java.util.Collection}.
* <p/>
* If the property is a {@link java.util.Map}, then this attribute holds exactly two {@link Name DataType Names}; the
* first is the key type and the second is the value type.
@@ -51,10 +50,10 @@ public @interface CassandraType {
* If the property is neither {@link java.util.Collection Collection-like} nor a {@link java.util.Map}, then this
* attribute is ignored.
*
* @return an array of {@link CassandraSimpleTypeHolder.Name} objects.
* @see CassandraSimpleTypeHolder.Name
* @return an array of {@link Name} objects.
* @see Name
*/
CassandraSimpleTypeHolder.Name[] typeArguments() default {};
Name[] typeArguments() default {};
/**
* If the property maps to a User-Defined Type (UDT) then this attribute holds the user type name. For
@@ -66,4 +65,12 @@ public @interface CassandraType {
*/
String userTypeName() default "";
/**
* Cassandra Protocol types.
*
* @since 3.0
*/
enum Name {
ASCII, BIGINT, BLOB, BOOLEAN, COUNTER, DECIMAL, DOUBLE, FLOAT, INT, TIMESTAMP, UUID, VARCHAR, TEXT, VARINT, TIMEUUID, INET, DATE, TIME, SMALLINT, TINYINT, DURATION, LIST, MAP, SET, UDT, TUPLE;
}
}

View File

@@ -20,7 +20,6 @@ import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@@ -35,5 +34,5 @@ import org.springframework.data.cassandra.core.mapping.Table;
public class CounterEntity {
@PrimaryKey @NonNull private String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.COUNTER) private long count;
@CassandraType(type = CassandraType.Name.COUNTER) private long count;
}

View File

@@ -46,7 +46,6 @@ import org.springframework.data.annotation.Transient;
import org.springframework.data.cassandra.core.cql.PrimaryKeyType;
import org.springframework.data.cassandra.core.mapping.BasicMapId;
import org.springframework.data.cassandra.core.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.core.mapping.MapId;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
@@ -974,7 +973,7 @@ public class MappingCassandraConverterUnitTests {
@PrimaryKey private String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.INT) private Condition asOrdinal;
@CassandraType(type = CassandraType.Name.INT) private Condition asOrdinal;
public String getId() {
return id;
@@ -1126,7 +1125,7 @@ public class MappingCassandraConverterUnitTests {
@PrimaryKey private String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE) java.time.LocalDate localDate;
@CassandraType(type = CassandraType.Name.DATE) java.time.LocalDate localDate;
}
/**
@@ -1137,7 +1136,7 @@ public class MappingCassandraConverterUnitTests {
@PrimaryKey private String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE) org.joda.time.LocalDate localDate;
@CassandraType(type = CassandraType.Name.DATE) org.joda.time.LocalDate localDate;
}
/**
@@ -1148,7 +1147,7 @@ public class MappingCassandraConverterUnitTests {
@PrimaryKey private String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE) org.threeten.bp.LocalDate localDate;
@CassandraType(type = CassandraType.Name.DATE) org.threeten.bp.LocalDate localDate;
}
@Table

View File

@@ -20,7 +20,6 @@ import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@@ -35,5 +34,5 @@ import org.springframework.data.cassandra.core.mapping.Table;
public class TimeEntity {
@PrimaryKey @NonNull private String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.TIME) private long time;
@CassandraType(type = CassandraType.Name.TIME) private long time;
}

View File

@@ -16,6 +16,7 @@
package org.springframework.data.cassandra.core.mapping;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -200,7 +201,7 @@ public class BasicCassandraPersistentPropertyUnitTests {
}
@Retention(RetentionPolicy.RUNTIME)
@CassandraType(type = CassandraSimpleTypeHolder.Name.COUNTER)
@CassandraType(type = Name.COUNTER)
@interface ComposedCassandraTypeAnnotation {
}
@@ -224,7 +225,7 @@ public class BasicCassandraPersistentPropertyUnitTests {
UUID uuid;
@CassandraType(type = CassandraSimpleTypeHolder.Name.TIMEUUID) UUID timeUUID;
@CassandraType(type = Name.TIMEUUID) UUID timeUUID;
}
static class TypeWithMaps {

View File

@@ -17,6 +17,7 @@ package org.springframework.data.cassandra.core.mapping;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import java.io.Serializable;
import java.util.Arrays;
@@ -674,8 +675,8 @@ public class CassandraMappingContextUnitTests {
@Table
private static class WithUdt {
@Id String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.UDT, userTypeName = "mappedudt") UdtValue udtValue;
@CassandraType(type = CassandraSimpleTypeHolder.Name.UDT, userTypeName = "NestedType") Nested nested;
@CassandraType(type = Name.UDT, userTypeName = "mappedudt") UdtValue udtValue;
@CassandraType(type = Name.UDT, userTypeName = "NestedType") Nested nested;
}
@Table
@@ -698,7 +699,7 @@ public class CassandraMappingContextUnitTests {
private static class TypeWithCustomConvertedMap {
@Id String id;
Map<String, Collection<String>> stringMap;
@CassandraType(type = CassandraSimpleTypeHolder.Name.ASCII) Map<String, Collection<String>> blobMap;
@CassandraType(type = Name.ASCII) Map<String, Collection<String>> blobMap;
}
@Table
@@ -721,7 +722,7 @@ public class CassandraMappingContextUnitTests {
@org.springframework.data.cassandra.core.mapping.UserDefinedType(value = "NestedType")
public static class Nested {
String s1;
@CassandraType(type = CassandraSimpleTypeHolder.Name.UDT,
@CassandraType(type = Name.UDT,
userTypeName = "AnotherNestedType") AnotherNested anotherNested;
}
@@ -733,8 +734,7 @@ public class CassandraMappingContextUnitTests {
@Table
static class TypedTupleEntity {
@Id String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.TUPLE, typeArguments = {
CassandraSimpleTypeHolder.Name.VARCHAR, CassandraSimpleTypeHolder.Name.BIGINT }) TupleValue typed;
@CassandraType(type = Name.TUPLE, typeArguments = { Name.VARCHAR, Name.BIGINT }) TupleValue typed;
}
@Table

View File

@@ -23,7 +23,7 @@ import java.util.UUID;
import org.junit.Test;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder.Name;
import org.springframework.data.cassandra.core.mapping.CassandraType.Name;
import com.datastax.oss.driver.api.core.type.DataTypes;

View File

@@ -17,6 +17,7 @@ package org.springframework.data.cassandra.core.mapping;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -377,9 +378,8 @@ public class CreateTableSpecificationBasicCassandraMappingContextUnitTests {
List<Human> friends;
Set<Human> people;
@CassandraType(type = CassandraSimpleTypeHolder.Name.FLOAT) Human floater;
@CassandraType(type = CassandraSimpleTypeHolder.Name.SET,
typeArguments = CassandraSimpleTypeHolder.Name.BIGINT) List<Human> enemies;
@CassandraType(type = Name.FLOAT) Human floater;
@CassandraType(type = Name.SET, typeArguments = Name.BIGINT) List<Human> enemies;
}
@Data
@@ -395,7 +395,7 @@ public class CreateTableSpecificationBasicCassandraMappingContextUnitTests {
private static class MappedTuple {
@Element(0) MappedUdt mappedUdt;
@Element(1) @CassandraType(type = CassandraSimpleTypeHolder.Name.UDT, userTypeName = "human_udt") UdtValue human;
@Element(1) @CassandraType(type = Name.UDT, userTypeName = "human_udt") UdtValue human;
@Element(2) String text;
}
@@ -405,10 +405,10 @@ public class CreateTableSpecificationBasicCassandraMappingContextUnitTests {
@Id String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.UDT, userTypeName = "human_udt") UdtValue human;
@CassandraType(type = CassandraSimpleTypeHolder.Name.LIST, typeArguments = CassandraSimpleTypeHolder.Name.UDT,
@CassandraType(type = Name.UDT, userTypeName = "human_udt") UdtValue human;
@CassandraType(type = Name.LIST, typeArguments = Name.UDT,
userTypeName = "species_udt") List<UdtValue> friends;
@CassandraType(type = CassandraSimpleTypeHolder.Name.SET, typeArguments = CassandraSimpleTypeHolder.Name.UDT,
@CassandraType(type = Name.SET, typeArguments = Name.UDT,
userTypeName = "peeps_udt") Set<UdtValue> people;
}
@@ -443,8 +443,8 @@ public class CreateTableSpecificationBasicCassandraMappingContextUnitTests {
@Id String id;
@CassandraType(type = CassandraSimpleTypeHolder.Name.TIMESTAMP) java.time.LocalDate localDate;
@CassandraType(type = CassandraSimpleTypeHolder.Name.TIMESTAMP) org.joda.time.LocalDate jodaLocalDate;
@CassandraType(type = Name.TIMESTAMP) java.time.LocalDate localDate;
@CassandraType(type = Name.TIMESTAMP) org.joda.time.LocalDate jodaLocalDate;
}
private static class PersonReadConverter implements Converter<String, Human> {

View File

@@ -15,6 +15,8 @@
*/
package org.springframework.data.cassandra.domain;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@@ -32,7 +34,6 @@ import java.util.Set;
import java.util.UUID;
import org.springframework.data.cassandra.core.convert.CassandraTypeMappingIntegrationTests.Condition;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
@@ -54,7 +55,7 @@ public class AllPossibleTypes {
UUID uuid;
@CassandraType(type = CassandraSimpleTypeHolder.Name.INT) Number justNumber;
@CassandraType(type = Name.INT) Number justNumber;
Byte boxedByte;
byte primitiveByte;
@@ -93,8 +94,7 @@ public class AllPossibleTypes {
Set<Condition> setOfEnum;
List<Condition> listOfEnum;
@CassandraType(type = CassandraSimpleTypeHolder.Name.TUPLE, typeArguments = { CassandraSimpleTypeHolder.Name.VARCHAR,
CassandraSimpleTypeHolder.Name.BIGINT }) TupleValue tupleValue;
@CassandraType(type = Name.TUPLE, typeArguments = { Name.VARCHAR, Name.BIGINT }) TupleValue tupleValue;
// supported by conversion
java.time.Instant instant;

View File

@@ -15,13 +15,14 @@
*/
package org.springframework.data.cassandra.repository.conversion;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import org.springframework.data.annotation.Id;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.core.mapping.Table;
@@ -38,9 +39,9 @@ class Contact {
Address address;
List<Address> addresses;
@CassandraType(type = CassandraSimpleTypeHolder.Name.UDT, userTypeName = "phone") Phone mainPhone;
@CassandraType(type = Name.UDT, userTypeName = "phone") Phone mainPhone;
@CassandraType(type = CassandraSimpleTypeHolder.Name.LIST, typeArguments = CassandraSimpleTypeHolder.Name.UDT,
@CassandraType(type = Name.LIST, typeArguments = Name.UDT,
userTypeName = "phone") List<Phone> alternativePhones;
public Contact(String id) {

View File

@@ -40,7 +40,6 @@ import org.springframework.data.cassandra.config.SchemaAction;
import org.springframework.data.cassandra.core.convert.CassandraCustomConversions;
import org.springframework.data.cassandra.core.convert.MappingCassandraConverter;
import org.springframework.data.cassandra.core.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.domain.AllPossibleTypes;
import org.springframework.data.cassandra.repository.Query;
@@ -191,7 +190,7 @@ public class RepositoryQueryMethodParameterTypesIntegrationTests
@Query("select * from allpossibletypes where date = ?0")
List<AllPossibleTypes> findWithAnnotatedDateParameter(
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE) Date timestamp);
@CassandraType(type = CassandraType.Name.DATE) Date timestamp);
@Query("select * from allpossibletypes where date = ?0")
List<AllPossibleTypes> findWithDateParameter(Date timestamp);

View File

@@ -16,6 +16,7 @@
package org.springframework.data.cassandra.repository.query;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import java.lang.reflect.Method;
import java.util.List;
@@ -27,7 +28,6 @@ import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.cassandra.core.cql.QueryOptions;
import org.springframework.data.cassandra.core.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.domain.AllPossibleTypes;
import org.springframework.data.projection.ProjectionFactory;
@@ -124,10 +124,10 @@ public class CassandraParametersParameterAccessorUnitTests {
List<AllPossibleTypes> findByBpLocalDateTime(LocalDateTime dateTime);
List<AllPossibleTypes> findByAnnotatedBpLocalDateTime(
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE) LocalDateTime dateTime);
@CassandraType(type = Name.DATE) LocalDateTime dateTime);
List<AllPossibleTypes> findByAnnotatedObject(
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE) Object dateTime);
@CassandraType(type = Name.DATE) Object dateTime);
List<AllPossibleTypes> findByFirstname(QueryOptions queryOptions, String firstname);
}

View File

@@ -16,6 +16,7 @@
package org.springframework.data.cassandra.repository.query;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -26,7 +27,6 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.domain.Person;
@@ -56,7 +56,7 @@ public class CassandraParametersUnitTests {
CassandraParameters cassandraParameters = new CassandraParameters(method);
assertThat(cassandraParameters.getParameter(0).getCassandraType().type())
.isEqualTo(CassandraSimpleTypeHolder.Name.TIME);
.isEqualTo(Name.TIME);
}
@Test // DATACASS-296
@@ -75,7 +75,7 @@ public class CassandraParametersUnitTests {
CassandraParameters cassandraParameters = new CassandraParameters(method);
assertThat(cassandraParameters.getParameter(0).getCassandraType().type())
.isEqualTo(CassandraSimpleTypeHolder.Name.TIME);
.isEqualTo(Name.TIME);
}
@Test // DATACASS-296
@@ -85,24 +85,24 @@ public class CassandraParametersUnitTests {
CassandraParameters cassandraParameters = new CassandraParameters(method);
assertThat(cassandraParameters.getParameter(0).getCassandraType().type())
.isEqualTo(CassandraSimpleTypeHolder.Name.BOOLEAN);
.isEqualTo(Name.BOOLEAN);
}
interface PersonRepository {
Person findByFirstname(String firstname);
Person findByFirstTime(@CassandraType(type = CassandraSimpleTypeHolder.Name.TIME) String firstname);
Person findByFirstTime(@CassandraType(type = Name.TIME) String firstname);
Person findByObject(Object firstname);
Person findByAnnotatedObject(@CassandraType(type = CassandraSimpleTypeHolder.Name.TIME) Object firstname);
Person findByAnnotatedObject(@CassandraType(type = Name.TIME) Object firstname);
Person findByComposedAnnotationObject(@ComposedCassandraTypeAnnotation Object firstname);
}
@Retention(RetentionPolicy.RUNTIME)
@CassandraType(type = CassandraSimpleTypeHolder.Name.BOOLEAN)
@CassandraType(type = Name.BOOLEAN)
@interface ComposedCassandraTypeAnnotation {
}
}

View File

@@ -16,6 +16,7 @@
package org.springframework.data.cassandra.repository.query;
import static org.assertj.core.api.Assertions.*;
import static org.springframework.data.cassandra.core.mapping.CassandraType.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -30,7 +31,6 @@ import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.core.convert.support.GenericConversionService;
import org.springframework.data.cassandra.core.mapping.CassandraMappingContext;
import org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder;
import org.springframework.data.cassandra.core.mapping.CassandraType;
import org.springframework.data.cassandra.domain.AllPossibleTypes;
import org.springframework.data.projection.ProjectionFactory;
@@ -121,9 +121,9 @@ public class ReactiveCassandraParameterAccessorUnitTests {
Flux<AllPossibleTypes> findByLocalDateTime(Mono<LocalDateTime> dateTime);
Flux<AllPossibleTypes> findByAnnotatedByLocalDateTime(
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE) Single<LocalDateTime> dateTime);
@CassandraType(type = Name.DATE) Single<LocalDateTime> dateTime);
Flux<AllPossibleTypes> findByAnnotatedObject(
@CassandraType(type = CassandraSimpleTypeHolder.Name.DATE) Mono<Object> dateTime);
@CassandraType(type = Name.DATE) Mono<Object> dateTime);
}
}