From 7c844df4d6499bd0fedb64dd1fc6c72bc3bd947f Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Mon, 17 Sep 2012 09:53:20 +0200 Subject: [PATCH] DATACMNS-233 - DomainClassConverter is now safe against null and empty Strings. Added explicit check for null or empty String source before attempting conversion. Returning null for both cases. --- .../repository/support/DomainClassConverter.java | 5 +++++ .../support/DomainClassConverterUnitTests.java | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/repository/support/DomainClassConverter.java b/spring-data-commons-core/src/main/java/org/springframework/data/repository/support/DomainClassConverter.java index 0e0e2e623..2029abc2b 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/repository/support/DomainClassConverter.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/repository/support/DomainClassConverter.java @@ -27,6 +27,7 @@ import org.springframework.core.convert.converter.ConditionalGenericConverter; import org.springframework.core.convert.converter.ConverterRegistry; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.core.RepositoryInformation; +import org.springframework.util.StringUtils; /** * {@link org.springframework.core.convert.converter.Converter} to convert arbitrary input into domain classes managed @@ -60,6 +61,10 @@ public class DomainClassConverter repository = repositories.getRepositoryFor(targetType.getType()); diff --git a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java index f5888a803..8ed7a56bd 100644 --- a/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java +++ b/spring-data-commons-core/src/test/java/org/springframework/data/repository/support/DomainClassConverterUnitTests.java @@ -114,6 +114,20 @@ public class DomainClassConverterUnitTests { assertMatches(false); } + /** + * @see DATACMNS-233 + */ + public void returnsNullForNullSource() { + assertThat(converter.convert(null, sourceDescriptor, targetDescriptor), is(nullValue())); + } + + /** + * @see DATACMNS-233 + */ + public void returnsNullForEmptyStringSource() { + assertThat(converter.convert("", sourceDescriptor, targetDescriptor), is(nullValue())); + } + private void assertMatches(boolean matchExpected) { assertThat(converter.matches(sourceDescriptor, targetDescriptor), is(matchExpected));