Class MongoDbMessageSource

java.lang.Object
org.springframework.integration.util.AbstractExpressionEvaluator
org.springframework.integration.endpoint.AbstractMessageSource<java.lang.Object>
org.springframework.integration.mongodb.inbound.MongoDbMessageSource
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.integration.core.MessageSource<java.lang.Object>, org.springframework.integration.IntegrationPattern, org.springframework.integration.support.context.NamedComponent, org.springframework.integration.support.management.IntegrationInboundManagement, org.springframework.integration.support.management.IntegrationManagement

public class MongoDbMessageSource
extends org.springframework.integration.endpoint.AbstractMessageSource<java.lang.Object>
An instance of 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 payload of the Message returned by the {AbstractMessageSource.receive() method. An empty List is treated as null, thus resulting in no Message returned by the {AbstractMessageSource.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.

Since:
2.2
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement

    org.springframework.integration.support.management.IntegrationManagement.ManagementOverrides
  • Field Summary

    Fields inherited from class org.springframework.integration.util.AbstractExpressionEvaluator

    EXPRESSION_PARSER, logger

    Fields inherited from interface org.springframework.integration.support.management.IntegrationManagement

    METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME
  • Constructor Summary

    Constructors 
    Constructor Description
    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 https://www.mongodb.org/display/DOCS/Querying).
    MongoDbMessageSource​(org.springframework.data.mongodb.MongoDatabaseFactory mongoDbFactory, org.springframework.expression.Expression queryExpression)
    Creates an instance with the provided MongoDatabaseFactory and SpEL expression which should resolve to a MongoDb 'query' string (see https://www.mongodb.org/display/DOCS/Querying).
  • Method Summary

    Modifier and Type Method Description
    protected java.lang.Object doReceive()
    Will execute a Query returning its results as the Message payload.
    java.lang.String getComponentType()  
    protected void onInit()  
    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.

    Methods inherited from class org.springframework.integration.endpoint.AbstractMessageSource

    buildMessage, destroy, getBeanName, getComponentName, getManagedName, getManagedType, getOverrides, isLoggingEnabled, receive, registerMetricsCaptor, setBeanName, setHeaderExpressions, setLoggingEnabled, setManagedName, setManagedType

    Methods inherited from class org.springframework.integration.util.AbstractExpressionEvaluator

    afterPropertiesSet, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, evaluateExpression, getBeanFactory, getEvaluationContext, getEvaluationContext, getMessageBuilderFactory, setBeanFactory, setConversionService

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.springframework.integration.support.management.IntegrationManagement

    getThisAs

    Methods inherited from interface org.springframework.integration.core.MessageSource

    getIntegrationPatternType
  • Constructor Details

    • MongoDbMessageSource

      public MongoDbMessageSource​(org.springframework.data.mongodb.MongoDatabaseFactory mongoDbFactory, org.springframework.expression.Expression queryExpression)
      Creates an instance with the provided MongoDatabaseFactory and SpEL expression which should resolve to a MongoDb 'query' string (see https://www.mongodb.org/display/DOCS/Querying). The 'queryExpression' will be evaluated on every call to the AbstractMessageSource.receive() method.
      Parameters:
      mongoDbFactory - The mongodb factory.
      queryExpression - The query expression.
    • MongoDbMessageSource

      public 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 https://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 AbstractMessageSource.receive() method.
      Parameters:
      mongoTemplate - The mongo template.
      queryExpression - The query expression.
  • Method Details

    • setEntityClass

      public 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. Default is DBObject.
      Parameters:
      entityClass - The entity class.
    • setExpectSingleResult

      public void setExpectSingleResult​(boolean expectSingleResult)
      Allows you to manage which find* method to invoke on MongoTemplate. Default is 'false', which means the AbstractMessageSource.receive() method will use the MongoTemplate.find(Query, Class) method. If set to 'true', AbstractMessageSource.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.
      Parameters:
      expectSingleResult - true if a single result is expected.
    • setCollectionNameExpression

      public void setCollectionNameExpression​(org.springframework.expression.Expression collectionNameExpression)
      Sets the SpEL 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.
      Parameters:
      collectionNameExpression - The collection name expression.
    • setMongoConverter

      public 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. Only allowed if this instance was constructed with a MongoDatabaseFactory.
      Parameters:
      mongoConverter - The mongo converter.
    • getComponentType

      public java.lang.String getComponentType()
    • onInit

      protected void onInit()
      Overrides:
      onInit in class org.springframework.integration.util.AbstractExpressionEvaluator
    • doReceive

      protected java.lang.Object doReceive()
      Will execute a 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.
      Specified by:
      doReceive in class org.springframework.integration.endpoint.AbstractMessageSource<java.lang.Object>