From 820fef2ecd8c8d5f009b8f1f52f3636d1127e1a0 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Fri, 2 Jun 2017 13:59:42 +0200 Subject: [PATCH] DATACASS-455 - Refactor BasicCassandraMappingContext to CassandraMappingContext. Remove CassandraMappingContext interface and replace it with BasicCassandraMappingContext. CassandraPersistentEntity is no longer required to declare MutablePersistentEntity but it's sufficient to implement PersistentEntity. Fall back to MappingContext instead of CassandraMappingContext use where just MappingContext is required. Reintroduce BasicCassandraMappingContext extending from CassandraMappingContext to reduce breaking changes and ease migration. --- ...sandraMappingBeanFactoryPostProcessor.java | 9 +- .../java/AbstractCassandraConfiguration.java | 3 +- .../xml/CassandraMappingContextParser.java | 4 +- .../core/AsyncCassandraTemplate.java | 16 +- .../cassandra/core/CassandraTemplate.java | 7 +- .../core/ReactiveCassandraTemplate.java | 19 +- .../convert/AbstractCassandraConverter.java | 2 +- .../BasicCassandraRowValueProvider.java | 4 +- .../convert/CassandraUDTValueProvider.java | 2 +- .../convert/MappingCassandraConverter.java | 26 +- .../cassandra/core/convert/QueryMapper.java | 12 +- .../mapping/BasicCassandraMappingContext.java | 557 +----------------- .../BasicCassandraPersistentEntity.java | 11 +- .../BasicCassandraPersistentProperty.java | 8 +- .../core/mapping/CassandraMappingContext.java | 547 +++++++++++++++-- .../mapping/CassandraPersistentEntity.java | 7 +- .../CassandraUserTypePersistentEntity.java | 4 +- .../query/AbstractCassandraQuery.java | 8 +- .../query/CassandraQueryCreator.java | 14 +- .../query/CassandraQueryExecution.java | 6 +- .../query/CassandraQueryMethod.java | 10 +- .../query/PartTreeCassandraQuery.java | 14 +- .../ReactiveCassandraQueryExecution.java | 6 +- .../query/ReactiveCassandraQueryMethod.java | 6 +- .../query/ReactivePartTreeCassandraQuery.java | 14 +- .../support/CassandraRepositoryFactory.java | 9 +- .../ReactiveCassandraRepositoryFactory.java | 10 +- .../cassandra/config/spring-cassandra-2.0.xsd | 2 +- .../CassandraNamespaceIntegrationTests.java | 4 +- ...ersistentEntitySchemaCreatorUnitTests.java | 4 +- ...ersistentEntitySchemaDropperUnitTests.java | 4 +- .../CustomConversionIntegrationTests.java | 6 +- .../MappingCassandraConverterUnitTests.java | 3 +- .../core/convert/QueryMapperUnitTests.java | 4 +- .../core/convert/UpdateMapperUnitTests.java | 4 +- ...istentEntityMetadataVerifierUnitTests.java | 3 +- ...CassandraCompositePrimaryKeyUnitTests.java | 2 +- ... => CassandraMappingContextUnitTests.java} | 21 +- ...istentEntityOrderPropertiesUnitTests.java} | 6 +- ...PersistentPropertyComparatorUnitTests.java | 2 +- ...istentEntityMetadataVerifierUnitTests.java | 2 +- ...BasicCassandraMappingContextUnitTests.java | 4 +- .../CreateUserTypeIntegrationTests.java | 4 +- .../ForceQuotedPropertiesSimpleUnitTests.java | 4 +- ...yClassEntityMetadataVerifierUnitTests.java | 2 +- .../MultipackageScanningUnitTests.java | 17 +- .../cdi/CassandraOperationsProducer.java | 4 +- ...ssandraRepositoriesRegistrarUnitTests.java | 4 +- ...yMethodParameterTypesIntegrationTests.java | 4 +- ...aParametersParameterAccessorUnitTests.java | 3 +- .../query/CassandraQueryCreatorUnitTests.java | 6 +- .../query/CassandraQueryMethodUnitTests.java | 3 +- .../ConvertingParameterAccessorUnitTests.java | 4 +- .../PartTreeCassandraQueryUnitTests.java | 6 +- ...veCassandraParameterAccessorUnitTests.java | 3 +- ...ReactiveCassandraQueryMethodUnitTests.java | 3 +- ...activePartTreeCassandraQueryUnitTests.java | 6 +- ...iveStringBasedCassandraQueryUnitTests.java | 4 +- .../StringBasedCassandraQueryUnitTests.java | 4 +- ...gDataEmbeddedCassandraIntegrationTest.java | 3 +- .../CassandraRepositoryFactoryUnitTests.java | 4 +- ...veCassandraRepositoryFactoryUnitTests.java | 7 +- .../SimpleCassandraRepositoryUnitTests.java | 4 +- .../config/multiple-mapping-contexts.xml | 2 +- 64 files changed, 681 insertions(+), 826 deletions(-) rename spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/{BasicCassandraMappingContextUnitTests.java => CassandraMappingContextUnitTests.java} (94%) rename spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/{BasicCassandraPersistentEntityOrderPropertiesUnitTests.java => CassandraPersistentEntityOrderPropertiesUnitTests.java} (94%) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessor.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessor.java index d2bb1adcb..0b87cd887 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessor.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraMappingBeanFactoryPostProcessor.java @@ -33,7 +33,6 @@ import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.data.cassandra.core.convert.CassandraConverter; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.util.StringUtils; @@ -45,7 +44,7 @@ import com.datastax.driver.core.Session; * via their default implementation types: * *

@@ -55,8 +54,8 @@ import com.datastax.driver.core.Session; * when creating a default definition for the {@link CassandraConverter}. *

* If a single definition of a required type is present, then it is used. For example, if there is already a - * {@link CassandraMappingContext} definition present, then it will be used in the {@link BasicCassandraMappingContext} - * bean definition. + * {@link CassandraMappingContext} definition present, then it will be used in the {@link CassandraMappingContext} bean + * definition. *

* It requires that a single {@link Session} or {@link CassandraSessionFactoryBean} definition be present. As described * above, multiple {@link Session} definitions, multiple {@link CassandraSessionFactoryBean} definitions, or both a @@ -154,7 +153,7 @@ public class CassandraMappingBeanFactoryPostProcessor implements BeanFactoryPost private BeanDefinitionHolder registerDefaultContext(BeanDefinitionRegistry registry) { BeanDefinitionHolder contextBean = new BeanDefinitionHolder( - BeanDefinitionBuilder.genericBeanDefinition(BasicCassandraMappingContext.class).getBeanDefinition(), + BeanDefinitionBuilder.genericBeanDefinition(CassandraMappingContext.class).getBeanDefinition(), DefaultBeanNames.CONTEXT); registry.registerBeanDefinition(contextBean.getBeanName(), contextBean.getBeanDefinition()); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/java/AbstractCassandraConfiguration.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/java/AbstractCassandraConfiguration.java index b44e01c98..3774cb3f1 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/java/AbstractCassandraConfiguration.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/java/AbstractCassandraConfiguration.java @@ -30,7 +30,6 @@ import org.springframework.data.cassandra.core.CassandraAdminTemplate; import org.springframework.data.cassandra.core.convert.CassandraConverter; import org.springframework.data.cassandra.core.convert.CassandraCustomConversions; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.SimpleUserTypeResolver; import org.springframework.data.cassandra.core.mapping.Table; @@ -141,7 +140,7 @@ public abstract class AbstractCassandraConfiguration extends AbstractClusterConf @Bean public CassandraMappingContext cassandraMapping() throws ClassNotFoundException { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); mappingContext.setBeanClassLoader(beanClassLoader); mappingContext.setInitialEntitySet(getInitialEntitySet()); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/xml/CassandraMappingContextParser.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/xml/CassandraMappingContextParser.java index 5c4746de8..939b9c575 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/xml/CassandraMappingContextParser.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/xml/CassandraMappingContextParser.java @@ -29,7 +29,7 @@ import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.data.cassandra.config.CassandraEntityClassScanner; import org.springframework.data.cassandra.config.DefaultBeanNames; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.EntityMapping; import org.springframework.data.cassandra.core.mapping.Mapping; import org.springframework.data.cassandra.core.mapping.PropertyMapping; @@ -53,7 +53,7 @@ public class CassandraMappingContextParser extends AbstractSingleBeanDefinitionP */ @Override protected Class getBeanClass(Element element) { - return BasicCassandraMappingContext.class; + return CassandraMappingContext.class; } /* (non-Javadoc) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/AsyncCassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/AsyncCassandraTemplate.java index ed88e6b58..27503e7a4 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/AsyncCassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/AsyncCassandraTemplate.java @@ -27,6 +27,7 @@ import org.springframework.data.cassandra.core.convert.QueryMapper; import org.springframework.data.cassandra.core.convert.UpdateMapper; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.core.query.Query; import org.springframework.data.cql.core.AsyncCqlOperations; import org.springframework.data.cql.core.AsyncCqlTemplate; @@ -39,6 +40,7 @@ import org.springframework.data.cql.core.WriteOptions; import org.springframework.data.cql.core.session.DefaultSessionFactory; import org.springframework.data.cql.core.session.SessionFactory; import org.springframework.data.cql.support.CqlExceptionTranslator; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.concurrent.ListenableFuture; @@ -69,14 +71,6 @@ import com.datastax.driver.core.querybuilder.Update; * * @author Mark Paluch * @author John Blum - * @see org.springframework.cassandra.core.AsyncCqlOperations - * @see org.springframework.data.cassandra.core.AsyncCassandraOperations - * @see com.datastax.driver.core.querybuilder.Delete - * @see com.datastax.driver.core.querybuilder.Insert - * @see com.datastax.driver.core.querybuilder.QueryBuilder - * @see com.datastax.driver.core.querybuilder.Select - * @see com.datastax.driver.core.querybuilder.Truncate - * @see com.datastax.driver.core.querybuilder.Update * @since 2.0 */ public class AsyncCassandraTemplate implements AsyncCassandraOperations { @@ -85,7 +79,7 @@ public class AsyncCassandraTemplate implements AsyncCassandraOperations { private final CassandraConverter converter; - private final CassandraMappingContext mappingContext; + private final MappingContext, CassandraPersistentProperty> mappingContext; private final CqlExceptionTranslator exceptionTranslator; @@ -186,9 +180,9 @@ public class AsyncCassandraTemplate implements AsyncCassandraOperations { * objects to Cassandra tables. * * @return the {@link CassandraMappingContext} used by this template. - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext + * @see CassandraMappingContext */ - protected CassandraMappingContext getMappingContext() { + protected MappingContext, CassandraPersistentProperty> getMappingContext() { return this.mappingContext; } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java index 0dae7bbed..a1a8f0206 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java @@ -40,6 +40,7 @@ import org.springframework.data.cql.core.SessionCallback; import org.springframework.data.cql.core.WriteOptions; import org.springframework.data.cql.core.session.DefaultSessionFactory; import org.springframework.data.cql.core.session.SessionFactory; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -75,7 +76,7 @@ public class CassandraTemplate implements CassandraOperations { private final CassandraConverter converter; - private final CassandraMappingContext mappingContext; + private final MappingContext, CassandraPersistentProperty> mappingContext; private final CqlOperations cqlOperations; @@ -174,9 +175,9 @@ public class CassandraTemplate implements CassandraOperations { * object to Cassandra tables. * * @return the {@link CassandraMappingContext} used by this template. - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext + * @see CassandraMappingContext */ - protected CassandraMappingContext getMappingContext() { + protected MappingContext, CassandraPersistentProperty> getMappingContext() { return this.mappingContext; } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java index de15b87c3..8a163b8fc 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/ReactiveCassandraTemplate.java @@ -26,6 +26,7 @@ import org.springframework.data.cassandra.core.convert.QueryMapper; import org.springframework.data.cassandra.core.convert.UpdateMapper; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.core.query.Query; import org.springframework.data.cql.core.CqlIdentifier; import org.springframework.data.cql.core.CqlProvider; @@ -38,6 +39,7 @@ import org.springframework.data.cql.core.session.DefaultReactiveSessionFactory; import org.springframework.data.cql.core.session.ReactiveResultSet; import org.springframework.data.cql.core.session.ReactiveSession; import org.springframework.data.cql.core.session.ReactiveSessionFactory; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -66,24 +68,13 @@ import com.datastax.driver.core.querybuilder.Update; * * @author Mark Paluch * @author John Blum - * @see org.springframework.data.cql.core.ReactiveCqlOperations - * @see org.springframework.data.cassandra.core.convert.CassandraConverter - * @see org.springframework.data.cassandra.core.convert.QueryMapper - * @see org.springframework.data.cassandra.core.convert.UpdateMapper - * @see org.springframework.data.cassandra.core.ReactiveCassandraOperations - * @see com.datastax.driver.core.querybuilder.Delete - * @see com.datastax.driver.core.querybuilder.Insert - * @see com.datastax.driver.core.querybuilder.QueryBuilder - * @see com.datastax.driver.core.querybuilder.Select - * @see com.datastax.driver.core.querybuilder.Truncate - * @see com.datastax.driver.core.querybuilder.Update * @since 2.0 */ public class ReactiveCassandraTemplate implements ReactiveCassandraOperations { private final CassandraConverter converter; - private final CassandraMappingContext mappingContext; + private final MappingContext, CassandraPersistentProperty> mappingContext; private final ReactiveCqlOperations cqlOperations; @@ -182,9 +173,9 @@ public class ReactiveCassandraTemplate implements ReactiveCassandraOperations { * objects to Cassandra tables. * * @return the {@link CassandraMappingContext} used by this template. - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext + * @see CassandraMappingContext */ - protected CassandraMappingContext getMappingContext() { + protected MappingContext, CassandraPersistentProperty> getMappingContext() { return this.mappingContext; } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/AbstractCassandraConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/AbstractCassandraConverter.java index b1bd2231b..bf6b56dac 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/AbstractCassandraConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/AbstractCassandraConverter.java @@ -68,7 +68,7 @@ public abstract class AbstractCassandraConverter implements CassandraConverter, } /* (non-Javadoc) - * @see org.springframework.data.cassandra.convert.CassandraConverter#getCustomConversions() + * @see org.springframework.data.cassandra.core.convert.CassandraConverter#getCustomConversions() */ @Override public CustomConversions getCustomConversions() { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/BasicCassandraRowValueProvider.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/BasicCassandraRowValueProvider.java index c8df00035..9a3eba01c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/BasicCassandraRowValueProvider.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/BasicCassandraRowValueProvider.java @@ -70,7 +70,7 @@ public class BasicCassandraRowValueProvider implements CassandraRowValueProvider } /* (non-Javadoc) - * @see org.springframework.data.cassandra.convert.CassandraRowValueProvider#getRow() + * @see org.springframework.data.cassandra.core.convert.CassandraRowValueProvider#getRow() */ @Override public Row getRow() { @@ -78,7 +78,7 @@ public class BasicCassandraRowValueProvider implements CassandraRowValueProvider } /* (non-Javadoc) - * @see org.springframework.data.cassandra.convert.CassandraValueProvider#hasProperty(org.springframework.data.cassandra.mapping.CassandraPersistentProperty) + * @see org.springframework.data.cassandra.core.convert.CassandraValueProvider#hasProperty(org.springframework.data.cassandra.mapping.CassandraPersistentProperty) */ @Override public boolean hasProperty(CassandraPersistentProperty property) { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/CassandraUDTValueProvider.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/CassandraUDTValueProvider.java index 07e0a86eb..8c3c1afa5 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/CassandraUDTValueProvider.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/CassandraUDTValueProvider.java @@ -78,7 +78,7 @@ public class CassandraUDTValueProvider implements CassandraValueProvider { } /* (non-Javadoc) - * @see org.springframework.data.cassandra.convert.CassandraValueProvider#hasProperty(org.springframework.data.cassandra.mapping.CassandraPersistentProperty) + * @see org.springframework.data.cassandra.core.convert.CassandraValueProvider#hasProperty(org.springframework.data.cassandra.mapping.CassandraPersistentProperty) */ @Override public boolean hasProperty(CassandraPersistentProperty property) { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java index cd71c5f97..933d199db 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverter.java @@ -35,7 +35,7 @@ import org.springframework.context.ApplicationContextAware; import org.springframework.core.CollectionFactory; import org.springframework.core.convert.support.DefaultConversionService; import org.springframework.dao.InvalidDataAccessApiUsageException; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.BasicCassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; @@ -80,12 +80,6 @@ import com.datastax.driver.core.querybuilder.Update; * @author Mark Paluch * @author Antoine Toulme * @author John Blum - * @see org.springframework.beans.factory.InitializingBean - * @see org.springframework.context.ApplicationContextAware - * @see org.springframework.beans.factory.BeanClassLoaderAware - * @see org.springframework.data.convert.EntityConverter - * @see org.springframework.data.convert.EntityReader - * @see org.springframework.data.convert.EntityWriter */ public class MappingCassandraConverter extends AbstractCassandraConverter implements CassandraConverter, ApplicationContextAware, BeanClassLoaderAware { @@ -99,10 +93,10 @@ public class MappingCassandraConverter extends AbstractCassandraConverter private SpELContext spELContext; /** - * Create a new {@link MappingCassandraConverter} with a {@link BasicCassandraMappingContext}. + * Create a new {@link MappingCassandraConverter} with a {@link CassandraMappingContext}. */ public MappingCassandraConverter() { - this(new BasicCassandraMappingContext()); + this(new CassandraMappingContext()); } /** @@ -260,7 +254,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter } /* (non-Javadoc) - * @see org.springframework.data.cassandra.convert.CassandraConverter#convertToColumnType(java.util.Optional) + * @see org.springframework.data.cassandra.core.convert.CassandraConverter#convertToColumnType(java.util.Optional) */ @Override @SuppressWarnings("unchecked") @@ -271,7 +265,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter } /* (non-Javadoc) - * @see org.springframework.data.cassandra.convert.CassandraConverter#convertToColumnType(java.util.Optional, org.springframework.data.util.TypeInformation) + * @see org.springframework.data.cassandra.core.convert.CassandraConverter#convertToColumnType(java.util.Optional, org.springframework.data.util.TypeInformation) */ @Override public Optional convertToColumnType(Optional obj, TypeInformation typeInformation) { @@ -732,8 +726,8 @@ public class MappingCassandraConverter extends AbstractCassandraConverter return Optional.of((O) converted); } - Optional> optionalUdt = getMappingContext().getPersistentEntity(actualType.getType()) - .filter(CassandraPersistentEntity::isUserDefinedType); + Optional> optionalUdt = getMappingContext() + .getPersistentEntity(actualType.getType()).filter(CassandraPersistentEntity::isUserDefinedType); if (optionalUdt.isPresent()) { @@ -871,7 +865,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter return obj.map(it -> (T) readCollectionOrArray(property.getTypeInformation(), (Collection) it)); } - Optional> persistentEntity = getMappingContext() + Optional> persistentEntity = getMappingContext() .getPersistentEntity(property.getActualType()).filter(CassandraPersistentEntity::isUserDefinedType); if (persistentEntity.isPresent() && obj.filter(it -> it instanceof UDTValue).isPresent()) { @@ -907,7 +901,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter return getPotentiallyConvertedSimpleRead(items, collectionType); } - Optional> cassandraPersistentEntity = componentType + Optional> cassandraPersistentEntity = componentType .flatMap(it -> getMappingContext().getPersistentEntity(it)) .filter(CassandraPersistentEntity::isUserDefinedType); @@ -945,7 +939,7 @@ public class MappingCassandraConverter extends AbstractCassandraConverter private final CassandraValueProvider parent; /* (non-Javadoc) - * @see org.springframework.data.cassandra.convert.CassandraValueProvider#hasProperty(org.springframework.data.cassandra.mapping.CassandraPersistentProperty) + * @see org.springframework.data.cassandra.core.convert.CassandraValueProvider#hasProperty(org.springframework.data.cassandra.mapping.CassandraPersistentProperty) */ @Override public boolean hasProperty(CassandraPersistentProperty property) { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/QueryMapper.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/QueryMapper.java index 484736a89..a4363c8d2 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/QueryMapper.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/QueryMapper.java @@ -56,9 +56,6 @@ import org.springframework.util.Assert; * @see org.springframework.data.cassandra.core.query.Columns * @see org.springframework.data.cassandra.core.query.Criteria * @see org.springframework.data.cassandra.core.query.Filter - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext - * @see org.springframework.data.cassandra.mapping.CassandraPersistentEntity - * @see org.springframework.data.cassandra.mapping.CassandraPersistentProperty * @see org.springframework.data.domain.Sort * @see org.springframework.data.mapping.PersistentProperty * @see org.springframework.data.mapping.PropertyPath @@ -90,18 +87,17 @@ public class QueryMapper { * Returns the configured {@link CassandraConverter} used to convert object values into Cassandra column typed values. * * @return the configured {@link CassandraConverter}. - * @see org.springframework.data.cassandra.convert.CassandraConverter + * @see org.springframework.data.cassandra.core.convert.CassandraConverter */ protected CassandraConverter getConverter() { return this.converter; } /** - * Returns the configured {@link CassandraMappingContext} containing mapping meta-data (persistent entities and - * properties) used to store (map) objects to Cassandra tables (rows/columns). + * Returns the configured {@link MappingContext} containing mapping meta-data (persistent entities and properties) + * used to store (map) objects to Cassandra tables (rows/columns). * - * @return the configured {@link CassandraMappingContext}. - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext + * @return the configured {@link MappingContext}. */ protected CassandraMappingContext getMappingContext() { return this.mappingContext; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraMappingContext.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraMappingContext.java index 8d7f85a61..d95d61740 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraMappingContext.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraMappingContext.java @@ -15,45 +15,7 @@ */ package org.springframework.data.cassandra.core.mapping; -import static org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder.*; -import static org.springframework.data.cql.core.CqlIdentifier.*; -import static org.springframework.data.cql.core.keyspace.CreateTableSpecification.*; - -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -import org.springframework.beans.BeansException; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.core.annotation.AnnotatedElementUtils; -import org.springframework.data.cassandra.core.convert.CassandraCustomConversions; -import org.springframework.data.cassandra.core.mapping.UserTypeUtil.FrozenLiteralDataType; -import org.springframework.data.convert.CustomConversions; -import org.springframework.data.cql.core.CqlIdentifier; -import org.springframework.data.cql.core.keyspace.CreateTableSpecification; -import org.springframework.data.cql.core.keyspace.CreateUserTypeSpecification; -import org.springframework.data.mapping.PersistentEntity; -import org.springframework.data.mapping.PropertyHandler; -import org.springframework.data.mapping.context.AbstractMappingContext; import org.springframework.data.mapping.context.MappingContext; -import org.springframework.data.mapping.model.MappingException; -import org.springframework.data.mapping.model.Property; -import org.springframework.data.mapping.model.SimpleTypeHolder; -import org.springframework.data.util.Optionals; -import org.springframework.data.util.TypeInformation; -import org.springframework.util.Assert; -import org.springframework.util.ClassUtils; -import org.springframework.util.StringUtils; - -import com.datastax.driver.core.DataType; -import com.datastax.driver.core.TableMetadata; -import com.datastax.driver.core.UserType; /** * Default implementation of a {@link MappingContext} for Cassandra using {@link CassandraPersistentEntity} and @@ -64,520 +26,7 @@ import com.datastax.driver.core.UserType; * @author Mark Paluch * @author John Blum * @author Jens Schauder + * @deprecated since 2.0. Use {@link CassandraMappingContext}. */ -public class BasicCassandraMappingContext - extends AbstractMappingContext, CassandraPersistentProperty> - implements CassandraMappingContext, ApplicationContextAware { - - private CassandraPersistentEntityMetadataVerifier verifier = new CompositeCassandraPersistentEntityMetadataVerifier(); - - private CustomConversions customConversions; - - private Mapping mapping = new Mapping(); - - private UserTypeResolver userTypeResolver; - - private ApplicationContext context; - - private ClassLoader beanClassLoader; - - // useful caches - private final Map, CassandraPersistentEntity> entitiesByType = new HashMap<>(); - private final Map>> entitySetsByTableName = new HashMap<>(); - - private final Set> primaryKeyEntities = new HashSet<>(); - private final Set> userDefinedTypes = new HashSet<>(); - private final Set> tableEntities = new HashSet<>(); - - /** - * Create a new {@link BasicCassandraMappingContext}. - */ - public BasicCassandraMappingContext() { - - setCustomConversions(new CassandraCustomConversions(Collections.EMPTY_LIST)); - setSimpleTypeHolder(CassandraSimpleTypeHolder.HOLDER); - } - - /* (non-Javadoc) - * @see org.springframework.data.mapping.context.AbstractMappingContext#initialize() - */ - @Override - public void initialize() { - super.initialize(); - processMappingOverrides(); - } - - @SuppressWarnings("all") - protected void processMappingOverrides() { - - mapping.getEntityMappings().stream()// - .filter(entityMapping -> entityMapping != null).forEach(entityMapping -> { - String entityClassName = entityMapping.getEntityClassName(); - - try { - Class entityClass = ClassUtils.forName(entityClassName, beanClassLoader); - - CassandraPersistentEntity entity = getRequiredPersistentEntity(entityClass); - - String entityTableName = entityMapping.getTableName(); - - if (StringUtils.hasText(entityTableName)) { - entity.setTableName(cqlId(entityTableName, Boolean.valueOf(entityMapping.getForceQuote()))); - } - - processMappingOverrides(entity, entityMapping); - - } catch (ClassNotFoundException e) { - throw new IllegalStateException(String.format("Unknown persistent entity name [%s]", entityClassName), e); - } - }); - } - - protected void processMappingOverrides(CassandraPersistentEntity entity, EntityMapping entityMapping) { - entityMapping.getPropertyMappings() - .forEach((key, propertyMapping) -> processMappingOverride(entity, propertyMapping)); - } - - protected void processMappingOverride(CassandraPersistentEntity entity, PropertyMapping mapping) { - - CassandraPersistentProperty property = entity.getRequiredPersistentProperty(mapping.getPropertyName()); - - boolean forceQuote = Boolean.valueOf(mapping.getForceQuote()); - - property.setForceQuote(forceQuote); - - if (StringUtils.hasText(mapping.getColumnName())) { - property.setColumnName(cqlId(mapping.getColumnName(), forceQuote)); - } - } - - /* (non-Javadoc) - * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext) - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - this.context = applicationContext; - } - - public void setBeanClassLoader(ClassLoader beanClassLoader) { - this.beanClassLoader = beanClassLoader; - } - - /** - * Sets the {@link CustomConversions}. - * - * @param customConversions must not be {@literal null}. - * @since 1.5 - */ - public void setCustomConversions(CustomConversions customConversions) { - - Assert.notNull(customConversions, "CustomConversions must not be null"); - - this.customConversions = customConversions; - } - - public void setMapping(Mapping mapping) { - - Assert.notNull(mapping, "Mapping must not be null"); - - this.mapping = mapping; - } - - /** - * Sets the {@link UserTypeResolver}. - * - * @param userTypeResolver must not be {@literal null}. - * @since 1.5 - */ - public void setUserTypeResolver(UserTypeResolver userTypeResolver) { - - Assert.notNull(userTypeResolver, "UserTypeResolver must not be null"); - - this.userTypeResolver = userTypeResolver; - } - - /** - * @param verifier The verifier to set. - */ - @Override - public void setVerifier(CassandraPersistentEntityMetadataVerifier verifier) { - this.verifier = verifier; - } - - /** - * @return Returns the verifier. - */ - @SuppressWarnings("unused") - public CassandraPersistentEntityMetadataVerifier getVerifier() { - return verifier; - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getNonPrimaryKeyEntities() - */ - @Override - public Collection> getNonPrimaryKeyEntities() { - return getTableEntities(); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getPrimaryKeyEntities() - */ - @Override - public Collection> getPrimaryKeyEntities() { - return Collections.unmodifiableSet(primaryKeyEntities); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getTableEntities() - */ - @Override - public Collection> getTableEntities() { - return Collections.unmodifiableCollection(tableEntities); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getUserDefinedTypeEntities() - */ - @Override - public Collection> getUserDefinedTypeEntities() { - return Collections.unmodifiableSet(userDefinedTypes); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getPersistentEntities(boolean) - */ - @Override - public Collection> getPersistentEntities(boolean includePrimaryKeyTypesAndUdts) { - - if (includePrimaryKeyTypesAndUdts) { - return super.getPersistentEntities(); - } - - return getTableEntities(); - } - - /* (non-Javadoc) - * @see org.springframework.data.mapping.context.AbstractMappingContext#addPersistentEntity(org.springframework.data.util.TypeInformation) - */ - @Override - protected Optional> addPersistentEntity(TypeInformation typeInformation) { - - // Prevent conversion types created as CassandraPersistentEntity - Optional> optional = shouldCreatePersistentEntityFor(typeInformation) - ? super.addPersistentEntity(typeInformation) : Optional.empty(); - - optional.ifPresent(entity -> { - - if (entity.isUserDefinedType()) { - userDefinedTypes.add(entity); - } - // now do some caching of the entity - - Set> entities = entitySetsByTableName.computeIfAbsent(entity.getTableName(), - cqlIdentifier -> new HashSet<>()); - - entities.add(entity); - - if (!entity.isUserDefinedType()) { - if (entity.isCompositePrimaryKey()) { - primaryKeyEntities.add(entity); - } - - entity.findAnnotation(Table.class).ifPresent(table -> tableEntities.add(entity)); - } - - entitiesByType.put(entity.getType(), entity); - }); - - return optional; - } - - /* (non-Javadoc) - * @see org.springframework.data.mapping.context.AbstractMappingContext#shouldCreatePersistentEntityFor(org.springframework.data.util.TypeInformation) - */ - @Override - protected boolean shouldCreatePersistentEntityFor(TypeInformation typeInfo) { - return (!customConversions.hasCustomWriteTarget(typeInfo.getType()) - && super.shouldCreatePersistentEntityFor(typeInfo)); - } - - /* (non-Javadoc) - * @see org.springframework.data.mapping.context.AbstractMappingContext#createPersistentEntity(org.springframework.data.util.TypeInformation) - */ - @Override - protected CassandraPersistentEntity createPersistentEntity(TypeInformation typeInformation) { - - UserDefinedType userDefinedType = AnnotatedElementUtils.findMergedAnnotation(typeInformation.getType(), - UserDefinedType.class); - - CassandraPersistentEntity entity; - - if (userDefinedType != null) { - entity = new CassandraUserTypePersistentEntity<>(typeInformation, this, verifier, userTypeResolver); - - } else { - entity = new BasicCassandraPersistentEntity<>(typeInformation, this, verifier); - } - - if (context != null) { - entity.setApplicationContext(context); - } - - return entity; - } - - /* (non-Javadoc) - * @see org.springframework.data.mapping.context.AbstractMappingContext#createPersistentProperty(java.lang.reflect.Field, java.beans.PropertyDescriptor, org.springframework.data.mapping.model.MutablePersistentEntity, org.springframework.data.mapping.model.SimpleTypeHolder) - */ - @Override - protected CassandraPersistentProperty createPersistentProperty(Property property, CassandraPersistentEntity owner, - SimpleTypeHolder simpleTypeHolder) { - return new BasicCassandraPersistentProperty(property, owner, simpleTypeHolder, userTypeResolver); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#usesTable(com.datastax.driver.core.TableMetadata) - */ - @Override - public boolean usesTable(TableMetadata table) { - return entitySetsByTableName.containsKey(cqlId(table.getName())); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#usesUserType(com.datastax.driver.core.UserType) - */ - @Override - public boolean usesUserType(final UserType userType) { - - CqlIdentifier identifier = CqlIdentifier.cqlId(userType.getTypeName()); - - return (hasMappedUserType(identifier) || hasReferencedUserType(identifier)); - } - - private boolean hasReferencedUserType(final CqlIdentifier identifier) { - - return getPersistentEntities().stream() // - .flatMap(PersistentEntity::getPersistentProperties) // - .map(it -> it.findAnnotation(CassandraType.class)) // - .filter(Optional::isPresent) // - .flatMap(Optionals::toStream) // - .anyMatch(it -> { - return StringUtils.hasText(it.userTypeName()) // - && CqlIdentifier.cqlId(it.userTypeName()).equals(identifier); - }); // - } - - private boolean hasMappedUserType(CqlIdentifier identifier) { - return userDefinedTypes.stream().map(CassandraPersistentEntity::getTableName).anyMatch(identifier::equals); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getCreateTableSpecificationFor(org.springframework.data.cassandra.mapping.CassandraPersistentEntity) - */ - @Override - public CreateTableSpecification getCreateTableSpecificationFor(CassandraPersistentEntity entity) { - - Assert.notNull(entity, "CassandraPersistentEntity must not be null"); - - final CreateTableSpecification specification = createTable().name(entity.getTableName()); - - entity.getPersistentProperties().filter(CassandraPersistentProperty::isCompositePrimaryKey).forEach(property -> { - - CassandraPersistentEntity primaryKeyEntity = getRequiredPersistentEntity(property.getRawType()); - - primaryKeyEntity.getPersistentProperties().forEach(primaryKeyProperty -> { - - if (primaryKeyProperty.isPartitionKeyColumn()) { - specification.partitionKeyColumn(primaryKeyProperty.getColumnName(), getDataType(primaryKeyProperty)); - } else { // it's a cluster column - specification.clusteredKeyColumn(primaryKeyProperty.getColumnName(), getDataType(primaryKeyProperty), - primaryKeyProperty.getPrimaryKeyOrdering()); - } - - }); - - }); - - entity.getPersistentProperties().filter((property) -> !property.isCompositePrimaryKey()).forEach(property -> { - if (property.isIdProperty() || property.isPartitionKeyColumn()) { - specification.partitionKeyColumn(property.getColumnName(), - UserTypeUtil.potentiallyFreeze(getDataType(property))); - } else if (property.isClusterKeyColumn()) { - specification.clusteredKeyColumn(property.getColumnName(), - UserTypeUtil.potentiallyFreeze(getDataType(property)), property.getPrimaryKeyOrdering()); - } else { - specification.column(property.getColumnName(), UserTypeUtil.potentiallyFreeze(getDataType(property))); - } - }); - - if (specification.getPartitionKeyColumns().isEmpty()) { - throw new MappingException(String.format("No partition key columns found in entity [%s]", entity.getType())); - } - - return specification; - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getCreateUserTypeSpecificationFor(org.springframework.data.cassandra.mapping.CassandraPersistentEntity) - */ - @Override - public CreateUserTypeSpecification getCreateUserTypeSpecificationFor(CassandraPersistentEntity entity) { - - Assert.notNull(entity, "CassandraPersistentEntity must not be null"); - - final CreateUserTypeSpecification specification = CreateUserTypeSpecification.createType(entity.getTableName()); - - entity.doWithProperties((PropertyHandler) property -> { - - // Use frozen literal to not resolve types from Cassandra. - // At this stage, they might be not created yet. - specification.field(property.getColumnName(), - getDataTypeWithUserTypeFactory(property, DataTypeProvider.FrozenLiteral)); - }); - - if (specification.getFields().isEmpty()) { - throw new MappingException(String.format("No fields in user type [%s]", entity.getType())); - } - - return specification; - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getDataType(org.springframework.data.cassandra.mapping.CassandraPersistentProperty) - */ - @Override - public DataType getDataType(CassandraPersistentProperty property) { - return getDataTypeWithUserTypeFactory(property, DataTypeProvider.EntityUserType); - } - - private DataType getDataTypeWithUserTypeFactory(CassandraPersistentProperty property, - DataTypeProvider dataTypeProvider) { - - if (property.isCompositePrimaryKey()) { - return property.getDataType(); - } - - if (property.findAnnotation(CassandraType.class).isPresent()) { - return property.getDataType(); - } - - Optional> persistentEntity = getPersistentEntity(property.getActualType()); - - if (persistentEntity.filter(CassandraPersistentEntity::isUserDefinedType).isPresent()) { - - Optional dataType = persistentEntity.map(it -> getUserDataType(property, dataTypeProvider, it)); - - if (dataType.isPresent()) { - return dataType.get(); - } - } - - return customConversions.getCustomWriteTarget(property.getType()) // - .map(CassandraSimpleTypeHolder::getDataTypeFor) // - .orElseGet(() -> customConversions.getCustomWriteTarget(property.getActualType()) // - .map(it -> { - - if (property.isCollectionLike()) { - - if (List.class.isAssignableFrom(property.getType())) { - return DataType.list(getDataTypeFor(it)); - } - - if (Set.class.isAssignableFrom(property.getType())) { - return DataType.set(getDataTypeFor(it)); - } - } - - return getDataTypeFor(it); - }).orElseGet(property::getDataType) - - ); - } - - private DataType getUserDataType(CassandraPersistentProperty property, DataTypeProvider dataTypeProvider, - CassandraPersistentEntity persistentEntity) { - - DataType elementType = dataTypeProvider.getDataType(persistentEntity); - - if (property.isCollectionLike()) { - - if (Set.class.isAssignableFrom(property.getType())) { - return DataType.set(elementType); - } - - if (List.class.isAssignableFrom(property.getType())) { - return DataType.list(elementType); - } - } - - if (!property.isCollectionLike() && !property.isMapLike()) { - return elementType; - } - - return null; - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getDataType(java.lang.Class) - */ - @Override - public DataType getDataType(Class type) { - - return customConversions.getCustomWriteTarget(type) // - .map(CassandraSimpleTypeHolder::getDataTypeFor) // - .orElseGet(() -> getDataTypeFor(type)); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#getExistingPersistentEntity(java.lang.Class) - */ - @Override - public CassandraPersistentEntity getExistingPersistentEntity(Class type) { - - CassandraPersistentEntity entity = entitiesByType.get(type); - - Assert.notNull(entity, String.format("Unknown persistent type [%s]", type.getName())); - - return entity; - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext#contains(java.lang.Class) - */ - @Override - public boolean contains(Class type) { - return entitiesByType.containsKey(type); - } - - /** - * @author Jens Schauder - * @since 1.5.1 - */ - enum DataTypeProvider { - - EntityUserType { - - @Override - public DataType getDataType(CassandraPersistentEntity entity) { - return entity.getUserType(); - } - }, - - FrozenLiteral { - - @Override - public DataType getDataType(CassandraPersistentEntity entity) { - return new FrozenLiteralDataType(entity.getTableName()); - } - }; - - /** - * Return the data type for the {@link CassandraPersistentEntity}. - * - * @param entity must not be {@literal null}. - * @return - */ - abstract DataType getDataType(CassandraPersistentEntity entity); - } -} +@Deprecated +public class BasicCassandraMappingContext extends CassandraMappingContext {} 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 f77170d4e..ecd3a5e0a 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 @@ -32,6 +32,7 @@ import org.springframework.data.cql.core.CqlIdentifier; import org.springframework.data.cql.support.exception.UnsupportedCassandraOperationException; import org.springframework.data.mapping.Association; import org.springframework.data.mapping.AssociationHandler; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.BasicPersistentEntity; import org.springframework.data.mapping.model.MappingException; import org.springframework.data.util.TypeInformation; @@ -59,7 +60,7 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity, CassandraPersistentProperty> mappingContext; private ApplicationContext context; @@ -84,7 +85,8 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity typeInformation, CassandraMappingContext mappingContext) { + public BasicCassandraPersistentEntity(TypeInformation typeInformation, + MappingContext, CassandraPersistentProperty> mappingContext) { this(typeInformation, mappingContext, DEFAULT_VERIFIER); } @@ -94,7 +96,8 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity typeInformation, CassandraMappingContext mappingContext, + public BasicCassandraPersistentEntity(TypeInformation typeInformation, + MappingContext, CassandraPersistentProperty> mappingContext, CassandraPersistentEntityMetadataVerifier verifier) { // FIXME: Constructor with comparator, no optionality here @@ -226,7 +229,7 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity, CassandraPersistentProperty> getMappingContext() { return mappingContext; } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentProperty.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentProperty.java index cc4a5532a..8ec656b40 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentProperty.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentProperty.java @@ -36,6 +36,7 @@ import org.springframework.data.cql.core.CqlIdentifier; import org.springframework.data.cql.core.Ordering; import org.springframework.data.cql.core.PrimaryKeyType; import org.springframework.data.mapping.Association; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.AnnotationBasedPersistentProperty; import org.springframework.data.mapping.model.MappingException; import org.springframework.data.mapping.model.Property; @@ -326,8 +327,8 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP protected DataType getDataTypeFor(Class javaType) { - Optional> optionalEntity = getOwner().getMappingContext() - .getPersistentEntity(javaType); + Optional> optionalEntity = getOwner().getMappingContext().getPersistentEntity(javaType) + .map(CassandraPersistentEntity.class::cast); Optional> udtEntity = optionalEntity .filter(CassandraPersistentEntity::isUserDefinedType); @@ -493,7 +494,8 @@ public class BasicCassandraPersistentProperty extends AnnotationBasedPersistentP @Override public CassandraPersistentEntity getCompositePrimaryKeyEntity() { - CassandraMappingContext mappingContext = getOwner().getMappingContext(); + MappingContext, CassandraPersistentProperty> mappingContext = getOwner() + .getMappingContext(); Assert.state(mappingContext != null, "CassandraMappingContext needed"); 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 3016179ff..9dd599e56 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 @@ -1,11 +1,11 @@ /* - * Copyright 2013-2017 the original author or authors + * Copyright 2017 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 + * 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, @@ -15,32 +15,220 @@ */ package org.springframework.data.cassandra.core.mapping; -import java.util.Collection; +import static org.springframework.data.cassandra.core.mapping.CassandraSimpleTypeHolder.*; +import static org.springframework.data.cql.core.CqlIdentifier.*; +import static org.springframework.data.cql.core.keyspace.CreateTableSpecification.*; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.data.cassandra.core.convert.CassandraCustomConversions; +import org.springframework.data.cassandra.core.mapping.UserTypeUtil.FrozenLiteralDataType; +import org.springframework.data.convert.CustomConversions; +import org.springframework.data.cql.core.CqlIdentifier; import org.springframework.data.cql.core.keyspace.CreateTableSpecification; import org.springframework.data.cql.core.keyspace.CreateUserTypeSpecification; +import org.springframework.data.mapping.PersistentEntity; +import org.springframework.data.mapping.PropertyHandler; +import org.springframework.data.mapping.context.AbstractMappingContext; import org.springframework.data.mapping.context.MappingContext; +import org.springframework.data.mapping.model.MappingException; +import org.springframework.data.mapping.model.Property; +import org.springframework.data.mapping.model.SimpleTypeHolder; +import org.springframework.data.util.Optionals; +import org.springframework.data.util.TypeInformation; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; +import org.springframework.util.StringUtils; import com.datastax.driver.core.DataType; import com.datastax.driver.core.TableMetadata; import com.datastax.driver.core.UserType; /** - * A {@link MappingContext} for Cassandra. + * Default implementation of a {@link MappingContext} for Cassandra using {@link CassandraPersistentEntity} and + * {@link CassandraPersistentProperty} as primary abstractions. * + * @author Alex Shvid * @author Matthew T. Adams * @author Mark Paluch + * @author John Blum + * @author Jens Schauder */ -public interface CassandraMappingContext - extends MappingContext, CassandraPersistentProperty> { +public class CassandraMappingContext + extends AbstractMappingContext, CassandraPersistentProperty> + implements ApplicationContextAware { + + private CassandraPersistentEntityMetadataVerifier verifier = new CompositeCassandraPersistentEntityMetadataVerifier(); + + private CustomConversions customConversions; + + private Mapping mapping = new Mapping(); + + private UserTypeResolver userTypeResolver; + + private ApplicationContext context; + + private ClassLoader beanClassLoader; + + // useful caches + private final Map, CassandraPersistentEntity> entitiesByType = new HashMap<>(); + private final Map>> entitySetsByTableName = new HashMap<>(); + + private final Set> primaryKeyEntities = new HashSet<>(); + private final Set> userDefinedTypes = new HashSet<>(); + private final Set> tableEntities = new HashSet<>(); /** - * Returns only those entities that don't represent primary key types. - * - * @see #getPersistentEntities(boolean) + * Create a new {@link CassandraMappingContext}. + */ + public CassandraMappingContext() { + + setCustomConversions(new CassandraCustomConversions(Collections.EMPTY_LIST)); + setSimpleTypeHolder(CassandraSimpleTypeHolder.HOLDER); + } + + /* (non-Javadoc) + * @see org.springframework.data.mapping.context.AbstractMappingContext#initialize() */ @Override - Collection> getPersistentEntities(); + public void initialize() { + super.initialize(); + processMappingOverrides(); + } + + @SuppressWarnings("all") + protected void processMappingOverrides() { + + mapping.getEntityMappings().stream()// + .filter(entityMapping -> entityMapping != null).forEach(entityMapping -> { + String entityClassName = entityMapping.getEntityClassName(); + + try { + Class entityClass = ClassUtils.forName(entityClassName, beanClassLoader); + + CassandraPersistentEntity entity = getRequiredPersistentEntity(entityClass); + + String entityTableName = entityMapping.getTableName(); + + if (StringUtils.hasText(entityTableName)) { + entity.setTableName(cqlId(entityTableName, Boolean.valueOf(entityMapping.getForceQuote()))); + } + + processMappingOverrides(entity, entityMapping); + + } catch (ClassNotFoundException e) { + throw new IllegalStateException(String.format("Unknown persistent entity name [%s]", entityClassName), e); + } + }); + } + + protected void processMappingOverrides(CassandraPersistentEntity entity, EntityMapping entityMapping) { + entityMapping.getPropertyMappings() + .forEach((key, propertyMapping) -> processMappingOverride(entity, propertyMapping)); + } + + protected void processMappingOverride(CassandraPersistentEntity entity, PropertyMapping mapping) { + + CassandraPersistentProperty property = entity.getRequiredPersistentProperty(mapping.getPropertyName()); + + boolean forceQuote = Boolean.valueOf(mapping.getForceQuote()); + + property.setForceQuote(forceQuote); + + if (StringUtils.hasText(mapping.getColumnName())) { + property.setColumnName(cqlId(mapping.getColumnName(), forceQuote)); + } + } + + /* (non-Javadoc) + * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext) + */ + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.context = applicationContext; + } + + public void setBeanClassLoader(ClassLoader beanClassLoader) { + this.beanClassLoader = beanClassLoader; + } + + /** + * Sets the {@link CustomConversions}. + * + * @param customConversions must not be {@literal null}. + * @since 1.5 + */ + public void setCustomConversions(CustomConversions customConversions) { + + Assert.notNull(customConversions, "CustomConversions must not be null"); + + this.customConversions = customConversions; + } + + public void setMapping(Mapping mapping) { + + Assert.notNull(mapping, "Mapping must not be null"); + + this.mapping = mapping; + } + + /** + * Sets the {@link UserTypeResolver}. + * + * @param userTypeResolver must not be {@literal null}. + * @since 1.5 + */ + public void setUserTypeResolver(UserTypeResolver userTypeResolver) { + + Assert.notNull(userTypeResolver, "UserTypeResolver must not be null"); + + this.userTypeResolver = userTypeResolver; + } + + /** + * @param verifier The verifier to set. + */ + public void setVerifier(CassandraPersistentEntityMetadataVerifier verifier) { + this.verifier = verifier; + } + + /** + * @return Returns the verifier. + */ + @SuppressWarnings("unused") + public CassandraPersistentEntityMetadataVerifier getVerifier() { + return verifier; + } + + /** + * Returns only {@link Table} entities. + * + * @since 1.5 + */ + public Collection> getTableEntities() { + return Collections.unmodifiableCollection(tableEntities); + } + + /** + * Returns only those entities representing a user defined type. + * + * @see #getPersistentEntities(boolean) + * @since 1.5 + */ + public Collection> getUserDefinedTypeEntities() { + return Collections.unmodifiableSet(userDefinedTypes); + } /** * Returns all persistent entities or only non-primary-key entities. @@ -49,53 +237,93 @@ public interface CassandraMappingContext * primary key types and user-defined types. If {@literal false}, returns only entities that don't represent * primary key types and no user-defined types. */ - Collection> getPersistentEntities(boolean includePrimaryKeyTypesAndUdts); + public Collection> getPersistentEntities(boolean includePrimaryKeyTypesAndUdts) { - /** - * Returns only those entities not representing primary key types. - * - * @see #getPersistentEntities(boolean) - * @deprecated as of 1.5, use {@link #getTableEntities()}. - */ - @Deprecated - Collection> getNonPrimaryKeyEntities(); + if (includePrimaryKeyTypesAndUdts) { + return super.getPersistentEntities(); + } - /** - * Returns only those entities representing primary key types. - * - * @deprecated as of 1.5 - */ - @Deprecated - Collection> getPrimaryKeyEntities(); + return getTableEntities(); + } - /** - * Returns only {@link Table} entities. - * - * @since 1.5 + /* (non-Javadoc) + * @see org.springframework.data.mapping.context.AbstractMappingContext#addPersistentEntity(org.springframework.data.util.TypeInformation) */ - Collection> getTableEntities(); + @Override + protected Optional> addPersistentEntity(TypeInformation typeInformation) { - /** - * Returns only those entities representing a user defined type. - * - * @see #getPersistentEntities(boolean) - * @since 1.5 - */ - Collection> getUserDefinedTypeEntities(); + // Prevent conversion types created as CassandraPersistentEntity + Optional> optional = shouldCreatePersistentEntityFor(typeInformation) + ? super.addPersistentEntity(typeInformation) : Optional.empty(); - /** - * Returns a {@link CreateTableSpecification} for the given entity, including all mapping information. - * - * @param entity must not be {@literal null}. - */ - CreateTableSpecification getCreateTableSpecificationFor(CassandraPersistentEntity entity); + optional.ifPresent(entity -> { - /** - * Returns a {@link CreateUserTypeSpecification} for the given entity, including all mapping information. - * - * @param entity must not be {@literal null}. + if (entity.isUserDefinedType()) { + userDefinedTypes.add(entity); + } + // now do some caching of the entity + + Set> entities = entitySetsByTableName.computeIfAbsent(entity.getTableName(), + cqlIdentifier -> new HashSet<>()); + + entities.add(entity); + + if (!entity.isUserDefinedType()) { + if (entity.isCompositePrimaryKey()) { + primaryKeyEntities.add(entity); + } + + entity.findAnnotation(Table.class).ifPresent(table -> tableEntities.add(entity)); + } + + entitiesByType.put(entity.getType(), entity); + }); + + return optional; + } + + /* (non-Javadoc) + * @see org.springframework.data.mapping.context.AbstractMappingContext#shouldCreatePersistentEntityFor(org.springframework.data.util.TypeInformation) */ - CreateUserTypeSpecification getCreateUserTypeSpecificationFor(CassandraPersistentEntity entity); + @Override + protected boolean shouldCreatePersistentEntityFor(TypeInformation typeInfo) { + return (!customConversions.hasCustomWriteTarget(typeInfo.getType()) + && super.shouldCreatePersistentEntityFor(typeInfo)); + } + + /* (non-Javadoc) + * @see org.springframework.data.mapping.context.AbstractMappingContext#createPersistentEntity(org.springframework.data.util.TypeInformation) + */ + @Override + protected BasicCassandraPersistentEntity createPersistentEntity(TypeInformation typeInformation) { + + UserDefinedType userDefinedType = AnnotatedElementUtils.findMergedAnnotation(typeInformation.getType(), + UserDefinedType.class); + + BasicCassandraPersistentEntity entity; + + if (userDefinedType != null) { + entity = new CassandraUserTypePersistentEntity<>(typeInformation, this, verifier, userTypeResolver); + + } else { + entity = new BasicCassandraPersistentEntity<>(typeInformation, this, verifier); + } + + if (context != null) { + entity.setApplicationContext(context); + } + + return entity; + } + + /* (non-Javadoc) + * @see org.springframework.data.mapping.context.AbstractMappingContext#createPersistentProperty(java.lang.reflect.Field, java.beans.PropertyDescriptor, org.springframework.data.mapping.model.MutablePersistentEntity, org.springframework.data.mapping.model.SimpleTypeHolder) + */ + @Override + protected CassandraPersistentProperty createPersistentProperty(Property property, + BasicCassandraPersistentEntity owner, SimpleTypeHolder simpleTypeHolder) { + return new BasicCassandraPersistentProperty(property, owner, simpleTypeHolder, userTypeResolver); + } /** * Returns whether this mapping context has any entities mapped to the given table. @@ -103,7 +331,9 @@ public interface CassandraMappingContext * @param table must not be {@literal null}. * @return @return {@literal true} is this {@literal TableMetadata} is used by a mapping. */ - boolean usesTable(TableMetadata table); + public boolean usesTable(TableMetadata table) { + return entitySetsByTableName.containsKey(cqlId(table.getName())); + } /** * Returns whether this mapping context has any entities using the given user type. @@ -112,27 +342,102 @@ public interface CassandraMappingContext * @return {@literal true} is this {@literal UserType} is used. * @since 1.5 */ - boolean usesUserType(UserType userType); + public boolean usesUserType(final UserType userType) { + + CqlIdentifier identifier = CqlIdentifier.cqlId(userType.getTypeName()); + + return (hasMappedUserType(identifier) || hasReferencedUserType(identifier)); + } + + private boolean hasReferencedUserType(final CqlIdentifier identifier) { + + return getPersistentEntities().stream() // + .flatMap(PersistentEntity::getPersistentProperties) // + .map(it -> it.findAnnotation(CassandraType.class)) // + .filter(Optional::isPresent) // + .flatMap(Optionals::toStream) // + .anyMatch(it -> { + return StringUtils.hasText(it.userTypeName()) // + && CqlIdentifier.cqlId(it.userTypeName()).equals(identifier); + }); // + } + + private boolean hasMappedUserType(CqlIdentifier identifier) { + return userDefinedTypes.stream().map(CassandraPersistentEntity::getTableName).anyMatch(identifier::equals); + } /** - * Returns the existing {@link CassandraPersistentEntity} for the given {@link Class}. If it is not yet known to this - * {@link CassandraMappingContext}, an {@link IllegalArgumentException} is thrown. + * Returns a {@link CreateTableSpecification} for the given entity, including all mapping information. * - * @param type The class of the existing persistent entity. - * @return The existing persistent entity. + * @param entity must not be {@literal null}. */ - CassandraPersistentEntity getExistingPersistentEntity(Class type); + public CreateTableSpecification getCreateTableSpecificationFor(CassandraPersistentEntity entity) { + + Assert.notNull(entity, "CassandraPersistentEntity must not be null"); + + final CreateTableSpecification specification = createTable().name(entity.getTableName()); + + entity.getPersistentProperties().filter(CassandraPersistentProperty::isCompositePrimaryKey).forEach(property -> { + + CassandraPersistentEntity primaryKeyEntity = getRequiredPersistentEntity(property.getRawType()); + + primaryKeyEntity.getPersistentProperties().forEach(primaryKeyProperty -> { + + if (primaryKeyProperty.isPartitionKeyColumn()) { + specification.partitionKeyColumn(primaryKeyProperty.getColumnName(), getDataType(primaryKeyProperty)); + } else { // it's a cluster column + specification.clusteredKeyColumn(primaryKeyProperty.getColumnName(), getDataType(primaryKeyProperty), + primaryKeyProperty.getPrimaryKeyOrdering()); + } + + }); + + }); + + entity.getPersistentProperties().filter((property) -> !property.isCompositePrimaryKey()).forEach(property -> { + if (property.isIdProperty() || property.isPartitionKeyColumn()) { + specification.partitionKeyColumn(property.getColumnName(), + UserTypeUtil.potentiallyFreeze(getDataType(property))); + } else if (property.isClusterKeyColumn()) { + specification.clusteredKeyColumn(property.getColumnName(), + UserTypeUtil.potentiallyFreeze(getDataType(property)), property.getPrimaryKeyOrdering()); + } else { + specification.column(property.getColumnName(), UserTypeUtil.potentiallyFreeze(getDataType(property))); + } + }); + + if (specification.getPartitionKeyColumns().isEmpty()) { + throw new MappingException(String.format("No partition key columns found in entity [%s]", entity.getType())); + } + + return specification; + } /** - * Returns whether this {@link CassandraMappingContext} already contains a {@link CassandraPersistentEntity} for the - * given type. + * Returns a {@link CreateUserTypeSpecification} for the given entity, including all mapping information. + * + * @param entity must not be {@literal null}. */ - boolean contains(Class type); + public CreateUserTypeSpecification getCreateUserTypeSpecificationFor(CassandraPersistentEntity entity) { - /** - * Sets a verifier other than the {@link BasicCassandraPersistentEntityMetadataVerifier} - */ - void setVerifier(CassandraPersistentEntityMetadataVerifier verifier); + Assert.notNull(entity, "CassandraPersistentEntity must not be null"); + + final CreateUserTypeSpecification specification = CreateUserTypeSpecification.createType(entity.getTableName()); + + entity.doWithProperties((PropertyHandler) property -> { + + // Use frozen literal to not resolve types from Cassandra. + // At this stage, they might be not created yet. + specification.field(property.getColumnName(), + getDataTypeWithUserTypeFactory(property, DataTypeProvider.FrozenLiteral)); + }); + + if (specification.getFields().isEmpty()) { + throw new MappingException(String.format("No fields in user type [%s]", entity.getType())); + } + + return specification; + } /** * Retrieve the data type of the property. Cassandra {@link DataType types} are determined using simple types and @@ -144,7 +449,76 @@ public interface CassandraMappingContext * @see CassandraSimpleTypeHolder * @since 1.5 */ - DataType getDataType(CassandraPersistentProperty property); + public DataType getDataType(CassandraPersistentProperty property) { + return getDataTypeWithUserTypeFactory(property, DataTypeProvider.EntityUserType); + } + + private DataType getDataTypeWithUserTypeFactory(CassandraPersistentProperty property, + DataTypeProvider dataTypeProvider) { + + if (property.isCompositePrimaryKey()) { + return property.getDataType(); + } + + if (property.findAnnotation(CassandraType.class).isPresent()) { + return property.getDataType(); + } + + Optional> persistentEntity = getPersistentEntity(property.getActualType()); + + if (persistentEntity.filter(CassandraPersistentEntity::isUserDefinedType).isPresent()) { + + Optional dataType = persistentEntity.map(it -> getUserDataType(property, dataTypeProvider, it)); + + if (dataType.isPresent()) { + return dataType.get(); + } + } + + return customConversions.getCustomWriteTarget(property.getType()) // + .map(CassandraSimpleTypeHolder::getDataTypeFor) // + .orElseGet(() -> customConversions.getCustomWriteTarget(property.getActualType()) // + .map(it -> { + + if (property.isCollectionLike()) { + + if (List.class.isAssignableFrom(property.getType())) { + return DataType.list(getDataTypeFor(it)); + } + + if (Set.class.isAssignableFrom(property.getType())) { + return DataType.set(getDataTypeFor(it)); + } + } + + return getDataTypeFor(it); + }).orElseGet(property::getDataType) + + ); + } + + private DataType getUserDataType(CassandraPersistentProperty property, DataTypeProvider dataTypeProvider, + CassandraPersistentEntity persistentEntity) { + + DataType elementType = dataTypeProvider.getDataType(persistentEntity); + + if (property.isCollectionLike()) { + + if (Set.class.isAssignableFrom(property.getType())) { + return DataType.set(elementType); + } + + if (List.class.isAssignableFrom(property.getType())) { + return DataType.list(elementType); + } + } + + if (!property.isCollectionLike() && !property.isMapLike()) { + return elementType; + } + + return null; + } /** * Retrieve the data type based on the given {@code type}. Cassandra {@link DataType types} are determined using @@ -156,6 +530,49 @@ public interface CassandraMappingContext * @see CassandraSimpleTypeHolder * @since 1.5 */ - DataType getDataType(Class type); + public DataType getDataType(Class type) { + return customConversions.getCustomWriteTarget(type) // + .map(CassandraSimpleTypeHolder::getDataTypeFor) // + .orElseGet(() -> getDataTypeFor(type)); + } + + /** + * Returns whether this {@link CassandraMappingContext} already contains a {@link CassandraPersistentEntity} for the + * given type. + */ + public boolean contains(Class type) { + return entitiesByType.containsKey(type); + } + + /** + * @author Jens Schauder + * @since 1.5.1 + */ + enum DataTypeProvider { + + EntityUserType { + + @Override + public DataType getDataType(CassandraPersistentEntity entity) { + return entity.getUserType(); + } + }, + + FrozenLiteral { + + @Override + public DataType getDataType(CassandraPersistentEntity entity) { + return new FrozenLiteralDataType(entity.getTableName()); + } + }; + + /** + * Return the data type for the {@link CassandraPersistentEntity}. + * + * @param entity must not be {@literal null}. + * @return + */ + abstract DataType getDataType(CassandraPersistentEntity entity); + } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentEntity.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentEntity.java index c7deed292..80492cdf5 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentEntity.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentEntity.java @@ -21,7 +21,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.data.cql.core.CqlIdentifier; import org.springframework.data.mapping.PersistentEntity; -import org.springframework.data.mapping.model.MutablePersistentEntity; +import org.springframework.data.mapping.context.MappingContext; import com.datastax.driver.core.UserType; @@ -32,9 +32,8 @@ import com.datastax.driver.core.UserType; * @author Matthew T. Adams * @author Mark Paluch */ -// TODO: Not extend MutablePersistentEntity but rather PersistentEntity. public interface CassandraPersistentEntity - extends MutablePersistentEntity, ApplicationContextAware { + extends PersistentEntity, ApplicationContextAware { /** * Returns whether this entity represents a composite primary key. @@ -78,7 +77,7 @@ public interface CassandraPersistentEntity UserType getUserType(); // TODO: Review if that's required or it can be handled in a different way - CassandraMappingContext getMappingContext(); + MappingContext, CassandraPersistentProperty> getMappingContext(); ApplicationContext getApplicationContext(); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraUserTypePersistentEntity.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraUserTypePersistentEntity.java index 49eb5ee14..032084860 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraUserTypePersistentEntity.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraUserTypePersistentEntity.java @@ -18,6 +18,7 @@ package org.springframework.data.cassandra.core.mapping; import java.util.Optional; import org.springframework.data.cql.core.CqlIdentifier; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.model.MappingException; import org.springframework.data.util.TypeInformation; import org.springframework.util.Assert; @@ -48,7 +49,8 @@ public class CassandraUserTypePersistentEntity extends BasicCassandraPersiste * @param verifier must not be {@literal null}. * @param resolver must not be {@literal null}. */ - public CassandraUserTypePersistentEntity(TypeInformation typeInformation, CassandraMappingContext mappingContext, + public CassandraUserTypePersistentEntity(TypeInformation typeInformation, + MappingContext, CassandraPersistentProperty> mappingContext, CassandraPersistentEntityMetadataVerifier verifier, UserTypeResolver resolver) { super(typeInformation, mappingContext, verifier); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/AbstractCassandraQuery.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/AbstractCassandraQuery.java index 445b74a22..2ff9a7cc3 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/AbstractCassandraQuery.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/AbstractCassandraQuery.java @@ -85,7 +85,7 @@ public abstract class AbstractCassandraQuery implements RepositoryQuery { } /** - * @deprecated as of 1.5, {@link org.springframework.data.cassandra.mapping.CassandraMappingContext} handles type + * @deprecated as of 1.5, {@link org.springframework.data.cassandra.core.mapping.CassandraMappingContext} handles type * conversion. */ @Deprecated @@ -95,7 +95,7 @@ public abstract class AbstractCassandraQuery implements RepositoryQuery { } /** - * @deprecated as of 1.5, {@link org.springframework.data.cassandra.mapping.CassandraMappingContext} handles type + * @deprecated as of 1.5, {@link org.springframework.data.cassandra.core.mapping.CassandraMappingContext} handles type * conversion. */ @Deprecated @@ -174,7 +174,7 @@ public abstract class AbstractCassandraQuery implements RepositoryQuery { * @param declaredReturnType * @param returnedUnwrappedObjectType * @return - * @deprecated as of 1.5, {@link org.springframework.data.cassandra.mapping.CassandraMappingContext} handles type + * @deprecated as of 1.5, {@link org.springframework.data.cassandra.core.mapping.CassandraMappingContext} handles type * conversion. */ @Deprecated @@ -204,7 +204,7 @@ public abstract class AbstractCassandraQuery implements RepositoryQuery { * @param resultSet * @param type * @return - * @deprecated as of 1.5, {@link org.springframework.data.cassandra.mapping.CassandraMappingContext} handles type + * @deprecated as of 1.5, {@link org.springframework.data.cassandra.core.mapping.CassandraMappingContext} handles type * conversion. */ @Deprecated diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryCreator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryCreator.java index 1af6eaa26..6cc475880 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryCreator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryCreator.java @@ -51,7 +51,7 @@ class CassandraQueryCreator extends AbstractQueryCreator mappingContext; private final QueryBuilder queryBuilder = new QueryBuilder(); @@ -64,7 +64,7 @@ class CassandraQueryCreator extends AbstractQueryCreator mappingContext) { super(tree, accessor); @@ -74,13 +74,13 @@ class CassandraQueryCreator extends AbstractQueryCreator getMappingContext() { return this.mappingContext; } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryExecution.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryExecution.java index a289ebfa7..3157cffba 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryExecution.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryExecution.java @@ -20,8 +20,10 @@ import lombok.RequiredArgsConstructor; import org.springframework.core.convert.converter.Converter; import org.springframework.data.cassandra.core.CassandraOperations; -import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.convert.EntityInstantiators; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.repository.query.ResultProcessor; import org.springframework.data.repository.query.ReturnedType; import org.springframework.util.ClassUtils; @@ -144,7 +146,7 @@ interface CassandraQueryExecution { final class ResultProcessingConverter implements Converter { private final @NonNull ResultProcessor processor; - private final @NonNull CassandraMappingContext mappingContext; + private final @NonNull MappingContext, CassandraPersistentProperty> mappingContext; private final @NonNull EntityInstantiators instantiators; /* (non-Javadoc) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethod.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethod.java index 5cd25b9e9..da5e5bc20 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethod.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethod.java @@ -21,9 +21,10 @@ import java.util.Optional; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.dao.InvalidDataAccessApiUsageException; -import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.repository.Query; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.query.QueryMethod; @@ -47,7 +48,7 @@ public class CassandraQueryMethod extends QueryMethod { private final Method method; - private final CassandraMappingContext mappingContext; + private final MappingContext, ? extends CassandraPersistentProperty> mappingContext; private CassandraEntityMetadata entityMetadata; @@ -60,7 +61,7 @@ public class CassandraQueryMethod extends QueryMethod { * @param mappingContext must not be {@literal null}. */ public CassandraQueryMethod(Method method, RepositoryMetadata repositoryMetadata, ProjectionFactory projectionFactory, - CassandraMappingContext mappingContext) { + MappingContext, ? extends CassandraPersistentProperty> mappingContext) { super(method, repositoryMetadata, projectionFactory); @@ -103,7 +104,7 @@ public class CassandraQueryMethod extends QueryMethod { } else { Optional> optionalReturnedEntity = mappingContext - .getPersistentEntity(returnedObjectType); + .getPersistentEntity(returnedObjectType).map(CassandraPersistentEntity.class::cast); CassandraPersistentEntity managedEntity = mappingContext.getRequiredPersistentEntity(domainClass); CassandraPersistentEntity returnedEntity = optionalReturnedEntity.filter(e -> !e.getType().isInterface()) @@ -115,7 +116,6 @@ public class CassandraQueryMethod extends QueryMethod { this.entityMetadata = new SimpleCassandraEntityMetadata<>((Class) returnedEntity.getType(), collectionEntity); - } } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQuery.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQuery.java index a45a24538..0d5d58591 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQuery.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQuery.java @@ -21,7 +21,9 @@ import org.springframework.data.cassandra.core.StatementFactory; import org.springframework.data.cassandra.core.convert.UpdateMapper; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.core.query.Query; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.repository.query.QueryCreationException; import org.springframework.data.repository.query.QueryMethod; import org.springframework.data.repository.query.RepositoryQuery; @@ -37,7 +39,7 @@ import com.datastax.driver.core.Statement; */ public class PartTreeCassandraQuery extends AbstractCassandraQuery { - private final CassandraMappingContext mappingContext; + private final MappingContext, CassandraPersistentProperty> mappingContext; private final PartTree tree; @@ -59,13 +61,13 @@ public class PartTreeCassandraQuery extends AbstractCassandraQuery { } /** - * Returns the {@link CassandraMappingContext} used by this query to access mapping meta-data used to store (map) - * objects to Cassandra tables. + * Returns the {@link MappingContext} used by this query to access mapping meta-data used to store (map) objects to + * Cassandra tables. * - * @return the {@link CassandraMappingContext} used by this query. - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext + * @return the {@link MappingContext} used by this query. + * @see CassandraMappingContext */ - protected CassandraMappingContext getMappingContext() { + protected MappingContext, CassandraPersistentProperty> getMappingContext() { return this.mappingContext; } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryExecution.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryExecution.java index cbb0111d4..fde488025 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryExecution.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryExecution.java @@ -20,8 +20,10 @@ import lombok.RequiredArgsConstructor; import org.springframework.core.convert.converter.Converter; import org.springframework.data.cassandra.core.ReactiveCassandraOperations; -import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.convert.EntityInstantiators; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.repository.query.ResultProcessor; import org.springframework.data.repository.query.ReturnedType; import org.springframework.util.ClassUtils; @@ -109,7 +111,7 @@ interface ReactiveCassandraQueryExecution { final class ResultProcessingConverter implements Converter { private final @NonNull ResultProcessor processor; - private final @NonNull CassandraMappingContext mappingContext; + private final @NonNull MappingContext, CassandraPersistentProperty> mappingContext; private final @NonNull EntityInstantiators instantiators; /* diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java index d4fb4bfc4..f7baae03f 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethod.java @@ -17,8 +17,10 @@ package org.springframework.data.cassandra.repository.query; import java.lang.reflect.Method; -import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.repository.query.CassandraParameters.CassandraParameter; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.repository.core.RepositoryMetadata; import org.springframework.data.repository.util.ReactiveWrapperConverters; @@ -43,7 +45,7 @@ public class ReactiveCassandraQueryMethod extends CassandraQueryMethod { * @param mappingContext must not be {@literal null}. */ public ReactiveCassandraQueryMethod(Method method, RepositoryMetadata metadata, ProjectionFactory projectionFactory, - CassandraMappingContext mappingContext) { + MappingContext, ? extends CassandraPersistentProperty> mappingContext) { super(method, metadata, projectionFactory, mappingContext); diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQuery.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQuery.java index d0f1f75c0..c8f94dbc3 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQuery.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQuery.java @@ -20,7 +20,9 @@ import org.springframework.data.cassandra.core.StatementFactory; import org.springframework.data.cassandra.core.convert.UpdateMapper; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.core.query.Query; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.repository.query.QueryCreationException; import org.springframework.data.repository.query.RepositoryQuery; import org.springframework.data.repository.query.parser.PartTree; @@ -35,7 +37,7 @@ import com.datastax.driver.core.Statement; */ public class ReactivePartTreeCassandraQuery extends AbstractReactiveCassandraQuery { - private final CassandraMappingContext mappingContext; + private final MappingContext, CassandraPersistentProperty> mappingContext; private final PartTree tree; @@ -59,13 +61,13 @@ public class ReactivePartTreeCassandraQuery extends AbstractReactiveCassandraQue } /** - * Returns the {@link CassandraMappingContext} used by this query to access mapping meta-data used to store (map) - * objects to Cassandra tables. + * Returns the {@link MappingContext} used by this query to access mapping meta-data used to store (map) objects to + * Cassandra tables. * - * @return the {@link CassandraMappingContext} used by this query. - * @see org.springframework.data.cassandra.mapping.CassandraMappingContext + * @return the {@link MappingContext} used by this query. + * @see CassandraMappingContext */ - protected CassandraMappingContext getMappingContext() { + protected MappingContext, CassandraPersistentProperty> getMappingContext() { return this.mappingContext; } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java index 99a4de166..7940dcb33 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactory.java @@ -19,13 +19,14 @@ import java.lang.reflect.Method; import java.util.Optional; import org.springframework.data.cassandra.core.CassandraOperations; -import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.repository.CassandraRepository; import org.springframework.data.cassandra.repository.query.CassandraEntityInformation; import org.springframework.data.cassandra.repository.query.CassandraQueryMethod; import org.springframework.data.cassandra.repository.query.PartTreeCassandraQuery; import org.springframework.data.cassandra.repository.query.StringBasedCassandraQuery; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.repository.core.NamedQueries; import org.springframework.data.repository.core.RepositoryInformation; @@ -51,7 +52,7 @@ public class CassandraRepositoryFactory extends RepositoryFactorySupport { private static final SpelExpressionParser EXPRESSION_PARSER = new SpelExpressionParser(); - private final CassandraMappingContext mappingContext; + private final MappingContext, CassandraPersistentProperty> mappingContext; private final CassandraOperations operations; @@ -113,12 +114,12 @@ public class CassandraRepositoryFactory extends RepositoryFactorySupport { private final EvaluationContextProvider evaluationContextProvider; - private final CassandraMappingContext mappingContext; + private final MappingContext, CassandraPersistentProperty> mappingContext; private final CassandraOperations operations; CassandraQueryLookupStrategy(CassandraOperations operations, EvaluationContextProvider evaluationContextProvider, - CassandraMappingContext mappingContext) { + MappingContext, CassandraPersistentProperty> mappingContext) { this.operations = operations; this.evaluationContextProvider = evaluationContextProvider; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactory.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactory.java index 6b784e0cc..ba8fce999 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactory.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactory.java @@ -19,12 +19,13 @@ import java.lang.reflect.Method; import java.util.Optional; import org.springframework.data.cassandra.core.ReactiveCassandraOperations; -import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.repository.query.CassandraEntityInformation; import org.springframework.data.cassandra.repository.query.ReactiveCassandraQueryMethod; import org.springframework.data.cassandra.repository.query.ReactivePartTreeCassandraQuery; import org.springframework.data.cassandra.repository.query.ReactiveStringBasedCassandraQuery; +import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.projection.ProjectionFactory; import org.springframework.data.repository.core.NamedQueries; import org.springframework.data.repository.core.RepositoryInformation; @@ -49,7 +50,7 @@ public class ReactiveCassandraRepositoryFactory extends ReactiveRepositoryFactor private final ReactiveCassandraOperations operations; - private final CassandraMappingContext mappingContext; + private final MappingContext, ? extends CassandraPersistentProperty> mappingContext; /** * Create a new {@link ReactiveCassandraRepositoryFactory} with the given {@link ReactiveCassandraOperations}. @@ -113,10 +114,11 @@ public class ReactiveCassandraRepositoryFactory extends ReactiveRepositoryFactor private final EvaluationContextProvider evaluationContextProvider; private final ReactiveCassandraOperations operations; - private final CassandraMappingContext mappingContext; + private final MappingContext, ? extends CassandraPersistentProperty> mappingContext; CassandraQueryLookupStrategy(ReactiveCassandraOperations operations, - EvaluationContextProvider evaluationContextProvider, CassandraMappingContext mappingContext) { + EvaluationContextProvider evaluationContextProvider, + MappingContext, ? extends CassandraPersistentProperty> mappingContext) { this.evaluationContextProvider = evaluationContextProvider; this.operations = operations; diff --git a/spring-data-cassandra/src/main/resources/org/springframework/data/cassandra/config/spring-cassandra-2.0.xsd b/spring-data-cassandra/src/main/resources/org/springframework/data/cassandra/config/spring-cassandra-2.0.xsd index 35c58eb4a..280a3f0e0 100644 --- a/spring-data-cassandra/src/main/resources/org/springframework/data/cassandra/config/spring-cassandra-2.0.xsd +++ b/spring-data-cassandra/src/main/resources/org/springframework/data/cassandra/config/spring-cassandra-2.0.xsd @@ -766,7 +766,7 @@ Defines a CassandraConverter for getting rich mapping functionality. diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests.java index 8f7754dd1..53cc723a1 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/xml/CassandraNamespaceIntegrationTests.java @@ -22,7 +22,7 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.data.cassandra.core.CassandraTemplate; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.SimpleUserTypeResolver; import org.springframework.data.cassandra.repository.support.AbstractSpringDataEmbeddedCassandraIntegrationTest; import org.springframework.data.cql.core.CqlTemplate; @@ -91,7 +91,7 @@ public class CassandraNamespaceIntegrationTests extends AbstractSpringDataEmbedd @Test // DATACASS-172 public void mappingContextShouldHaveUserTypeResolverConfigured() { - BasicCassandraMappingContext mappingContext = applicationContext.getBean(BasicCassandraMappingContext.class); + CassandraMappingContext mappingContext = applicationContext.getBean(CassandraMappingContext.class); SimpleUserTypeResolver userTypeResolver = (SimpleUserTypeResolver) ReflectionTestUtils.getField(mappingContext, "userTypeResolver"); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraPersistentEntitySchemaCreatorUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraPersistentEntitySchemaCreatorUnitTests.java index ea75813cd..c601d8924 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraPersistentEntitySchemaCreatorUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraPersistentEntitySchemaCreatorUnitTests.java @@ -28,7 +28,7 @@ import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.UserDefinedType; import org.springframework.data.cql.core.CqlOperations; @@ -44,7 +44,7 @@ public class CassandraPersistentEntitySchemaCreatorUnitTests { @Mock CassandraAdminOperations adminOperations; @Mock CqlOperations operations; - BasicCassandraMappingContext context = new BasicCassandraMappingContext(); + CassandraMappingContext context = new CassandraMappingContext(); @Before public void setUp() throws Exception { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraPersistentEntitySchemaDropperUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraPersistentEntitySchemaDropperUnitTests.java index 8fc31dcda..8fb6581fa 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraPersistentEntitySchemaDropperUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/CassandraPersistentEntitySchemaDropperUnitTests.java @@ -29,7 +29,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.annotation.Id; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.Table; import org.springframework.data.cassandra.core.mapping.UserDefinedType; import org.springframework.data.cql.core.CqlIdentifier; @@ -55,7 +55,7 @@ public class CassandraPersistentEntitySchemaDropperUnitTests { @Mock TableMetadata person; @Mock TableMetadata contact; - BasicCassandraMappingContext context = new BasicCassandraMappingContext(); + CassandraMappingContext context = new CassandraMappingContext(); // DATACASS-355 @Before diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/CustomConversionIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/CustomConversionIntegrationTests.java index 1d5a21fed..682245a51 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/CustomConversionIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/CustomConversionIntegrationTests.java @@ -33,7 +33,7 @@ import org.junit.Test; import org.springframework.core.convert.converter.Converter; import org.springframework.data.annotation.Id; import org.springframework.data.cassandra.core.CassandraTemplate; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.Table; import org.springframework.data.cassandra.repository.support.SchemaTestUtils; import org.springframework.data.convert.CustomConversions; @@ -46,7 +46,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; /** * Test suite for applying {@link CustomConversions} to {@link MappingCassandraConverter} and - * {@link BasicCassandraMappingContext}. + * {@link CassandraMappingContext}. * * @author Mark Paluch */ @@ -62,7 +62,7 @@ public class CustomConversionIntegrationTests extends AbstractKeyspaceCreatingIn converters.add(new PersonWriteConverter()); CustomConversions customConversions = new CassandraCustomConversions(converters); - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); mappingContext.setCustomConversions(customConversions); mappingContext.afterPropertiesSet(); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverterUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverterUnitTests.java index e88e39065..812605d3d 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverterUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/MappingCassandraConverterUnitTests.java @@ -52,7 +52,6 @@ import org.mockito.junit.MockitoJUnitRunner; import org.springframework.core.SpringVersion; import org.springframework.core.convert.ConverterNotFoundException; import org.springframework.data.cassandra.RowMockUtil; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraType; import org.springframework.data.cassandra.core.mapping.PrimaryKey; @@ -105,7 +104,7 @@ public class MappingCassandraConverterUnitTests { @Before public void setUp() throws Exception { - mappingContext = new BasicCassandraMappingContext(); + mappingContext = new CassandraMappingContext(); mappingCassandraConverter = new MappingCassandraConverter(mappingContext); mappingCassandraConverter.afterPropertiesSet(); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/QueryMapperUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/QueryMapperUnitTests.java index 3fc9acfab..9221161d3 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/QueryMapperUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/QueryMapperUnitTests.java @@ -33,7 +33,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.annotation.Id; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.Column; import org.springframework.data.cassandra.core.mapping.UserDefinedType; @@ -65,7 +65,7 @@ import com.datastax.driver.core.UserType; @RunWith(MockitoJUnitRunner.class) public class QueryMapperUnitTests { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); CassandraPersistentEntity persistentEntity; MappingCassandraConverter cassandraConverter; QueryMapper queryMapper; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/UpdateMapperUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/UpdateMapperUnitTests.java index 97c7f57ba..2b3d32534 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/UpdateMapperUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/convert/UpdateMapperUnitTests.java @@ -29,7 +29,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.annotation.Id; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.Column; import org.springframework.data.cassandra.core.mapping.UserTypeResolver; @@ -43,7 +43,7 @@ import org.springframework.data.cassandra.core.query.Update; @RunWith(MockitoJUnitRunner.class) public class UpdateMapperUnitTests { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); CassandraPersistentEntity persistentEntity; MappingCassandraConverter cassandraConverter; UpdateMapper updateMapper; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityMetadataVerifierUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityMetadataVerifierUnitTests.java index 8f70dab8e..7aaa48d8e 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityMetadataVerifierUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityMetadataVerifierUnitTests.java @@ -34,7 +34,8 @@ import org.springframework.data.mapping.model.MappingException; public class BasicCassandraPersistentEntityMetadataVerifierUnitTests { private BasicCassandraPersistentEntityMetadataVerifier verifier = new BasicCassandraPersistentEntityMetadataVerifier(); - private BasicCassandraMappingContext context = new BasicCassandraMappingContext(); + + private CassandraMappingContext context = new CassandraMappingContext(); @Before public void setUp() throws Exception { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraCompositePrimaryKeyUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraCompositePrimaryKeyUnitTests.java index 268a2e14f..3d5d36963 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraCompositePrimaryKeyUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraCompositePrimaryKeyUnitTests.java @@ -105,7 +105,7 @@ public class CassandraCompositePrimaryKeyUnitTests { @Before public void setup() { - context = new BasicCassandraMappingContext(); + context = new CassandraMappingContext(); thing = context.getRequiredPersistentEntity(ClassTypeInformation.from(Thing.class)); key = context.getRequiredPersistentEntity(ClassTypeInformation.from(Key.class)); } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraMappingContextUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraMappingContextUnitTests.java similarity index 94% rename from spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraMappingContextUnitTests.java rename to spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraMappingContextUnitTests.java index e88637afd..badcd5452 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraMappingContextUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraMappingContextUnitTests.java @@ -47,18 +47,17 @@ import com.datastax.driver.core.UDTValue; import com.datastax.driver.core.UserType; /** - * Unit tests for {@link BasicCassandraMappingContext}. + * Unit tests for {@link CassandraMappingContext}. * * @author Matthew T. Adams * @author Mark Paluch */ -public class BasicCassandraMappingContextUnitTests { +public class CassandraMappingContextUnitTests { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); @Before public void before() { - mappingContext.setUserTypeResolver(typeName -> null); } @@ -77,10 +76,7 @@ public class BasicCassandraMappingContextUnitTests { mappingContext.getRequiredPersistentEntity(X.class); - assertThat(mappingContext.getExistingPersistentEntity(X.class)).isNotNull(); assertThat(mappingContext.contains(Y.class)).isFalse(); - assertThat(mappingContext.getNonPrimaryKeyEntities()).hasSize(1); - assertThat(mappingContext.getPrimaryKeyEntities()).isEmpty(); assertThat(mappingContext.getUserDefinedTypeEntities()).isEmpty(); assertThat(mappingContext.getTableEntities()).hasSize(1); assertThat(mappingContext.contains(X.class)).isTrue(); @@ -364,9 +360,6 @@ public class BasicCassandraMappingContextUnitTests { assertThat(persistentEntity.isUserDefinedType()).isTrue(); - assertThat(mappingContext.getExistingPersistentEntity(MappedUdt.class)).isNotNull(); - assertThat(mappingContext.getNonPrimaryKeyEntities()).isEmpty(); - assertThat(mappingContext.getPrimaryKeyEntities()).isEmpty(); assertThat(mappingContext.getUserDefinedTypeEntities()).hasSize(1); assertThat(mappingContext.getTableEntities()).hasSize(0); assertThat(mappingContext.contains(MappedUdt.class)).isTrue(); @@ -375,7 +368,8 @@ public class BasicCassandraMappingContextUnitTests { @Test // DATACASS-172 public void getNonPrimaryKeyEntitiesShouldNotContainUdt() { - CassandraPersistentEntity existingPersistentEntity = mappingContext.getRequiredPersistentEntity(MappedUdt.class); + BasicCassandraPersistentEntity existingPersistentEntity = mappingContext + .getRequiredPersistentEntity(MappedUdt.class); assertThat(mappingContext.getTableEntities()).doesNotContain(existingPersistentEntity); } @@ -383,7 +377,8 @@ public class BasicCassandraMappingContextUnitTests { @Test // DATACASS-172, DATACASS-359 public void getPersistentEntitiesShouldContainUdt() { - CassandraPersistentEntity existingPersistentEntity = mappingContext.getRequiredPersistentEntity(MappedUdt.class); + BasicCassandraPersistentEntity existingPersistentEntity = mappingContext + .getRequiredPersistentEntity(MappedUdt.class); assertThat(mappingContext.getPersistentEntities(true)).contains(existingPersistentEntity); assertThat(mappingContext.getUserDefinedTypeEntities()).contains(existingPersistentEntity); @@ -468,8 +463,6 @@ public class BasicCassandraMappingContextUnitTests { assertThat(e).isInstanceOf(VerifierMappingExceptions.class); } - assertThat(mappingContext.getNonPrimaryKeyEntities()).isEmpty(); - assertThat(mappingContext.getPrimaryKeyEntities()).isEmpty(); assertThat(mappingContext.getUserDefinedTypeEntities()).isEmpty(); assertThat(mappingContext.getTableEntities()).isEmpty(); assertThat(mappingContext.contains(InvalidEntityWithIdAndPrimaryKeyColumn.class)).isFalse(); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityOrderPropertiesUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentEntityOrderPropertiesUnitTests.java similarity index 94% rename from spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityOrderPropertiesUnitTests.java rename to spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentEntityOrderPropertiesUnitTests.java index 92ddc01eb..856ce0baf 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityOrderPropertiesUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentEntityOrderPropertiesUnitTests.java @@ -28,15 +28,15 @@ import org.springframework.data.cql.core.PrimaryKeyType; import org.springframework.data.mapping.PropertyHandler; /** - * Unit tests for {@link BasicCassandraMappingContext}. + * Unit tests for {@link CassandraMappingContext}. * * @author David Webb * @author Mark Paluch */ -public class BasicCassandraPersistentEntityOrderPropertiesUnitTests { +public class CassandraPersistentEntityOrderPropertiesUnitTests { private List expected; - private BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + private CassandraMappingContext mappingContext = new CassandraMappingContext(); @Before public void init() {} diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentPropertyComparatorUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentPropertyComparatorUnitTests.java index cb96a3f9c..a8ae2715a 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentPropertyComparatorUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentPropertyComparatorUnitTests.java @@ -176,7 +176,7 @@ public class CassandraPersistentPropertyComparatorUnitTests { @Test // DATACASS-352 public void columnNameComparisonShouldHonorContract() throws Exception { - BasicCassandraMappingContext context = new BasicCassandraMappingContext(); + CassandraMappingContext context = new CassandraMappingContext(); CassandraPersistentEntity persistentEntity = context.getRequiredPersistentEntity(TwoColumns.class); CassandraPersistentProperty annotated = persistentEntity.getRequiredPersistentProperty("annotated"); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CompositeCassandraPersistentEntityMetadataVerifierUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CompositeCassandraPersistentEntityMetadataVerifierUnitTests.java index 46235d0c8..80fc713dd 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CompositeCassandraPersistentEntityMetadataVerifierUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CompositeCassandraPersistentEntityMetadataVerifierUnitTests.java @@ -33,7 +33,7 @@ import org.springframework.data.mapping.model.MappingException; public class CompositeCassandraPersistentEntityMetadataVerifierUnitTests { private CompositeCassandraPersistentEntityMetadataVerifier verifier = new CompositeCassandraPersistentEntityMetadataVerifier(); - private BasicCassandraMappingContext context = new BasicCassandraMappingContext(); + private CassandraMappingContext context = new CassandraMappingContext(); @Before public void setUp() throws Exception { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CreateTableSpecificationBasicCassandraMappingContextUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CreateTableSpecificationBasicCassandraMappingContextUnitTests.java index 6d1bd6c85..9ec0db39d 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CreateTableSpecificationBasicCassandraMappingContextUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CreateTableSpecificationBasicCassandraMappingContextUnitTests.java @@ -48,14 +48,14 @@ import com.datastax.driver.core.UserType; import com.fasterxml.jackson.databind.ObjectMapper; /** - * Unit tests for {@link BasicCassandraMappingContext} targeted on {@link CreateTableSpecification}. + * Unit tests for {@link CassandraMappingContext} targeted on {@link CreateTableSpecification}. * * @author Mark Paluch * @soundtrack Black Rose - Volbeat */ public class CreateTableSpecificationBasicCassandraMappingContextUnitTests { - private BasicCassandraMappingContext ctx = new BasicCassandraMappingContext(); + private CassandraMappingContext ctx = new CassandraMappingContext(); @Before public void setUp() throws Exception { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CreateUserTypeIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CreateUserTypeIntegrationTests.java index 5f1fde217..cef3e230a 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CreateUserTypeIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/CreateUserTypeIntegrationTests.java @@ -42,7 +42,7 @@ import com.datastax.driver.core.Session; import com.datastax.driver.core.UserType; /** - * Integration tests for creation of UDT types through {@link BasicCassandraMappingContext}. + * Integration tests for creation of UDT types through {@link CassandraMappingContext}. * * @author Mark Paluch */ @@ -56,7 +56,7 @@ public class CreateUserTypeIntegrationTests extends AbstractSpringDataEmbeddedCa @Bean public CassandraMappingContext cassandraMapping() throws ClassNotFoundException { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); mappingContext.setInitialEntitySet(new HashSet<>(Arrays.asList(Car.class, Engine.class, Manufacturer.class))); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/ForceQuotedPropertiesSimpleUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/ForceQuotedPropertiesSimpleUnitTests.java index c8bbd7039..7fd3d03c6 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/ForceQuotedPropertiesSimpleUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/ForceQuotedPropertiesSimpleUnitTests.java @@ -27,7 +27,7 @@ import org.springframework.data.cql.core.CqlIdentifier; import org.springframework.data.cql.core.PrimaryKeyType; /** - * Unit tests for {@link BasicCassandraMappingContext}. + * Unit tests for {@link CassandraMappingContext}. * * @author Matthew T. Adams * @author Mark Paluch @@ -39,7 +39,7 @@ public class ForceQuotedPropertiesSimpleUnitTests { public static final String EXPLICIT_KEY_0 = "TheFirstKeyField"; public static final String EXPLICIT_KEY_1 = "TheSecondKeyField"; - CassandraMappingContext context = new BasicCassandraMappingContext(); + CassandraMappingContext context = new CassandraMappingContext(); @Test public void testImplicit() { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/PrimaryKeyClassEntityMetadataVerifierUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/PrimaryKeyClassEntityMetadataVerifierUnitTests.java index c0ab6be62..a61909031 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/PrimaryKeyClassEntityMetadataVerifierUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/PrimaryKeyClassEntityMetadataVerifierUnitTests.java @@ -33,7 +33,7 @@ import org.springframework.data.mapping.model.MappingException; public class PrimaryKeyClassEntityMetadataVerifierUnitTests { private PrimaryKeyClassEntityMetadataVerifier verifier = new PrimaryKeyClassEntityMetadataVerifier(); - private BasicCassandraMappingContext context = new BasicCassandraMappingContext(); + private CassandraMappingContext context = new CassandraMappingContext(); @Before public void setUp() throws Exception { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/multipackagescanning/MultipackageScanningUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/multipackagescanning/MultipackageScanningUnitTests.java index 3a1348757..bcee11dab 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/multipackagescanning/MultipackageScanningUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/multipackagescanning/MultipackageScanningUnitTests.java @@ -23,35 +23,38 @@ import java.util.stream.Collectors; import org.junit.Before; import org.junit.Test; import org.springframework.data.cassandra.config.CassandraEntityClassScanner; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.core.mapping.multipackagescanning.first.First; import org.springframework.data.cassandra.core.mapping.multipackagescanning.second.Second; import org.springframework.data.cassandra.core.mapping.multipackagescanning.third.Third; +import org.springframework.data.mapping.context.MappingContext; /** - * Unit tests for {@link BasicCassandraMappingContext}. + * Unit tests for {@link CassandraMappingContext}. * * @author Matthew T. Adams */ public class MultipackageScanningUnitTests { - BasicCassandraMappingContext mapping; + MappingContext, ? extends CassandraPersistentProperty> context; String pkg = getClass().getPackage().getName(); @Before public void before() throws ClassNotFoundException { - mapping = new BasicCassandraMappingContext(); - mapping.setInitialEntitySet(CassandraEntityClassScanner.scan(pkg + ".first", pkg + ".second")); + CassandraMappingContext context = new CassandraMappingContext(); - mapping.initialize(); + context.setInitialEntitySet(CassandraEntityClassScanner.scan(pkg + ".first", pkg + ".second")); + context.initialize(); + this.context = context; } @Test public void test() { - Collection> entities = mapping.getPersistentEntities(); + Collection> entities = context.getPersistentEntities(); Collection> types = entities.stream().map(CassandraPersistentEntity::getType).collect(Collectors.toSet()); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/CassandraOperationsProducer.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/CassandraOperationsProducer.java index 76afe0aeb..c2b2c22dc 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/CassandraOperationsProducer.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/cdi/CassandraOperationsProducer.java @@ -28,7 +28,7 @@ import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.CassandraPersistentEntitySchemaCreator; import org.springframework.data.cassandra.core.CassandraPersistentEntitySchemaDropper; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.SimpleUserTypeResolver; import org.springframework.data.cassandra.domain.User; @@ -63,7 +63,7 @@ class CassandraOperationsProducer { @ApplicationScoped public CassandraOperations createCassandraOperations(Cluster cluster) throws Exception { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); mappingContext.setUserTypeResolver(new SimpleUserTypeResolver(cluster, KEYSPACE_NAME)); mappingContext.setInitialEntitySet(Collections.singleton(User.class)); mappingContext.afterPropertiesSet(); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/config/ReactiveCassandraRepositoriesRegistrarUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/config/ReactiveCassandraRepositoriesRegistrarUnitTests.java index 085a52614..f2b6499ed 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/config/ReactiveCassandraRepositoriesRegistrarUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/config/ReactiveCassandraRepositoriesRegistrarUnitTests.java @@ -27,7 +27,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.data.cassandra.core.ReactiveCassandraTemplate; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.UserTypeResolver; import org.springframework.data.cassandra.domain.Person; import org.springframework.data.cassandra.repository.ReactiveCassandraRepository; @@ -53,7 +53,7 @@ public class ReactiveCassandraRepositoriesRegistrarUnitTests { @Bean public ReactiveCassandraTemplate reactiveCassandraTemplate() throws Exception { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); mappingContext.setUserTypeResolver(mock(UserTypeResolver.class)); MappingCassandraConverter converter = new MappingCassandraConverter(mappingContext); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/isolated/RepositoryQueryMethodParameterTypesIntegrationTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/isolated/RepositoryQueryMethodParameterTypesIntegrationTests.java index 0aeaf632e..95da8765b 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/isolated/RepositoryQueryMethodParameterTypesIntegrationTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/isolated/RepositoryQueryMethodParameterTypesIntegrationTests.java @@ -37,7 +37,7 @@ import org.springframework.core.convert.converter.Converter; 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.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraType; import org.springframework.data.cassandra.domain.AllPossibleTypes; import org.springframework.data.cassandra.repository.Query; @@ -82,7 +82,7 @@ public class RepositoryQueryMethodParameterTypesIntegrationTests @Autowired AllPossibleTypesRepository allPossibleTypesRepository; @Autowired Session session; - @Autowired BasicCassandraMappingContext mappingContext; + @Autowired CassandraMappingContext mappingContext; @Autowired MappingCassandraConverter converter; @Before diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraParametersParameterAccessorUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraParametersParameterAccessorUnitTests.java index 3b9f5bb04..8489cb2f0 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraParametersParameterAccessorUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraParametersParameterAccessorUnitTests.java @@ -24,7 +24,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraType; import org.springframework.data.cassandra.domain.AllPossibleTypes; @@ -48,7 +47,7 @@ public class CassandraParametersParameterAccessorUnitTests { @Mock ProjectionFactory projectionFactory; RepositoryMetadata metadata = new DefaultRepositoryMetadata(PossibleRepository.class); - CassandraMappingContext context = new BasicCassandraMappingContext(); + CassandraMappingContext context = new CassandraMappingContext(); @Test // DATACASS-296 public void returnsCassandraSimpleType() throws Exception { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraQueryCreatorUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraQueryCreatorUnitTests.java index 9d15d1b9a..764a13cbd 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraQueryCreatorUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraQueryCreatorUnitTests.java @@ -35,7 +35,7 @@ import org.springframework.data.cassandra.core.StatementFactory; import org.springframework.data.cassandra.core.convert.CassandraConverter; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; import org.springframework.data.cassandra.core.convert.UpdateMapper; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.Column; import org.springframework.data.cassandra.core.mapping.PrimaryKey; @@ -58,7 +58,7 @@ import com.datastax.driver.core.RegularStatement; */ public class CassandraQueryCreatorUnitTests { - BasicCassandraMappingContext context; + CassandraMappingContext context; CassandraConverter converter; @Rule public ExpectedException exception = ExpectedException.none(); @@ -66,7 +66,7 @@ public class CassandraQueryCreatorUnitTests { @Before public void setUp() throws SecurityException, NoSuchMethodException { - context = new BasicCassandraMappingContext(); + context = new CassandraMappingContext(); context.setUserTypeResolver(mock(UserTypeResolver.class)); converter = new MappingCassandraConverter(context); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethodUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethodUnitTests.java index 0ee7c90f4..14e6de2bb 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethodUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/CassandraQueryMethodUnitTests.java @@ -22,7 +22,6 @@ import java.util.List; import org.junit.Before; import org.junit.Test; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.domain.User; import org.springframework.data.projection.ProjectionFactory; @@ -41,7 +40,7 @@ public class CassandraQueryMethodUnitTests { @Before public void setUp() { - context = new BasicCassandraMappingContext(); + context = new CassandraMappingContext(); } @Test // DATACASS-7 diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ConvertingParameterAccessorUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ConvertingParameterAccessorUnitTests.java index 7ce6d49bf..515ac016d 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ConvertingParameterAccessorUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ConvertingParameterAccessorUnitTests.java @@ -30,7 +30,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentProperty; import org.springframework.data.cassandra.core.mapping.CassandraType; import org.springframework.data.cassandra.repository.query.ConvertingParameterAccessor.PotentiallyConvertingIterator; @@ -57,7 +57,7 @@ public class ConvertingParameterAccessorUnitTests { @Before public void setUp() { - this.converter = new MappingCassandraConverter(new BasicCassandraMappingContext()); + this.converter = new MappingCassandraConverter(new CassandraMappingContext()); this.converter.afterPropertiesSet(); this.convertingParameterAccessor = new ConvertingParameterAccessor(converter, mockParameterAccessor); } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java index e75af962f..66421f005 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/PartTreeCassandraQueryUnitTests.java @@ -33,7 +33,7 @@ import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.convert.CassandraConverter; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.UserTypeResolver; import org.springframework.data.cassandra.domain.AddressType; import org.springframework.data.cassandra.domain.Group; @@ -65,13 +65,13 @@ public class PartTreeCassandraQueryUnitTests { @Mock UserType userTypeMock; @Mock UDTValue udtValueMock; - BasicCassandraMappingContext mappingContext; + CassandraMappingContext mappingContext; CassandraConverter converter; @Before public void setUp() { - this.mappingContext = new BasicCassandraMappingContext(); + this.mappingContext = new CassandraMappingContext(); this.mappingContext.setUserTypeResolver(userTypeResolverMock); this.converter = new MappingCassandraConverter(mappingContext); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraParameterAccessorUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraParameterAccessorUnitTests.java index 893537110..c7bcf4964 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraParameterAccessorUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraParameterAccessorUnitTests.java @@ -28,7 +28,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.core.convert.support.GenericConversionService; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraType; import org.springframework.data.cassandra.domain.AllPossibleTypes; @@ -55,7 +54,7 @@ public class ReactiveCassandraParameterAccessorUnitTests { @Mock ProjectionFactory projectionFactory; RepositoryMetadata metadata = new DefaultRepositoryMetadata(PossibleRepository.class); - CassandraMappingContext context = new BasicCassandraMappingContext(); + CassandraMappingContext context = new CassandraMappingContext(); @Test // DATACASS-335 public void returnsCassandraSimpleType() throws Exception { diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodUnitTests.java index a1c64dfee..0d0658b1a 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveCassandraQueryMethodUnitTests.java @@ -25,7 +25,6 @@ import java.lang.reflect.Method; import org.junit.Before; import org.junit.Test; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.domain.Person; import org.springframework.data.projection.ProjectionFactory; @@ -44,7 +43,7 @@ public class ReactiveCassandraQueryMethodUnitTests { @Before public void setUp() { - context = new BasicCassandraMappingContext(); + context = new CassandraMappingContext(); } @Test // DATACASS-335 diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java index 9ac9832d1..59f345984 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactivePartTreeCassandraQueryUnitTests.java @@ -33,7 +33,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.cassandra.core.ReactiveCassandraOperations; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.UserTypeResolver; import org.springframework.data.cassandra.domain.Person; import org.springframework.data.cassandra.repository.MapIdCassandraRepository; @@ -55,12 +55,12 @@ public class ReactivePartTreeCassandraQueryUnitTests { @Mock ReactiveCassandraOperations mockCassandraOperations; @Mock UserTypeResolver userTypeResolver; - private BasicCassandraMappingContext mappingContext; + private CassandraMappingContext mappingContext; @Before public void setUp() { - mappingContext = new BasicCassandraMappingContext(); + mappingContext = new CassandraMappingContext(); mappingContext.setUserTypeResolver(userTypeResolver); when(mockCassandraOperations.getConverter()).thenReturn(new MappingCassandraConverter(mappingContext)); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQueryUnitTests.java index be5213a55..58ac508dc 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/ReactiveStringBasedCassandraQueryUnitTests.java @@ -26,7 +26,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.cassandra.core.ReactiveCassandraOperations; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.domain.Person; import org.springframework.data.cassandra.repository.Query; import org.springframework.data.cql.core.ReactiveCqlOperations; @@ -69,7 +69,7 @@ public class ReactiveStringBasedCassandraQueryUnitTests { public void setUp() { this.metadata = AbstractRepositoryMetadata.getMetadata(SampleRepository.class); - this.converter = new MappingCassandraConverter(new BasicCassandraMappingContext()); + this.converter = new MappingCassandraConverter(new CassandraMappingContext()); this.factory = new SpelAwareProxyProjectionFactory(); this.converter.afterPropertiesSet(); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQueryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQueryUnitTests.java index ff85776b7..0ef91e8d6 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQueryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/query/StringBasedCassandraQueryUnitTests.java @@ -34,7 +34,7 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.UserTypeResolver; import org.springframework.data.cassandra.domain.AddressType; import org.springframework.data.cassandra.domain.Person; @@ -81,7 +81,7 @@ public class StringBasedCassandraQueryUnitTests { @SuppressWarnings("unchecked") public void setUp() { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); mappingContext.setUserTypeResolver(userTypeResolver); this.metadata = AbstractRepositoryMetadata.getMetadata(SampleRepository.class); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/AbstractSpringDataEmbeddedCassandraIntegrationTest.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/AbstractSpringDataEmbeddedCassandraIntegrationTest.java index 23295979b..fd88cc949 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/AbstractSpringDataEmbeddedCassandraIntegrationTest.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/AbstractSpringDataEmbeddedCassandraIntegrationTest.java @@ -37,7 +37,8 @@ public abstract class AbstractSpringDataEmbeddedCassandraIntegrationTest */ public void deleteAllEntities() { - Stream> stream = template.getConverter().getMappingContext().getTableEntities() + Stream> stream = template.getConverter().getMappingContext() + .getTableEntities() .stream(); stream.map(CassandraPersistentEntity::getType).filter(type -> !type.isInterface()).forEach(template::truncate); diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactoryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactoryUnitTests.java index 99c1e4063..98e768b99 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactoryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/CassandraRepositoryFactoryUnitTests.java @@ -27,8 +27,8 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.data.cassandra.core.convert.CassandraConverter; +import org.springframework.data.cassandra.core.mapping.BasicCassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; -import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; import org.springframework.data.cassandra.domain.Person; import org.springframework.data.cassandra.repository.query.CassandraEntityInformation; import org.springframework.data.repository.Repository; @@ -46,7 +46,7 @@ public class CassandraRepositoryFactoryUnitTests { @Mock CassandraMappingContext mappingContext; - @Mock CassandraPersistentEntity entity; + @Mock BasicCassandraPersistentEntity entity; @Mock CassandraTemplate template; diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactoryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactoryUnitTests.java index 224b33373..fcf38fcc0 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactoryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/ReactiveCassandraRepositoryFactoryUnitTests.java @@ -27,8 +27,8 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.cassandra.core.ReactiveCassandraTemplate; import org.springframework.data.cassandra.core.convert.CassandraConverter; +import org.springframework.data.cassandra.core.mapping.BasicCassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; -import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; import org.springframework.data.cassandra.domain.Person; import org.springframework.data.cassandra.repository.query.CassandraEntityInformation; import org.springframework.data.repository.Repository; @@ -43,8 +43,11 @@ import org.springframework.data.repository.Repository; public class ReactiveCassandraRepositoryFactoryUnitTests { @Mock CassandraConverter converter; + @Mock CassandraMappingContext mappingContext; - @Mock CassandraPersistentEntity entity; + + @Mock BasicCassandraPersistentEntity entity; + @Mock ReactiveCassandraTemplate template; @Before diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryUnitTests.java index 7fa4967eb..01c4f1cd4 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepositoryUnitTests.java @@ -32,7 +32,7 @@ import org.mockito.junit.MockitoJUnitRunner; import org.springframework.data.annotation.Id; import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; import org.springframework.data.cassandra.core.mapping.UserTypeResolver; import org.springframework.data.cassandra.domain.Person; @@ -51,7 +51,7 @@ import com.datastax.driver.core.querybuilder.Insert; @SuppressWarnings("unchecked") public class SimpleCassandraRepositoryUnitTests { - BasicCassandraMappingContext mappingContext = new BasicCassandraMappingContext(); + CassandraMappingContext mappingContext = new CassandraMappingContext(); MappingCassandraConverter converter = new MappingCassandraConverter(mappingContext); SimpleCassandraRepository repository; diff --git a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/multiple-mapping-contexts.xml b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/multiple-mapping-contexts.xml index 1605f0a0a..f65ed068a 100644 --- a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/multiple-mapping-contexts.xml +++ b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/config/multiple-mapping-contexts.xml @@ -8,6 +8,6 @@ - +