public class QueryMapper extends Object
Modifier and Type | Class and Description |
---|---|
protected static class |
QueryMapper.AssociationConverter
Converter to skip all properties after an association property was rendered.
|
protected static class |
QueryMapper.Field
Value object to represent a field and its meta-information.
|
protected static class |
QueryMapper.MetadataBackedField
Extension of
QueryMapper.Field to be backed with mapping metadata. |
Constructor and Description |
---|
QueryMapper(MongoConverter converter)
Creates a new
QueryMapper with the given MongoConverter . |
Modifier and Type | Method and Description |
---|---|
protected Object |
convertAssociation(Object source,
MongoPersistentProperty property)
Converts the given source assuming it's actually an association to another object.
|
protected Object |
convertAssociation(Object source,
QueryMapper.Field field) |
Object |
convertId(Object id)
Converts the given raw id value into either
ObjectId or String . |
Object |
convertId(Object id,
Class<?> targetType)
Converts the given raw id value into either
ObjectId or targetType . |
protected Object |
convertSimpleOrDocument(Object source,
MongoPersistentEntity<?> entity)
Retriggers mapping if the given source is a
Document or simply invokes the |
protected Map.Entry<String,Object> |
createMapEntry(QueryMapper.Field field,
Object value)
Creates a new
Map.Entry for the given QueryMapper.Field with the given value. |
protected QueryMapper.Field |
createPropertyField(MongoPersistentEntity<?> entity,
String key,
MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext) |
protected Object |
delegateConvertToMongoType(Object source,
MongoPersistentEntity<?> entity)
Converts the given source Object to a mongo type with the type information of the original source type omitted.
|
org.bson.Document |
getMappedFields(org.bson.Document fieldsObject,
MongoPersistentEntity<?> entity)
Maps fields to retrieve to the
MongoPersistentEntity s properties. |
protected org.bson.Document |
getMappedKeyword(QueryMapper.Field property,
org.springframework.data.mongodb.core.convert.QueryMapper.Keyword keyword)
Returns the mapped keyword considered defining a criteria for the given property.
|
protected org.bson.Document |
getMappedKeyword(org.springframework.data.mongodb.core.convert.QueryMapper.Keyword keyword,
MongoPersistentEntity<?> entity)
Returns the given
Document representing a keyword by mapping the keyword's value. |
org.bson.Document |
getMappedObject(org.bson.conversions.Bson query,
MongoPersistentEntity<?> entity)
Replaces the property keys used in the given
Document with the appropriate keys by using the
PersistentEntity metadata. |
org.bson.Document |
getMappedObject(org.bson.conversions.Bson query,
Optional<? extends MongoPersistentEntity<?>> entity) |
protected Map.Entry<String,Object> |
getMappedObjectForField(QueryMapper.Field field,
Object rawValue)
Extracts the mapped object value for given field out of rawValue taking nested
Keyword s into account |
org.bson.Document |
getMappedSort(org.bson.Document sortObject,
MongoPersistentEntity<?> entity)
Maps fields used for sorting to the
MongoPersistentEntity s properties. |
protected Object |
getMappedValue(QueryMapper.Field documentField,
Object sourceValue)
Returns the mapped value for the given source object assuming it's a value for the given
MongoPersistentProperty . |
MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> |
getMappingContext() |
protected boolean |
isAssociationConversionNecessary(QueryMapper.Field documentField,
Object value)
Returns whether the given
QueryMapper.Field represents an association reference that together with the given value
requires conversion to a DBRef object. |
protected boolean |
isDBObject(Object value)
Checks whether the given value is a
DBObject . |
protected boolean |
isDocument(Object value)
Checks whether the given value is a
Document . |
protected boolean |
isKeyword(String candidate)
Returns whether the given
String is a MongoDB keyword. |
protected boolean |
isNestedKeyword(Object candidate)
Returns whether the given
Object is a keyword, i.e. if it's a Document with a keyword key. |
protected boolean |
isTypeKey(String key)
Returns whether the given
String is the type key. |
public QueryMapper(MongoConverter converter)
QueryMapper
with the given MongoConverter
.converter
- must not be null.public org.bson.Document getMappedObject(org.bson.conversions.Bson query, Optional<? extends MongoPersistentEntity<?>> entity)
public org.bson.Document getMappedObject(org.bson.conversions.Bson query, @Nullable MongoPersistentEntity<?> entity)
Document
with the appropriate keys by using the
PersistentEntity
metadata.query
- must not be null.entity
- can be null.public org.bson.Document getMappedSort(org.bson.Document sortObject, @Nullable MongoPersistentEntity<?> entity)
MongoPersistentEntity
s properties. $meta
representation if present.sortObject
- entity
- public org.bson.Document getMappedFields(org.bson.Document fieldsObject, @Nullable MongoPersistentEntity<?> entity)
MongoPersistentEntity
s properties. $meta
representation.fieldsObject
- must not be null.entity
- can be .protected Map.Entry<String,Object> getMappedObjectForField(QueryMapper.Field field, Object rawValue)
Keyword
s into accountfield
- rawValue
- protected QueryMapper.Field createPropertyField(@Nullable MongoPersistentEntity<?> entity, String key, MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> mappingContext)
entity
- key
- mappingContext
- protected org.bson.Document getMappedKeyword(org.springframework.data.mongodb.core.convert.QueryMapper.Keyword keyword, @Nullable MongoPersistentEntity<?> entity)
Document
representing a keyword by mapping the keyword's value.keyword
- the Document
representing a keyword (e.g. $ne : …
)entity
- protected org.bson.Document getMappedKeyword(QueryMapper.Field property, org.springframework.data.mongodb.core.convert.QueryMapper.Keyword keyword)
property
- keyword
- @Nullable protected Object getMappedValue(QueryMapper.Field documentField, Object sourceValue)
MongoPersistentProperty
.documentField
- the key the value will be bound to eventuallysourceValue
- the source object to be mappedprotected boolean isAssociationConversionNecessary(QueryMapper.Field documentField, @Nullable Object value)
QueryMapper.Field
represents an association reference that together with the given value
requires conversion to a DBRef
object. We check whether the
type of the given value is compatible with the type of the given document field in order to deal with potential
query field exclusions, since MongoDB uses the int
0 as an indicator for an excluded field.documentField
- must not be null.value
- @Nullable protected Object convertSimpleOrDocument(Object source, @Nullable MongoPersistentEntity<?> entity)
Document
or simply invokes thesource
- entity
- @Nullable protected Object delegateConvertToMongoType(Object source, @Nullable MongoPersistentEntity<?> entity)
source
- entity
- protected Object convertAssociation(Object source, QueryMapper.Field field)
@Nullable protected Object convertAssociation(@Nullable Object source, @Nullable MongoPersistentProperty property)
source
- property
- protected final boolean isDocument(@Nullable Object value)
Document
.value
- can be null.protected final boolean isDBObject(@Nullable Object value)
DBObject
.value
- can be null.protected final Map.Entry<String,Object> createMapEntry(QueryMapper.Field field, @Nullable Object value)
Map.Entry
for the given QueryMapper.Field
with the given value.field
- must not be null.value
- can be null.@Nullable public Object convertId(@Nullable Object id)
ObjectId
or String
.id
- @Nullable public Object convertId(@Nullable Object id, Class<?> targetType)
ObjectId
or targetType
.id
- can be null.targetType
- protected boolean isNestedKeyword(Object candidate)
Object
is a keyword, i.e. if it's a Document
with a keyword key.candidate
- protected boolean isTypeKey(String key)
String
is the type key.key
- MongoTypeMapper.isTypeKey(String)
protected boolean isKeyword(String candidate)
String
is a MongoDB keyword. The default implementation will check against the
set of registered keywords returned by #getKeywords()
.candidate
- public MappingContext<? extends MongoPersistentEntity<?>,MongoPersistentProperty> getMappingContext()
Copyright © 2011–2021 Pivotal Software, Inc.. All rights reserved.