public class MappingMongoConverter extends AbstractMongoConverter implements ApplicationContextAware
MongoConverter that uses a MappingContext to do sophisticated mapping of domain objects to
DBObject.| Modifier and Type | Field and Description |
|---|---|
protected ApplicationContext |
applicationContext |
protected QueryMapper |
idMapper |
protected static org.slf4j.Logger |
log |
protected String |
mapKeyDotReplacement |
protected MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> |
mappingContext |
protected MongoDbFactory |
mongoDbFactory |
protected SpelExpressionParser |
spelExpressionParser |
protected MongoTypeMapper |
typeMapper |
protected boolean |
useFieldAccessOnly |
conversions, conversionService, instantiators| Constructor and Description |
|---|
MappingMongoConverter(MongoDbFactory mongoDbFactory,
MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext)
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
addCustomTypeKeyIfNecessary(TypeInformation<?> type,
Object value,
com.mongodb.DBObject dbObject)
Adds custom type information to the given
DBObject if necessary. |
Object |
convertToMongoType(Object obj,
TypeInformation<?> typeInformation)
Converts the given object into one Mongo will be able to store natively but retains the type information in case
the given
TypeInformation differs from the given object type. |
protected com.mongodb.DBObject |
createCollection(Collection<?> collection,
MongoPersistentProperty property)
Writes the given
Collection using the given MongoPersistentProperty information. |
protected com.mongodb.DBRef |
createDBRef(Object target,
DBRef dbref) |
MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> |
getMappingContext() |
protected Object |
getValueInternal(MongoPersistentProperty prop,
com.mongodb.DBObject dbo,
SpELExpressionEvaluator eval,
Object parent) |
com.mongodb.BasicDBList |
maybeConvertList(Iterable<?> source) |
protected String |
potentiallyEscapeMapKey(String source)
Potentially replaces dots in the given map key with the configured map key replacement if configured or aborts
conversion if none is configured.
|
protected String |
potentiallyUnescapeMapKey(String source)
Translates the map key replacements in the given key just read with a dot in case a map key replacement has been
configured.
|
<S> S |
read(Class<S> clazz,
com.mongodb.DBObject dbo) |
protected <S> S |
read(TypeInformation<S> type,
com.mongodb.DBObject dbo) |
protected <S> S |
read(TypeInformation<S> type,
com.mongodb.DBObject dbo,
Object parent) |
protected Map<Object,Object> |
readMap(TypeInformation<?> type,
com.mongodb.DBObject dbObject,
Object parent)
|
void |
setApplicationContext(ApplicationContext applicationContext) |
void |
setMapKeyDotReplacement(String mapKeyDotReplacement)
Configure the characters dots potentially contained in a
Map shall be replaced with. |
void |
setTypeMapper(MongoTypeMapper typeMapper)
Configures the
MongoTypeMapper to be used to add type information to DBObjects created by the
converter and how to lookup type information from DBObjects when reading them. |
void |
setUseFieldAccessOnly(boolean useFieldAccessOnly)
Configures whether to use field access only for entity mapping.
|
com.mongodb.DBRef |
toDBRef(Object object,
MongoPersistentProperty referingProperty)
Creates a
DBRef to refer to the given object. |
protected <T> List<?> |
unwrapList(com.mongodb.BasicDBList dbList,
TypeInformation<T> targetType) |
void |
write(Object obj,
com.mongodb.DBObject dbo)
Root entry method into write conversion.
|
protected void |
writeInternal(Object obj,
com.mongodb.DBObject dbo,
MongoPersistentEntity<?> entity) |
protected void |
writeInternal(Object obj,
com.mongodb.DBObject dbo,
TypeInformation<?> typeHint)
Internal write conversion method which should be used for nested invocations.
|
protected com.mongodb.DBObject |
writeMapInternal(Map<Object,Object> obj,
com.mongodb.DBObject dbo,
TypeInformation<?> propertyType)
|
protected void |
writePropertyInternal(Object obj,
com.mongodb.DBObject dbo,
MongoPersistentProperty prop) |
afterPropertiesSet, convertToMongoType, getConversionService, setCustomConversions, setInstantiatorsprotected static final org.slf4j.Logger log
protected final MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext
protected final SpelExpressionParser spelExpressionParser
protected final MongoDbFactory mongoDbFactory
protected final QueryMapper idMapper
protected ApplicationContext applicationContext
protected boolean useFieldAccessOnly
protected MongoTypeMapper typeMapper
protected String mapKeyDotReplacement
public MappingMongoConverter(MongoDbFactory mongoDbFactory, MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext)
mongoDbFactory - must not be null.mappingContext - must not be null.public void setTypeMapper(MongoTypeMapper typeMapper)
MongoTypeMapper to be used to add type information to DBObjects created by the
converter and how to lookup type information from DBObjects when reading them. Uses a
DefaultMongoTypeMapper by default. Setting this to null will reset the TypeMapper to the
default one.typeMapper - the typeMapper to setpublic void setMapKeyDotReplacement(String mapKeyDotReplacement)
Map shall be replaced with. By default we don't do
any translation but rather reject a Map with keys containing dots causing the conversion for the entire
object to fail. If further customization of the translation is needed, have a look at
potentiallyEscapeMapKey(String) as well as potentiallyUnescapeMapKey(String).mapKeyDotReplacement - the mapKeyDotReplacement to setpublic MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> getMappingContext()
getMappingContext in interface EntityConverter<MongoPersistentEntity<?>,MongoPersistentProperty,Object,com.mongodb.DBObject>public void setUseFieldAccessOnly(boolean useFieldAccessOnly)
MongoConverter to not go through getters or setters even if they are present for getting and setting
property values.useFieldAccessOnly - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
setApplicationContext in interface ApplicationContextAwareBeansExceptionpublic <S> S read(Class<S> clazz, com.mongodb.DBObject dbo)
read in interface EntityReader<Object,com.mongodb.DBObject>protected <S> S read(TypeInformation<S> type, com.mongodb.DBObject dbo)
protected <S> S read(TypeInformation<S> type, com.mongodb.DBObject dbo, Object parent)
public com.mongodb.DBRef toDBRef(Object object, MongoPersistentProperty referingProperty)
MongoWriterDBRef to refer to the given object.toDBRef in interface MongoWriter<Object>object - the object to create a DBRef to link to. The object's type has to carry an id attribute.referingProperty - the client-side property referring to the object which might carry additional metadata for
the DBRef object to create. Can be null.public void write(Object obj, com.mongodb.DBObject dbo)
DBObject. Shouldn't be called for
nested conversions.write in interface EntityWriter<Object,com.mongodb.DBObject>org.springframework.data.mongodb.core.core.convert.MongoWriter#write(java.lang.Object, com.mongodb.DBObject)protected void writeInternal(Object obj, com.mongodb.DBObject dbo, TypeInformation<?> typeHint)
obj - dbo - protected void writeInternal(Object obj, com.mongodb.DBObject dbo, MongoPersistentEntity<?> entity)
protected void writePropertyInternal(Object obj, com.mongodb.DBObject dbo, MongoPersistentProperty prop)
protected com.mongodb.DBObject createCollection(Collection<?> collection, MongoPersistentProperty property)
Collection using the given MongoPersistentProperty information.collection - must not be null.property - must not be null.protected com.mongodb.DBObject writeMapInternal(Map<Object,Object> obj, com.mongodb.DBObject dbo, TypeInformation<?> propertyType)
obj - must not be null.dbo - must not be null.propertyType - must not be null.protected String potentiallyEscapeMapKey(String source)
source - setMapKeyDotReplacement(String)protected String potentiallyUnescapeMapKey(String source)
source - protected void addCustomTypeKeyIfNecessary(TypeInformation<?> type, Object value, com.mongodb.DBObject dbObject)
DBObject if necessary. That is if the value is not the same as
the one given. This is usually the case if you store a subtype of the actual declared type of the property.type - value - must not be null.dbObject - must not be null.protected Object getValueInternal(MongoPersistentProperty prop, com.mongodb.DBObject dbo, SpELExpressionEvaluator eval, Object parent)
protected Map<Object,Object> readMap(TypeInformation<?> type, com.mongodb.DBObject dbObject, Object parent)
type - the Map TypeInformation to be used to unmarshall this DBObject.dbObject - protected <T> List<?> unwrapList(com.mongodb.BasicDBList dbList, TypeInformation<T> targetType)
public Object convertToMongoType(Object obj, TypeInformation<?> typeInformation)
MongoWriterTypeInformation differs from the given object type.convertToMongoType in interface MongoWriter<Object>obj - can be null.typeInformation - can be null.public com.mongodb.BasicDBList maybeConvertList(Iterable<?> source)
Copyright © 2011-2013-2013 SpringSource. All Rights Reserved.