From 4cee676608423bfaabe8456c14c8ba933bd9cf3a Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 19 Feb 2014 18:10:02 +0100 Subject: [PATCH] DATACMNS-444 - DefaultPersistentPropertyPath now skips null converted names. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If a Converter handed into DefaultPersistentPropertyPath.toDotPath(…) returns null or an empty string for a mapped property name, that value is skipped during path construction. --- .../DefaultPersistentPropertyPath.java | 9 +++- ...DefaultPersistenPropertyPathUnitTests.java | 41 +++++++++++++++++-- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/springframework/data/mapping/context/DefaultPersistentPropertyPath.java b/src/main/java/org/springframework/data/mapping/context/DefaultPersistentPropertyPath.java index 0fa6b2348..94239f755 100644 --- a/src/main/java/org/springframework/data/mapping/context/DefaultPersistentPropertyPath.java +++ b/src/main/java/org/springframework/data/mapping/context/DefaultPersistentPropertyPath.java @@ -93,10 +93,15 @@ class DefaultPersistentPropertyPath> implements List result = new ArrayList(); for (T property : properties) { - result.add(converterToUse.convert(property)); + + String convert = converterToUse.convert(property); + + if (StringUtils.hasText(convert)) { + result.add(convert); + } } - return StringUtils.collectionToDelimitedString(result, delimiterToUse); + return result.isEmpty() ? null : StringUtils.collectionToDelimitedString(result, delimiterToUse); } /* diff --git a/src/test/java/org/springframework/data/mapping/context/DefaultPersistenPropertyPathUnitTests.java b/src/test/java/org/springframework/data/mapping/context/DefaultPersistenPropertyPathUnitTests.java index b39006880..66607e171 100644 --- a/src/test/java/org/springframework/data/mapping/context/DefaultPersistenPropertyPathUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/context/DefaultPersistenPropertyPathUnitTests.java @@ -38,11 +38,9 @@ import org.springframework.data.mapping.PersistentProperty; @RunWith(MockitoJUnitRunner.class) public class DefaultPersistenPropertyPathUnitTests> { - @Mock - T first, second; + @Mock T first, second; - @Mock - Converter converter; + @Mock Converter converter; PersistentPropertyPath oneLeg; PersistentPropertyPath twoLegs; @@ -121,4 +119,39 @@ public class DefaultPersistenPropertyPathUnitTests() { + + @Override + public String convert(T source) { + return null; + } + }); + + assertThat(result, is(nullValue())); + } + + /** + * @see DATACMNS-444 + */ + @Test + public void skipsMappedPropertyNameIfConverterReturnsEmptyStrings() { + + String result = twoLegs.toDotPath(new Converter() { + + @Override + public String convert(T source) { + return ""; + } + }); + + assertThat(result, is(nullValue())); + } + }