Skip to content

Commit 49454a8

Browse files
committed
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.
1 parent 16d2db6 commit 49454a8

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ public CassandraMappingContext cassandraMapping(BeanFactory beanFactory, Cassand
8080
if (!packages.isEmpty()) {
8181
context.setInitialEntitySet(CassandraEntityClassScanner.scan(packages));
8282
}
83-
context.setUserTypeResolver(new SimpleUserTypeResolver(this.session));
84-
context.setCustomConversions(conversions);
83+
context.setSimpleTypeHolder(conversions.getSimpleTypeHolder());
8584
return context;
8685
}
8786

@@ -90,7 +89,9 @@ public CassandraMappingContext cassandraMapping(BeanFactory beanFactory, Cassand
9089
public CassandraConverter cassandraConverter(CassandraMappingContext mapping,
9190
CassandraCustomConversions conversions) {
9291
MappingCassandraConverter converter = new MappingCassandraConverter(mapping);
92+
converter.setCodecRegistry(this.session.getContext().getCodecRegistry());
9393
converter.setCustomConversions(conversions);
94+
converter.setUserTypeResolver(new SimpleUserTypeResolver(this.session));
9495
return converter;
9596
}
9697

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationTests.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
import java.util.Set;
2121

2222
import com.datastax.oss.driver.api.core.CqlSession;
23+
import com.datastax.oss.driver.api.core.context.DriverContext;
24+
import com.datastax.oss.driver.api.core.type.codec.registry.CodecRegistry;
2325
import org.junit.jupiter.api.AfterEach;
2426
import org.junit.jupiter.api.Test;
27+
import org.mockito.BDDMockito;
2528

2629
import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration;
2730
import org.springframework.boot.autoconfigure.data.cassandra.city.City;
@@ -32,6 +35,7 @@
3235
import org.springframework.context.annotation.Configuration;
3336
import org.springframework.core.convert.converter.Converter;
3437
import org.springframework.data.cassandra.core.CassandraTemplate;
38+
import org.springframework.data.cassandra.core.convert.CassandraConverter;
3539
import org.springframework.data.cassandra.core.convert.CassandraCustomConversions;
3640
import org.springframework.data.cassandra.core.mapping.CassandraMappingContext;
3741
import org.springframework.data.cassandra.core.mapping.SimpleUserTypeResolver;
@@ -40,6 +44,7 @@
4044

4145
import static org.assertj.core.api.Assertions.assertThat;
4246
import static org.mockito.Mockito.mock;
47+
import static org.mockito.Mockito.when;
4348

4449
/**
4550
* Tests for {@link CassandraDataAutoConfiguration}.
@@ -78,8 +83,15 @@ void entityScanShouldSetInitialEntitySet() {
7883
@Test
7984
void userTypeResolverShouldBeSet() {
8085
load();
81-
CassandraMappingContext mappingContext = this.context.getBean(CassandraMappingContext.class);
82-
assertThat(mappingContext).extracting("userTypeResolver").isInstanceOf(SimpleUserTypeResolver.class);
86+
CassandraConverter cassandraConverter = this.context.getBean(CassandraConverter.class);
87+
assertThat(cassandraConverter).extracting("userTypeResolver").isInstanceOf(SimpleUserTypeResolver.class);
88+
}
89+
90+
@Test
91+
void codecRegistryShouldBeSet() {
92+
load();
93+
CassandraConverter cassandraConverter = this.context.getBean(CassandraConverter.class);
94+
assertThat(BDDMockito.mockingDetails(cassandraConverter.getCodecRegistry()).isMock()).isTrue();
8395
}
8496

8597
@Test
@@ -94,7 +106,6 @@ void customConversions() {
94106
load(CustomConversionConfig.class);
95107
CassandraTemplate template = this.context.getBean(CassandraTemplate.class);
96108
assertThat(template.getConverter().getConversionService().canConvert(Person.class, String.class)).isTrue();
97-
98109
}
99110

100111
@Test
@@ -119,7 +130,12 @@ static class TestConfiguration {
119130

120131
@Bean
121132
CqlSession cqlSession() {
122-
return mock(CqlSession.class);
133+
CodecRegistry codecRegistry = mock(CodecRegistry.class);
134+
DriverContext context = mock(DriverContext.class);
135+
CqlSession cqlSession = mock(CqlSession.class);
136+
when(context.getCodecRegistry()).thenReturn(codecRegistry);
137+
when(cqlSession.getContext()).thenReturn(context);
138+
return cqlSession;
123139
}
124140

125141
}

0 commit comments

Comments
 (0)