Migrate off deprecated Spring Data Cassandra API
Configure UserTypeResolver and CodecRegistry on MappingCassandraConverter. Configure on CassandraMappingContext only the simple type holder instead of custom conversions. See gh-20662
This commit is contained in:
committed by
Stephane Nicoll
parent
eb70fd952f
commit
8355d30456
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user