From 2afb57072945267702d5a4f96639fba3bc0dd148 Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Tue, 16 Jul 2013 12:00:50 +0200 Subject: [PATCH] DATACMNS-345 - Use the actual type of the persistent property. Changed getPersistentEntity(PersistentProperty) to return the actual type of the persistent property in order to deal with collection and map types transparently. Original pull request: #31. --- .../context/AbstractMappingContext.java | 8 ++----- .../AbstractMappingContextUnitTests.java | 23 ++++++++++++++++--- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java index 6c072635c..c39bf4dcc 100644 --- a/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -178,12 +178,8 @@ public abstract class AbstractMappingContext typeInfo = persistentProperty.getTypeInformation(); + return getPersistentEntity(typeInfo.getActualType()); } /* diff --git a/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java b/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java index 8df1ba693..d783f8845 100644 --- a/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java +++ b/src/test/java/org/springframework/data/mapping/context/AbstractMappingContextUnitTests.java @@ -21,6 +21,7 @@ import static org.mockito.Mockito.*; import groovy.lang.MetaClass; import java.util.Collections; +import java.util.List; import org.junit.Before; import org.junit.Test; @@ -144,7 +145,7 @@ public class AbstractMappingContextUnitTests { } /** - * @see DATACMNS-??? + * @see DATACMNS-332 */ @Test public void usesMostConcreteProperty() { @@ -154,6 +155,22 @@ public class AbstractMappingContextUnitTests { assertThat(entity.getPersistentProperty("foo").isIdProperty(), is(true)); } + /** + * @see DATACMNS-345 + */ + @Test + @SuppressWarnings("rawtypes") + public void returnsEntityForComponentType() { + + SampleMappingContext mappingContext = new SampleMappingContext(); + PersistentEntity entity = mappingContext.getPersistentEntity(Sample.class); + SamplePersistentProperty property = entity.getPersistentProperty("persons"); + PersistentEntity propertyEntity = mappingContext.getPersistentEntity(property); + + assertThat(propertyEntity, is(notNullValue())); + assertThat(propertyEntity.getType(), is(equalTo((Class) Person.class))); + } + class Person { String name; } @@ -165,6 +182,7 @@ public class AbstractMappingContextUnitTests { class Sample { MetaClass metaClass; + List persons; } static class Base { @@ -172,7 +190,6 @@ public class AbstractMappingContextUnitTests { } static class Extension extends Base { - @Id - String foo; + @Id String foo; } }