diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/CustomConversions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/CustomConversions.java index 139a40622..01376f3f8 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/CustomConversions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/CustomConversions.java @@ -104,8 +104,10 @@ public class CustomConversions { } /** - * Returns whether the given type is considered to be simple. + * Returns whether the given type is considered to be simple. That means it's either a general simple type or we have + * a writing {@link Converter} registered for a particular type. * + * @see SimpleTypeHolder#isSimpleType(Class) * @param type * @return */ @@ -176,7 +178,6 @@ public class CustomConversions { if (isMongoBasicType(pair.getSourceType())) { readingPairs.add(pair); - customSimpleTypes.add(pair.getTargetType()); } if (isMongoBasicType(pair.getTargetType())) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/CustomConversionsUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/CustomConversionsUnitTests.java index 7c55017af..c521f05e3 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/CustomConversionsUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/CustomConversionsUnitTests.java @@ -50,7 +50,7 @@ public class CustomConversionsUnitTests { @Test public void considersTypesWeRegisteredConvertersForAsSimple() { - CustomConversions conversions = new CustomConversions( Arrays.asList(UuidToStringConverter.INSTANCE)); + CustomConversions conversions = new CustomConversions(Arrays.asList(UuidToStringConverter.INSTANCE)); assertThat(conversions.isSimpleType(UUID.class), is(true)); } @@ -105,6 +105,15 @@ public class CustomConversionsUnitTests { assertThat(conversionService.canConvert(String.class, UUID.class), is(true)); } + /** + * @see DATADOC-259 + */ + @Test + public void doesNotConsiderTypeSimpleIfOnlyReadConverterIsRegistered() { + CustomConversions conversions = new CustomConversions(Arrays.asList(StringToUUIDConverter.INSTANCE)); + assertThat(conversions.isSimpleType(UUID.class), is(false)); + } + enum UuidToStringConverter implements Converter { INSTANCE;