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 DbRefResolver |
dbRefResolver |
protected QueryMapper |
idMapper |
protected static org.slf4j.Logger |
LOGGER |
protected String |
mapKeyDotReplacement |
protected MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> |
mappingContext |
protected SpelExpressionParser |
spelExpressionParser |
protected MongoTypeMapper |
typeMapper |
conversions, conversionService, instantiators| Constructor and Description |
|---|
MappingMongoConverter(DbRefResolver dbRefResolver,
MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext)
|
MappingMongoConverter(MongoDbFactory mongoDbFactory,
MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext)
Deprecated.
use the constructor taking a
DbRefResolver instead. |
| 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,
MongoPersistentProperty property) |
protected com.mongodb.DBObject |
createMap(Map<Object,Object> map,
MongoPersistentProperty property)
Writes the given
Map using the given MongoPersistentProperty information. |
MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> |
getMappingContext() |
MongoTypeMapper |
getTypeMapper()
Returns thw
TypeMapper being used to write type information into DBObjects created with that
converter. |
Object |
getValueInternal(MongoPersistentProperty prop,
com.mongodb.DBObject dbo,
SpELExpressionEvaluator evaluator,
org.springframework.data.mongodb.core.convert.ObjectPath path)
Resolves the value for the given
MongoPersistentProperty within the given DBObject using the given
SpELExpressionEvaluator and ObjectPath. |
com.mongodb.BasicDBList |
maybeConvertList(Iterable<?> source,
TypeInformation<?> typeInformation) |
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 Map<Object,Object> |
readMap(TypeInformation<?> type,
com.mongodb.DBObject dbObject,
org.springframework.data.mongodb.core.convert.ObjectPath path)
|
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. |
com.mongodb.DBRef |
toDBRef(Object object,
MongoPersistentProperty referingProperty)
Creates a
DBRef to refer to the given object. |
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 LOGGER
protected final MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext
protected final SpelExpressionParser spelExpressionParser
protected final QueryMapper idMapper
protected final DbRefResolver dbRefResolver
protected ApplicationContext applicationContext
protected MongoTypeMapper typeMapper
protected String mapKeyDotReplacement
public MappingMongoConverter(DbRefResolver dbRefResolver, MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext)
mongoDbFactory - must not be null.mappingContext - must not be null.@Deprecated public MappingMongoConverter(MongoDbFactory mongoDbFactory, MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext)
DbRefResolver instead.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 MongoTypeMapper getTypeMapper()
MongoConverterTypeMapper being used to write type information into DBObjects created with that
converter.getTypeMapper in interface MongoConverterpublic 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 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)
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 createMap(Map<Object,Object> map, MongoPersistentProperty property)
Map using the given MongoPersistentProperty information.map - must not 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 com.mongodb.DBRef createDBRef(Object target, MongoPersistentProperty property)
public Object getValueInternal(MongoPersistentProperty prop, com.mongodb.DBObject dbo, SpELExpressionEvaluator evaluator, org.springframework.data.mongodb.core.convert.ObjectPath path)
MongoPersistentProperty within the given DBObject using the given
SpELExpressionEvaluator and ObjectPath.protected Map<Object,Object> readMap(TypeInformation<?> type, com.mongodb.DBObject dbObject, org.springframework.data.mongodb.core.convert.ObjectPath path)
type - the Map TypeInformation to be used to unmarshall this DBObject.dbObject - must not be nullpath - must not be nullpublic 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, TypeInformation<?> typeInformation)
Copyright © 2011-2014–2014 Pivotal Software, Inc.. All rights reserved.