diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/AbstractCassandraConfiguration.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/AbstractCassandraConfiguration.java index 4bcc46adc..878e610a9 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/AbstractCassandraConfiguration.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/AbstractCassandraConfiguration.java @@ -58,8 +58,9 @@ public abstract class AbstractCassandraConfiguration extends AbstractSessionConf private @Nullable ClassLoader beanClassLoader; /** - * Creates a {@link CassandraConverter} using the configured {@link #cassandraMapping()}. Will apply all specified - * {@link #customConversions()}. + * Creates a {@link CassandraConverter} using the configured {@link #cassandraMapping()}. + * + * Will apply all specified {@link #customConversions()}. * * @return {@link CassandraConverter} used to convert Java and Cassandra value types during the mapping process. * @see #cassandraMapping() @@ -68,11 +69,11 @@ public abstract class AbstractCassandraConfiguration extends AbstractSessionConf @Bean public CassandraConverter cassandraConverter() { - UserTypeResolver userTypeResolver = new SimpleUserTypeResolver(getRequiredSession(), - CqlIdentifier.fromCql(getKeyspaceName())); + UserTypeResolver userTypeResolver = + new SimpleUserTypeResolver(getRequiredSession(), CqlIdentifier.fromCql(getKeyspaceName())); - MappingCassandraConverter converter = new MappingCassandraConverter( - requireBeanOfType(CassandraMappingContext.class)); + MappingCassandraConverter converter = + new MappingCassandraConverter(requireBeanOfType(CassandraMappingContext.class)); converter.setCodecRegistry(getRequiredSession().getContext().getCodecRegistry()); converter.setUserTypeResolver(userTypeResolver); @@ -82,20 +83,20 @@ public abstract class AbstractCassandraConfiguration extends AbstractSessionConf } /** - * Return the {@link MappingContext} instance to map Entities to properties. + * Return the {@link MappingContext} instance to map Entities to {@link Object Java Objects}. * - * @throws ClassNotFoundException if the Cassandra Entity class type identified by name cannot be found during the - * scan. - * @see CassandraMappingContext + * @throws ClassNotFoundException if the Cassandra Entity class type identified by name + * cannot be found during the scan. + * @see org.springframework.data.cassandra.core.mapping.CassandraMappingContext */ @Bean public CassandraMappingContext cassandraMapping() throws ClassNotFoundException { - UserTypeResolver userTypeResolver = new SimpleUserTypeResolver(getRequiredSession(), - CqlIdentifier.fromCql(getKeyspaceName())); + UserTypeResolver userTypeResolver = + new SimpleUserTypeResolver(getRequiredSession(), CqlIdentifier.fromCql(getKeyspaceName())); - CassandraMappingContext mappingContext = new CassandraMappingContext(userTypeResolver, - SimpleTupleTypeFactory.DEFAULT); + CassandraMappingContext mappingContext = + new CassandraMappingContext(userTypeResolver, SimpleTupleTypeFactory.DEFAULT); CustomConversions customConversions = requireBeanOfType(CassandraCustomConversions.class); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java index 4c49c455f..7287237bb 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java @@ -108,13 +108,13 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity SpelUtils.evaluate(value, it)).orElse(value); @@ -256,5 +256,4 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity defaultName = () -> namingStrategy.getColumnName(this); + Supplier defaultName = () -> getNamingStrategy().getColumnName(this); + String overriddenName = null; boolean forceQuote = false; @@ -259,6 +259,10 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP this.namingStrategy = namingStrategy; } + NamingStrategy getNamingStrategy() { + return this.namingStrategy; + } + /* (non-Javadoc) * @see org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty#setForceQuote(boolean) */ diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraMappingContext.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraMappingContext.java index 73a5c82e3..a2283cdd7 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraMappingContext.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraMappingContext.java @@ -199,9 +199,8 @@ public class CassandraMappingContext } /** - * @return * @deprecated since 3.0. Use custom conversion through - * {@link org.springframework.data.cassandra.core.convert.MappingCassandraConverter}. + * {@link org.springframework.data.cassandra.core.convert.MappingCassandraConverter}. */ @Deprecated public CustomConversions getCustomConversions() { @@ -255,9 +254,8 @@ public class CassandraMappingContext } /** - * @return * @deprecated since 3.0. Retrieve {@link CodecRegistry} directly from - * {@link org.springframework.data.cassandra.core.convert.CassandraConverter}. + * {@link org.springframework.data.cassandra.core.convert.CassandraConverter}. */ @Deprecated public CodecRegistry getCodecRegistry() { @@ -305,9 +303,8 @@ public class CassandraMappingContext } /** - * @return * @deprecated since 3.0. Retrieve {@link UserTypeResolver} directly from - * {@link org.springframework.data.cassandra.core.convert.CassandraConverter}. + * {@link org.springframework.data.cassandra.core.convert.CassandraConverter}. */ @Nullable @Deprecated @@ -378,8 +375,9 @@ public class CassandraMappingContext BasicCassandraPersistentEntity entity = isUserDefinedType(typeInformation) ? new CassandraUserTypePersistentEntity<>(typeInformation, getVerifier()) - : isTuple(typeInformation) ? new BasicCassandraPersistentTupleEntity<>(typeInformation) - : new BasicCassandraPersistentEntity<>(typeInformation, getVerifier()); + : isTuple(typeInformation) + ? new BasicCassandraPersistentTupleEntity<>(typeInformation) + : new BasicCassandraPersistentEntity<>(typeInformation, getVerifier()); entity.setNamingStrategy(this.namingStrategy); Optional.ofNullable(this.applicationContext).ifPresent(entity::setApplicationContext); @@ -447,10 +445,9 @@ public class CassandraMappingContext return getPersistentEntities().stream().flatMap(entity -> StreamSupport.stream(entity.spliterator(), false)) .flatMap(it -> Optionals.toStream(Optional.ofNullable(it.findAnnotation(CassandraType.class)))) - .map(CassandraType::userTypeName) // - .filter(StringUtils::hasText) // - .map(CqlIdentifier::fromCql) // + .map(CassandraType::userTypeName) + .filter(StringUtils::hasText) + .map(CqlIdentifier::fromCql) .anyMatch(identifier::equals); } - } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/NamingStrategy.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/NamingStrategy.java index 119a4251b..50f2417b3 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/NamingStrategy.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/NamingStrategy.java @@ -46,21 +46,21 @@ public interface NamingStrategy { /** * Create a table name from the given {@link CassandraPersistentEntity}. */ - default String getTableName(CassandraPersistentEntity type) { + default String getTableName(CassandraPersistentEntity entity) { - Assert.notNull(type, "CassandraPersistentEntity must not be null!"); + Assert.notNull(entity, "CassandraPersistentEntity must not be null"); - return type.getType().getSimpleName(); + return entity.getType().getSimpleName(); } /** * Create a user-defined type name from the given {@link CassandraPersistentEntity}. */ - default String getUserDefinedTypeName(CassandraPersistentEntity type) { + default String getUserDefinedTypeName(CassandraPersistentEntity entity) { - Assert.notNull(type, "CassandraPersistentEntity must not be null!"); + Assert.notNull(entity, "CassandraPersistentEntity must not be null"); - return type.getType().getSimpleName(); + return entity.getType().getSimpleName(); } /** @@ -68,14 +68,16 @@ public interface NamingStrategy { */ default String getColumnName(CassandraPersistentProperty property) { - Assert.notNull(property, "CassandraPersistentProperty must not be null!"); + Assert.notNull(property, "CassandraPersistentProperty must not be null"); return property.getName(); } /** - * Apply a {@link UnaryOperator transformation function} to create a new {@link NamingStrategy} that applies the given - * transformation to each name component. Example: + * Apply a {@link UnaryOperator transformation function} to create a new {@link NamingStrategy} + * that applies the given transformation to each name component. + * + * Example: *

* NamingStrategy lower = NamingStrategy.INSTANCE.transform(String::toLowerCase); *

@@ -85,7 +87,7 @@ public interface NamingStrategy { */ default NamingStrategy transform(UnaryOperator mappingFunction) { - Assert.notNull(mappingFunction, "Mapping function must not be null!"); + Assert.notNull(mappingFunction, "Mapping function must not be null"); NamingStrategy previous = this; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/SnakeCaseNamingStrategy.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/SnakeCaseNamingStrategy.java index 3e516cfca..746d9a6e0 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/SnakeCaseNamingStrategy.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/SnakeCaseNamingStrategy.java @@ -19,7 +19,7 @@ import org.springframework.data.util.ParsingUtils; import org.springframework.util.Assert; /** - * Naming strategy that renders CamelCase name parts to {@code snake_case}. + * Naming strategy that renders {@literal CamelCase} name parts to {@literal snake_case}. * * @author Mark Paluch * @since 3.0 @@ -31,21 +31,21 @@ public class SnakeCaseNamingStrategy implements NamingStrategy { /** * Uses {@link Class#getSimpleName()} and separates camel case parts with '_'. */ - public String getTableName(CassandraPersistentEntity type) { + public String getTableName(CassandraPersistentEntity entity) { - Assert.notNull(type, "CassandraPersistentEntity must not be null!"); + Assert.notNull(entity, "CassandraPersistentEntity must not be null"); - return ParsingUtils.reconcatenateCamelCase(type.getType().getSimpleName(), "_"); + return ParsingUtils.reconcatenateCamelCase(entity.getType().getSimpleName(), "_"); } /** * Uses {@link Class#getSimpleName()} and separates camel case parts with '_'. */ - public String getUserDefinedTypeName(CassandraPersistentEntity type) { + public String getUserDefinedTypeName(CassandraPersistentEntity entity) { - Assert.notNull(type, "CassandraPersistentEntity must not be null!"); + Assert.notNull(entity, "CassandraPersistentEntity must not be null"); - return ParsingUtils.reconcatenateCamelCase(type.getType().getSimpleName(), "_"); + return ParsingUtils.reconcatenateCamelCase(entity.getType().getSimpleName(), "_"); } /** @@ -53,7 +53,7 @@ public class SnakeCaseNamingStrategy implements NamingStrategy { */ public String getColumnName(CassandraPersistentProperty property) { - Assert.notNull(property, "CassandraPersistentProperty must not be null."); + Assert.notNull(property, "CassandraPersistentProperty must not be null"); return ParsingUtils.reconcatenateCamelCase(property.getName(), "_"); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/TransformingNamingStrategy.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/TransformingNamingStrategy.java index ef2a9b35c..9a4cf322c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/TransformingNamingStrategy.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/TransformingNamingStrategy.java @@ -26,26 +26,27 @@ import java.util.function.Function; */ public class TransformingNamingStrategy implements NamingStrategy { - private final NamingStrategy delegate; private final Function mappingFunction; + private final NamingStrategy delegate; + public TransformingNamingStrategy(NamingStrategy delegate, Function mappingFunction) { this.delegate = delegate; this.mappingFunction = mappingFunction; } @Override - public String getTableName(CassandraPersistentEntity type) { - return mappingFunction.apply(delegate.getTableName(type)); + public String getTableName(CassandraPersistentEntity entity) { + return this.mappingFunction.apply(this.delegate.getTableName(entity)); } @Override - public String getUserDefinedTypeName(CassandraPersistentEntity type) { - return mappingFunction.apply(delegate.getUserDefinedTypeName(type)); + public String getUserDefinedTypeName(CassandraPersistentEntity entity) { + return this.mappingFunction.apply(this.delegate.getUserDefinedTypeName(entity)); } @Override public String getColumnName(CassandraPersistentProperty property) { - return mappingFunction.apply(delegate.getColumnName(property)); + return this.mappingFunction.apply(this.delegate.getColumnName(property)); } } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/NamingStrategyUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/NamingStrategyUnitTests.java index c1a4001b3..6ad133499 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/NamingStrategyUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/NamingStrategyUnitTests.java @@ -15,7 +15,7 @@ */ package org.springframework.data.cassandra.core.mapping; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; import org.junit.Before; import org.junit.Test; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/SnakeCaseNamingStrategyUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/SnakeCaseNamingStrategyUnitTests.java index 0dd194e94..bb7cf6bf6 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/SnakeCaseNamingStrategyUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/SnakeCaseNamingStrategyUnitTests.java @@ -15,7 +15,7 @@ */ package org.springframework.data.cassandra.core.mapping; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; import org.junit.Before; import org.junit.Test;