Browse Source

Adapt to API changes in PropertyValueConverters.

Closes #4040.
pull/4125/head
John Blum 4 years ago
parent
commit
f130616e68
  1. 13
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java
  2. 5
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java
  3. 2
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MongoCustomConversionsUnitTests.java

13
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java

@ -965,9 +965,9 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App
TypeInformation<?> valueType = ClassTypeInformation.from(obj.getClass()); TypeInformation<?> valueType = ClassTypeInformation.from(obj.getClass());
TypeInformation<?> type = prop.getTypeInformation(); TypeInformation<?> type = prop.getTypeInformation();
if (conversions.hasPropertyValueConverter(prop)) { if (conversions.getPropertyValueConversions().hasValueConverter(prop)) {
accessor.put(prop, accessor.put(prop,
conversions.getPropertyValueConverter(prop).write(obj, new MongoConversionContext(prop, this))); conversions.getPropertyValueConversions().getValueConverter(prop).write(obj, new MongoConversionContext(prop, this)));
return; return;
} }
@ -1301,9 +1301,10 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App
private void writeSimpleInternal(@Nullable Object value, Bson bson, MongoPersistentProperty property) { private void writeSimpleInternal(@Nullable Object value, Bson bson, MongoPersistentProperty property) {
DocumentAccessor accessor = new DocumentAccessor(bson); DocumentAccessor accessor = new DocumentAccessor(bson);
if (conversions.hasPropertyValueConverter(property)) { if (conversions.getPropertyValueConversions().hasValueConverter(property)) {
accessor.put(property, accessor.put(property,
conversions.getPropertyValueConverter(property).write(value, new MongoConversionContext(property, this))); conversions.getPropertyValueConversions().getValueConverter(property)
.write(value, new MongoConversionContext(property, this)));
return; return;
} }
@ -1970,8 +1971,8 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App
return null; return null;
} }
if (context.conversions.hasPropertyValueConverter(property)) { if (context.conversions.getPropertyValueConversions().hasValueConverter(property)) {
return (T) context.conversions.getPropertyValueConverter(property).read(value, return (T) context.conversions.getPropertyValueConversions().getValueConverter(property).read(value,
new MongoConversionContext(property, context.sourceConverter)); new MongoConversionContext(property, context.sourceConverter));
} }

5
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/QueryMapper.java

@ -434,8 +434,9 @@ public class QueryMapper {
Object value = applyFieldTargetTypeHintToValue(documentField, sourceValue); Object value = applyFieldTargetTypeHintToValue(documentField, sourceValue);
if(documentField.getProperty() != null && converter.getCustomConversions().hasPropertyValueConverter(documentField.getProperty())) { if(documentField.getProperty() != null && converter.getCustomConversions().getPropertyValueConversions().hasValueConverter(documentField.getProperty())) {
return converter.getCustomConversions().getPropertyValueConverter(documentField.getProperty()).write(value, new MongoConversionContext(documentField.getProperty(), converter)); return converter.getCustomConversions().getPropertyValueConversions().getValueConverter(documentField.getProperty())
.write(value, new MongoConversionContext(documentField.getProperty(), converter));
} }
if (documentField.isIdField() && !documentField.isAssociation()) { if (documentField.isIdField() && !documentField.isAssociation()) {

2
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MongoCustomConversionsUnitTests.java

@ -61,7 +61,7 @@ class MongoCustomConversionsUnitTests {
registry -> registry.registerConverter(Foo.class, "name", mock(PropertyValueConverter.class))); registry -> registry.registerConverter(Foo.class, "name", mock(PropertyValueConverter.class)));
}); });
assertThat(conversions.hasPropertyValueConverter(persistentProperty)).isTrue(); assertThat(conversions.getPropertyValueConversions().hasValueConverter(persistentProperty)).isTrue();
} }
static class DateToZonedDateTimeConverter implements Converter<Date, ZonedDateTime> { static class DateToZonedDateTimeConverter implements Converter<Date, ZonedDateTime> {

Loading…
Cancel
Save