Consider sortBy header when performing findOneByQuery operation

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ab702664
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ab702664
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ab702664

Branch: refs/heads/camel-2.17.x
Commit: ab702664950b024ba421a0c7f75f30a302a227fc
Parents: 3d11e16
Author: Kris Boutilier <kris.boutil...@gmail.com>
Authored: Mon Jun 6 16:56:42 2016 -0700
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Jun 8 14:31:54 2016 +0200

----------------------------------------------------------------------
 .../apache/camel/component/mongodb/MongoDbProducer.java | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/ab702664/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java
 
b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java
index c9ae6eb..207f564 100644
--- 
a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java
+++ 
b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java
@@ -351,13 +351,17 @@ public class MongoDbProducer extends DefaultProducer {
         DBObject o = exchange.getIn().getMandatoryBody(DBObject.class);
         DBObject ret;
 
+        DBObject sortBy = exchange.getIn().getHeader(MongoDbConstants.SORT_BY, 
DBObject.class);
         DBObject fieldFilter = 
exchange.getIn().getHeader(MongoDbConstants.FIELDS_FILTER, DBObject.class);
-        if (fieldFilter == null) {
-            ret = dbCol.findOne(o);
-        } else {
+
+        if (sortBy != null) {
+            ret = dbCol.findOne(o, fieldFilter, sortBy);
+        } else if (fieldFilter != null) {
             ret = dbCol.findOne(o, fieldFilter);
+        } else {
+            ret = dbCol.findOne(o);
         }
-
+        
         Message resultMessage = prepareResponseMessage(exchange, 
MongoDbOperation.findOneByQuery);
         resultMessage.setBody(ret);
         resultMessage.setHeader(MongoDbConstants.RESULT_TOTAL_SIZE, ret == 
null ? 0 : 1);

Reply via email to