You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2016/11/07 09:47:54 UTC
[2/2] camel git commit: CAMEL-10444: return header
CamelMongoDbRecordsAffected from update and remove operations
CAMEL-10444: return header CamelMongoDbRecordsAffected from update and remove operations
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8a536302
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8a536302
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8a536302
Branch: refs/heads/camel-2.18.x
Commit: 8a5363020e18a312bfe7e99a2b068e824a8bc5c2
Parents: f04f785
Author: Nick Busy <nb...@enfoll.com>
Authored: Sat Nov 5 16:30:22 2016 +1100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Nov 7 10:47:44 2016 +0100
----------------------------------------------------------------------
.../component/mongodb/MongoDbProducer.java | 6 ++++++
.../mongodb/MongoDbOperationsTest.java | 22 ++++++++++++++++++--
2 files changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/8a536302/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 9a72e7e..52e4ed6 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
@@ -409,6 +409,9 @@ public class MongoDbProducer extends DefaultProducer {
} else {
result = dbCol.updateMany(updateCriteria, objNew, options);
}
+ if (result.isModifiedCountAvailable()) {
+ exchange1.getOut().setHeader(MongoDbConstants.RECORDS_AFFECTED, result.getModifiedCount());
+ }
return result;
} catch (InvalidPayloadException e) {
throw new CamelMongoDbException("Invalid payload for update", e);
@@ -423,6 +426,9 @@ public class MongoDbProducer extends DefaultProducer {
BasicDBObject removeObj = exchange1.getIn().getMandatoryBody(BasicDBObject.class);
DeleteResult result = dbCol.deleteMany(removeObj);
+ if (result.wasAcknowledged()) {
+ exchange1.getOut().setHeader(MongoDbConstants.RECORDS_AFFECTED, result.getDeletedCount());
+ }
return result;
} catch (InvalidPayloadException e) {
throw new CamelMongoDbException("Invalid payload for remove", e);
http://git-wip-us.apache.org/repos/asf/camel/blob/8a536302/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java
----------------------------------------------------------------------
diff --git a/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java b/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java
index 842af35..eb6b4ea 100644
--- a/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java
+++ b/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java
@@ -29,6 +29,9 @@ import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.mongodb.util.JSON;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.bson.Document;
import org.bson.types.ObjectId;
@@ -137,8 +140,16 @@ public class MongoDbOperationsTest extends AbstractMongoDbTest {
DBObject updateObj = new BasicDBObject("$set", new BasicDBObject("scientist", "Darwin"));
- Object result = template.requestBodyAndHeader("direct:update", new Object[] {extraField, updateObj}, MongoDbConstants.MULTIUPDATE, true);
+ Exchange resultExchange = template.request("direct:update", new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setBody(new Object[] {extraField, updateObj});
+ exchange.getIn().setHeader(MongoDbConstants.MULTIUPDATE, true);
+ }
+ });
+ Object result = resultExchange.getOut().getBody();
assertTrue(result instanceof UpdateResult);
+ assertEquals("Number of records updated header should equal 50", 50L, resultExchange.getOut().getHeader(MongoDbConstants.RECORDS_AFFECTED));
assertEquals("Number of records with 'scientist' field = Darwin on must equal 50 after update", 50,
testCollection.count(new BasicDBObject("scientist", "Darwin")));
@@ -166,8 +177,15 @@ public class MongoDbOperationsTest extends AbstractMongoDbTest {
BasicDBObject extraField = new BasicDBObject("extraField", true);
assertEquals("Number of records with 'extraField' flag on must equal 50", 50L, testCollection.count(extraField));
- Object result = template.requestBody("direct:remove", extraField);
+ Exchange resultExchange = template.request("direct:remove", new Processor() {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ exchange.getIn().setBody(extraField);
+ }
+ });
+ Object result = resultExchange.getOut().getBody();
assertTrue(result instanceof DeleteResult);
+ assertEquals("Number of records deleted header should equal 50", 50L, resultExchange.getOut().getHeader(MongoDbConstants.RECORDS_AFFECTED));
assertEquals("Number of records with 'extraField' flag on must be 0 after remove", 0,
testCollection.count(extraField));