Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3da8a0b

Browse files
committed
DATACASS-594 code review
1 parent 7d1d9e4 commit 3da8a0b

File tree

2 files changed

+28
-14
lines changed

2 files changed

+28
-14
lines changed

‎spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/CassandraSchemaValidator.java renamed to ‎spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/CassandraSchemaValidator.java

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.springframework.data.cassandra.config;
1+
package org.springframework.data.cassandra.core.convert;
22

33
import java.util.Collection;
44
import java.util.LinkedList;
@@ -12,6 +12,7 @@
1212
import org.springframework.data.cassandra.CassandraKeyspaceDoesNotExistsException;
1313
import org.springframework.data.cassandra.CassandraNoActiveKeyspaceSetForCqlSessionException;
1414
import org.springframework.data.cassandra.CassandraSchemaValidationException;
15+
import org.springframework.data.cassandra.config.CassandraSchemaValidationProfile;
1516
import org.springframework.data.cassandra.core.mapping.BasicCassandraPersistentEntity;
1617
import org.springframework.data.cassandra.core.mapping.CassandraMappingContext;
1718
import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity;
@@ -36,20 +37,28 @@ public class CassandraSchemaValidator implements SmartInitializingSingleton {
3637

3738
private static final Log logger = LogFactory.getLog(CassandraSchemaValidator.class);
3839

39-
private final CqlSessionFactoryBeancqlSessionFactoryBean;
40+
private final CqlSessioncqlSession;
4041

4142
private final CassandraMappingContext cassandraMappingContext;
4243

44+
private final ColumnTypeResolver columnTypeResolver;
45+
4346
private final boolean strictValidation;
4447

4548
public CassandraSchemaValidator(
46-
CqlSessionFactoryBeancqlSessionFactoryBean,
47-
CassandraMappingContextcassandraMappingContext,
49+
CqlSessioncqlSession,
50+
CassandraConvertercassandraConverter,
4851
boolean strictValidation
4952
) {
5053
this.strictValidation = strictValidation;
51-
this.cqlSessionFactoryBean = cqlSessionFactoryBean;
52-
this.cassandraMappingContext = cassandraMappingContext;
54+
this.cqlSession = cqlSession;
55+
this.cassandraMappingContext = cassandraConverter.getMappingContext();
56+
this.columnTypeResolver = new DefaultColumnTypeResolver(
57+
cassandraMappingContext,
58+
SchemaFactory.ShallowUserTypeResolver.INSTANCE,
59+
cassandraConverter::getCodecRegistry,
60+
cassandraConverter::getCustomConversions
61+
);
5362
}
5463

5564
/**
@@ -60,13 +69,11 @@ public CassandraSchemaValidator(
6069
*/
6170
@Override
6271
public void afterSingletonsInstantiated() {
63-
CqlSession session = cqlSessionFactoryBean.getSession();
64-
65-
CqlIdentifier activeKeyspace = session
72+
CqlIdentifier activeKeyspace = cqlSession
6673
.getKeyspace()
6774
.orElseThrow(CassandraNoActiveKeyspaceSetForCqlSessionException::new);
6875

69-
KeyspaceMetadata keyspaceMetadata = session
76+
KeyspaceMetadata keyspaceMetadata = cqlSession
7077
.getMetadata()
7178
.getKeyspace(activeKeyspace)
7279
.orElseThrow(() -> new CassandraKeyspaceDoesNotExistsException(activeKeyspace.asInternal()));
@@ -131,6 +138,11 @@ private List<String> validateProperties(TableMetadata tableMetadata, BasicCassan
131138
List<String> validationErrors = new LinkedList<>();
132139

133140
entity.doWithProperties((PropertyHandler<CassandraPersistentProperty>) persistentProperty -> {
141+
142+
if (persistentProperty.isTransient()) {
143+
return;
144+
}
145+
134146
CqlIdentifier expectedColumnName = persistentProperty.getColumnName();
135147

136148
Assert.notNull(expectedColumnName, "Column cannot not be null at this point");
@@ -139,7 +151,7 @@ private List<String> validateProperties(TableMetadata tableMetadata, BasicCassan
139151

140152
if (column.isPresent()) {
141153
ColumnMetadata columnMetadata = column.get();
142-
DataType dataTypeExpected = CassandraSimpleTypeHolder.getDataTypeFor(persistentProperty.getRawType());
154+
DataType dataTypeExpected = columnTypeResolver.resolve(persistentProperty).getDataType();
143155

144156
if (dataTypeExpected == null) {
145157
validationErrors.add(

‎spring-data-cassandra/src/test/java/org/springframework/data/cassandra/config/CassandraSchemaValidatorTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import org.springframework.context.annotation.Configuration;
1414
import org.springframework.data.annotation.Id;
1515
import org.springframework.data.cassandra.CassandraSchemaValidationException;
16+
import org.springframework.data.cassandra.core.convert.CassandraConverter;
17+
import org.springframework.data.cassandra.core.convert.CassandraSchemaValidator;
1618
import org.springframework.data.cassandra.core.mapping.CassandraMappingContext;
1719
import org.springframework.data.cassandra.core.mapping.Column;
1820
import org.springframework.data.cassandra.core.mapping.Table;
@@ -36,12 +38,12 @@ static class Config extends IntegrationTestConfig {
3638
@Bean("cassandraSchemaValidator")
3739
CassandraSchemaValidator cassandraSchemaValidator(
3840
CqlSessionFactoryBean cqlSessionFactoryBean,
39-
CassandraMappingContextcassandraMappingContext,
41+
CassandraConvertercassandraConverter,
4042
@Value("${validation.mode.strict:true}") Boolean validationModeStrict
4143
) {
4244
return new CassandraSchemaValidator(
43-
cqlSessionFactoryBean,
44-
cassandraMappingContext,
45+
cqlSessionFactoryBean.getSession(),
46+
cassandraConverter,
4547
validationModeStrict
4648
);
4749
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /