public class MongoDbMessageSource extends IntegrationObjectSupport implements MessageSource<java.lang.Object>
MessageSource
which returns a Message
with a payload
which is the result of execution of a Query
. When expectSingleResult is false
(default),
the MongoDb Query
is executed using MongoOperations.find(Query, Class)
method which returns a List
. The returned List
will be used as
the payoad of the Message
returned by the {receive()
method.
An empty List
is treated as null, thus resulting in no Message
returned
by the {receive()
method.
When expectSingleResult is true, the MongoOperations.findOne(Query, Class)
is
used instead, and the message payload will be the single object returned from the
query.
logger
Constructor and Description |
---|
MongoDbMessageSource(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory,
org.springframework.expression.Expression queryExpression)
Creates an instance with the provided
MongoDbFactory and SpEL expression
which should resolve to a MongoDb 'query' string
(see http://www.mongodb.org/display/DOCS/Querying). |
MongoDbMessageSource(org.springframework.data.mongodb.core.MongoOperations mongoTemplate,
org.springframework.expression.Expression queryExpression)
Creates an instance with the provided
MongoOperations and SpEL expression
which should resolve to a Mongo 'query' string
(see http://www.mongodb.org/display/DOCS/Querying). |
Modifier and Type | Method and Description |
---|---|
protected void |
onInit()
Subclasses may implement this for initialization logic.
|
Message<java.lang.Object> |
receive()
Will execute a
Query returning its results as the Message payload. |
void |
setCollectionNameExpression(org.springframework.expression.Expression collectionNameExpression)
Sets the SpEL
Expression that should resolve to a collection name
used by the Query . |
void |
setEntityClass(java.lang.Class<?> entityClass)
Allows you to set the type of the entityClass that will be passed to the
MongoTemplate.find(Query, Class) or MongoTemplate.findOne(Query, Class)
method. |
void |
setExpectSingleResult(boolean expectSingleResult)
Allows you to manage which find* method to invoke on
MongoTemplate . |
void |
setMongoConverter(org.springframework.data.mongodb.core.convert.MongoConverter mongoConverter)
Allows you to provide a custom
MongoConverter used to assist in deserialization
data read from MongoDb. |
afterPropertiesSet, getApplicationContextId, getBeanFactory, getComponentName, getComponentType, getConversionService, getIntegrationProperties, getIntegrationProperty, getTaskScheduler, setApplicationContext, setBeanFactory, setBeanName, setComponentName, setConversionService, setTaskScheduler, toString
public MongoDbMessageSource(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory, org.springframework.expression.Expression queryExpression)
MongoDbFactory
and SpEL expression
which should resolve to a MongoDb 'query' string
(see http://www.mongodb.org/display/DOCS/Querying).
The 'queryExpression' will be evaluated on every call to the receive()
method.mongoDbFactory
- queryExpression
- public MongoDbMessageSource(org.springframework.data.mongodb.core.MongoOperations mongoTemplate, org.springframework.expression.Expression queryExpression)
MongoOperations
and SpEL expression
which should resolve to a Mongo 'query' string
(see http://www.mongodb.org/display/DOCS/Querying).
It assumes that the MongoOperations
is fully initialized and ready to be used.
The 'queryExpression' will be evaluated on every call to the receive()
method.mongoTemplate
- queryExpression
- public void setEntityClass(java.lang.Class<?> entityClass)
MongoTemplate.find(Query, Class)
or MongoTemplate.findOne(Query, Class)
method.
Default is DBObject
.entityClass
- public void setExpectSingleResult(boolean expectSingleResult)
MongoTemplate
.
Default is 'false', which means the receive()
method will use
the MongoTemplate.find(Query, Class)
method. If set to 'true',
receive()
will use MongoTemplate.findOne(Query, Class)
,
and the payload of the returned Message
will be the returned target Object of type
identified by {entityClass
instead of a List.expectSingleResult
- public void setCollectionNameExpression(org.springframework.expression.Expression collectionNameExpression)
Expression
that should resolve to a collection name
used by the Query
. The resulting collection name will be included
in the MongoHeaders.COLLECTION_NAME
header.collectionNameExpression
- public void setMongoConverter(org.springframework.data.mongodb.core.convert.MongoConverter mongoConverter)
MongoConverter
used to assist in deserialization
data read from MongoDb. Only allowed if this instance was constructed with a
MongoDbFactory
.mongoConverter
- protected void onInit() throws java.lang.Exception
IntegrationObjectSupport
onInit
in class IntegrationObjectSupport
java.lang.Exception
public Message<java.lang.Object> receive()
Query
returning its results as the Message payload.
The payload can be either List
of elements of objects of type
identified by {entityClass
, or a single element of type identified by {entityClass
based on the value of {expectSingleResult
attribute which defaults to 'false' resulting
Message
with payload of type List
. The collection name used in the
query will be provided in the MongoHeaders.COLLECTION_NAME
header.receive
in interface MessageSource<java.lang.Object>