diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java index 557a58d1dc..80d1a4da57 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java @@ -80,8 +80,7 @@ public class CassandraDataAutoConfiguration { if (!packages.isEmpty()) { context.setInitialEntitySet(CassandraEntityClassScanner.scan(packages)); } - context.setUserTypeResolver(new SimpleUserTypeResolver(this.session)); - context.setCustomConversions(conversions); + context.setSimpleTypeHolder(conversions.getSimpleTypeHolder()); return context; } @@ -90,7 +89,9 @@ public class CassandraDataAutoConfiguration { public CassandraConverter cassandraConverter(CassandraMappingContext mapping, CassandraCustomConversions conversions) { MappingCassandraConverter converter = new MappingCassandraConverter(mapping); + converter.setCodecRegistry(this.session.getContext().getCodecRegistry()); converter.setCustomConversions(conversions); + converter.setUserTypeResolver(new SimpleUserTypeResolver(this.session)); return converter; } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java index 6b7ab3d312..c5f7aab67f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java @@ -20,8 +20,11 @@ import java.util.Collections; import java.util.Set; import com.datastax.oss.driver.api.core.CqlSession; +import com.datastax.oss.driver.api.core.context.DriverContext; +import com.datastax.oss.driver.api.core.type.codec.registry.CodecRegistry; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; +import org.mockito.BDDMockito; import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; import org.springframework.boot.autoconfigure.data.cassandra.city.City; @@ -32,6 +35,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; import org.springframework.data.cassandra.core.CassandraTemplate; +import org.springframework.data.cassandra.core.convert.CassandraConverter; import org.springframework.data.cassandra.core.convert.CassandraCustomConversions; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.SimpleUserTypeResolver; @@ -39,6 +43,7 @@ import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.ObjectUtils; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.when; import static org.mockito.Mockito.mock; /** @@ -78,8 +83,15 @@ class CassandraDataAutoConfigurationTests { @Test void userTypeResolverShouldBeSet() { load(); - CassandraMappingContext mappingContext = this.context.getBean(CassandraMappingContext.class); - assertThat(mappingContext).extracting("userTypeResolver").isInstanceOf(SimpleUserTypeResolver.class); + CassandraConverter cassandraConverter = this.context.getBean(CassandraConverter.class); + assertThat(cassandraConverter).extracting("userTypeResolver").isInstanceOf(SimpleUserTypeResolver.class); + } + + @Test + void codecRegistryShouldBeSet() { + load(); + CassandraConverter cassandraConverter = this.context.getBean(CassandraConverter.class); + assertThat(BDDMockito.mockingDetails(cassandraConverter.getCodecRegistry()).isMock()).isTrue(); } @Test @@ -94,7 +106,6 @@ class CassandraDataAutoConfigurationTests { load(CustomConversionConfig.class); CassandraTemplate template = this.context.getBean(CassandraTemplate.class); assertThat(template.getConverter().getConversionService().canConvert(Person.class, String.class)).isTrue(); - } @Test @@ -119,7 +130,12 @@ class CassandraDataAutoConfigurationTests { @Bean CqlSession cqlSession() { - return mock(CqlSession.class); + CodecRegistry codecRegistry = mock(CodecRegistry.class); + DriverContext context = mock(DriverContext.class); + CqlSession cqlSession = mock(CqlSession.class); + when(context.getCodecRegistry()).thenReturn(codecRegistry); + when(cqlSession.getContext()).thenReturn(context); + return cqlSession; } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraReactiveDataAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraReactiveDataAutoConfigurationTests.java index aa19296d22..c6a854e4fa 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraReactiveDataAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraReactiveDataAutoConfigurationTests.java @@ -19,6 +19,8 @@ package org.springframework.boot.autoconfigure.data.cassandra; import java.util.Set; import com.datastax.oss.driver.api.core.CqlSession; +import com.datastax.oss.driver.api.core.context.DriverContext; +import com.datastax.oss.driver.api.core.type.codec.registry.CodecRegistry; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; @@ -30,11 +32,13 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.cassandra.core.ReactiveCassandraTemplate; +import org.springframework.data.cassandra.core.convert.CassandraConverter; import org.springframework.data.cassandra.core.mapping.CassandraMappingContext; import org.springframework.data.cassandra.core.mapping.SimpleUserTypeResolver; import org.springframework.test.util.ReflectionTestUtils; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.when; import static org.mockito.Mockito.mock; /** @@ -74,8 +78,8 @@ class CassandraReactiveDataAutoConfigurationTests { @Test void userTypeResolverShouldBeSet() { load("spring.data.cassandra.keyspaceName:boot_test"); - CassandraMappingContext mappingContext = this.context.getBean(CassandraMappingContext.class); - assertThat(mappingContext).extracting("userTypeResolver").isInstanceOf(SimpleUserTypeResolver.class); + CassandraConverter cassandraConverter = this.context.getBean(CassandraConverter.class); + assertThat(cassandraConverter).extracting("userTypeResolver").isInstanceOf(SimpleUserTypeResolver.class); } private void load(String... environment) { @@ -99,7 +103,12 @@ class CassandraReactiveDataAutoConfigurationTests { @Bean CqlSession cqlSession() { - return mock(CqlSession.class); + CodecRegistry codecRegistry = mock(CodecRegistry.class); + DriverContext context = mock(DriverContext.class); + CqlSession cqlSession = mock(CqlSession.class); + when(context.getCodecRegistry()).thenReturn(codecRegistry); + when(cqlSession.getContext()).thenReturn(context); + return cqlSession; } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraReactiveRepositoriesAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraReactiveRepositoriesAutoConfigurationTests.java index 51ddff301e..85ddb3f5a0 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraReactiveRepositoriesAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraReactiveRepositoriesAutoConfigurationTests.java @@ -20,6 +20,8 @@ import java.util.Set; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.CqlSessionBuilder; +import com.datastax.oss.driver.api.core.context.DriverContext; +import com.datastax.oss.driver.api.core.type.codec.registry.CodecRegistry; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -40,6 +42,7 @@ import org.springframework.data.cassandra.repository.config.EnableReactiveCassan import org.springframework.test.util.ReflectionTestUtils; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.when; import static org.mockito.Mockito.mock; /** @@ -107,7 +110,12 @@ class CassandraReactiveRepositoriesAutoConfigurationTests { @Bean CqlSession cqlSession() { - return mock(CqlSession.class); + CodecRegistry codecRegistry = mock(CodecRegistry.class); + DriverContext context = mock(DriverContext.class); + CqlSession cqlSession = mock(CqlSession.class); + when(context.getCodecRegistry()).thenReturn(codecRegistry); + when(cqlSession.getContext()).thenReturn(context); + return cqlSession; } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraRepositoriesAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraRepositoriesAutoConfigurationTests.java index 4f6aa0f5de..b014b665d5 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraRepositoriesAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraRepositoriesAutoConfigurationTests.java @@ -20,6 +20,8 @@ import java.util.Set; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.CqlSessionBuilder; +import com.datastax.oss.driver.api.core.context.DriverContext; +import com.datastax.oss.driver.api.core.type.codec.registry.CodecRegistry; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -40,6 +42,7 @@ import org.springframework.data.cassandra.repository.config.EnableCassandraRepos import org.springframework.test.util.ReflectionTestUtils; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.when; import static org.mockito.Mockito.mock; /** @@ -105,7 +108,12 @@ class CassandraRepositoriesAutoConfigurationTests { @Bean CqlSession cqlSession() { - return mock(CqlSession.class); + CodecRegistry codecRegistry = mock(CodecRegistry.class); + DriverContext context = mock(DriverContext.class); + CqlSession cqlSession = mock(CqlSession.class); + when(context.getCodecRegistry()).thenReturn(codecRegistry); + when(cqlSession.getContext()).thenReturn(context); + return cqlSession; } }