From bee1eac360bbd7e7fb6c549e994920b3e9dbe37c Mon Sep 17 00:00:00 2001 From: Mark Pollack Date: Sat, 9 Apr 2011 17:24:32 -0400 Subject: [PATCH] DATADOC-86 - Bug in deserialisation of Entitys with Embedded Collections --- .../document/mongodb/convert/MappingMongoConverter.java | 8 +++++--- .../data/document/mongodb/MongoTemplateTests.java | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java index cb114a4ed..52c361e11 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java @@ -299,8 +299,8 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext } if (null == entity) { - // Must not have explictly added this entity yet - entity = mappingContext.addPersistentEntity(obj.getClass()); + // Must not have explictly added this entity yet + entity = mappingContext.addPersistentEntity(obj.getClass()); if (null == entity) { // We can't map this entity for some reason throw new MappingException("Unable to map entity " + obj); @@ -327,7 +327,7 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext } } } - + // Write the properties entity.doWithProperties(new PropertyHandler() { public void doWithPersistentProperty(PersistentProperty prop) { @@ -419,6 +419,8 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext DBRef dbRef = createDBRef(propObjItem, dbref); dbList.add(dbRef); } else if (type.isArray() && MappingBeanHelper.isSimpleType(type.getComponentType())) { + dbList.add(propObjItem); + } else if (MappingBeanHelper.isSimpleType(propObjItem.getClass())) { dbList.add(propObjItem); } else { BasicDBObject propDbObj = new BasicDBObject(); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/MongoTemplateTests.java index 93352867f..72d1a9c15 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/MongoTemplateTests.java @@ -337,13 +337,13 @@ public class MongoTemplateTests { testAddingToList(this.template); } - //@Test + @Test public void testAddingToListWithMappingConverter() throws Exception { testAddingToList(this.mappingTemplate); } private void testAddingToList(MongoTemplate template) { - PersonWithAList p = new PersonWithAList(); + PersonWithAList p = new PersonWithAList(); p.setFirstName("Sven"); p.setAge(22); template.insert(p);