diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 5b8f79776..eadec1a70 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -36,7 +36,6 @@
org.springframework.data
spring-data-document-core
- 1.0.0.BUILD-SNAPSHOT
org.springframework.data
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 9d429b993..52aba45af 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
@@ -24,6 +24,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.bson.types.ObjectId;
import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
@@ -40,12 +41,9 @@ import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import java.lang.reflect.Array;
-import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.math.BigInteger;
import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
/**
* @author Jon Brisbin
@@ -54,7 +52,6 @@ import java.util.concurrent.ConcurrentMap;
public class MappingMongoConverter implements MongoConverter, ApplicationContextAware {
protected static final Log log = LogFactory.getLog(MappingMongoConverter.class);
- protected static final ConcurrentMap, Map> fieldsByName = new ConcurrentHashMap, Map>();
protected GenericConversionService conversionService = ConversionServiceFactory.createDefaultConversionService();
protected SpelExpressionParser spelExpressionParser = new SpelExpressionParser();
@@ -223,6 +220,13 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext
if (null != applicationContext && autowirePersistentBeans) {
applicationContext.getAutowireCapableBeanFactory().autowireBean(instance);
}
+ if (instance instanceof InitializingBean) {
+ try {
+ ((InitializingBean) instance).afterPropertiesSet();
+ } catch (Exception e) {
+ throw new MappingException(e.getMessage(), e);
+ }
+ }
return instance;
}
@@ -281,7 +285,7 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext
}
if (null != propertyObj) {
if (prop.isComplexType()) {
- writeObjectInternal(prop, propertyObj, dbo);
+ writePropertyInternal(prop, propertyObj, dbo);
} else {
dbo.put(name, propertyObj);
}
@@ -302,7 +306,7 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext
throw new MappingException(e.getMessage(), e);
}
if (null != propertyObj) {
- writeObjectInternal(inverseProp, propertyObj, dbo);
+ writePropertyInternal(inverseProp, propertyObj, dbo);
}
}
});
@@ -323,7 +327,7 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext
}
}
- protected void writeObjectInternal(PersistentProperty> prop, Object obj, DBObject dbo) {
+ protected void writePropertyInternal(PersistentProperty> prop, Object obj, DBObject dbo) {
org.springframework.data.document.mongodb.mapping.DBRef dbref = prop.getField()
.getAnnotation(org.springframework.data.document.mongodb.mapping.DBRef.class);
String name = prop.getName();
@@ -344,6 +348,10 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext
}
}
dbo.put(name, dbList);
+ } else if (null != obj && obj instanceof Map) {
+ BasicDBObject mapDbObj = new BasicDBObject();
+ writeMapInternal((Map