Repository: camel Updated Branches: refs/heads/master ce5c0873e -> b0ae439fa
CAMEL-8883: Camel-Hazelcast: Add containsKey and containsValue operation to ReplicatedMap and MultiMap Producer Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b0ae439f Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b0ae439f Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b0ae439f Branch: refs/heads/master Commit: b0ae439fa036cb2a2284259f12e10804f13165f5 Parents: b102a56 Author: Andrea Cosentino <anco...@gmail.com> Authored: Thu Jun 18 12:57:38 2015 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Thu Jun 18 17:37:22 2015 +0200 ---------------------------------------------------------------------- .../HazelcastReplicatedmapProducer.java | 17 +++++++++ ...lcastReplicatedmapProducerForSpringTest.java | 27 +++++++++++++++ .../HazelcastReplicatedmapProducerTest.java | 36 ++++++++++++++++++++ .../spring/test-camel-context-replicatedmap.xml | 17 +++++++++ 4 files changed, 97 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b0ae439f/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapProducer.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapProducer.java index 7fc8a2b..cc2a4ab 100644 --- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapProducer.java +++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/replicatedmap/HazelcastReplicatedmapProducer.java @@ -67,6 +67,14 @@ public class HazelcastReplicatedmapProducer extends HazelcastDefaultProducer { this.clear(exchange); break; + case HazelcastConstants.CONTAINS_KEY_OPERATION: + this.containsKey(oid, exchange); + break; + + case HazelcastConstants.CONTAINS_VALUE_OPERATION: + this.containsValue(exchange); + break; + default: throw new IllegalArgumentException(String.format("The value '%s' is not allowed for parameter '%s' on the MULTIMAP cache.", operation, HazelcastConstants.OPERATION)); } @@ -91,4 +99,13 @@ public class HazelcastReplicatedmapProducer extends HazelcastDefaultProducer { private void clear(Exchange exchange) { this.cache.clear(); } + + private void containsKey(Object oid, Exchange exchange) { + exchange.getOut().setBody(this.cache.containsKey(oid)); + } + + private void containsValue(Exchange exchange) { + Object body = exchange.getIn().getBody(); + exchange.getOut().setBody(this.cache.containsValue(body)); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/b0ae439f/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerForSpringTest.java ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerForSpringTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerForSpringTest.java index c108a08..2382bdd 100644 --- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerForSpringTest.java +++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerForSpringTest.java @@ -80,4 +80,31 @@ public class HazelcastReplicatedmapProducerForSpringTest extends HazelcastCamelS verify(map).remove(4711); } + @Test + public void testContainsKey() { + when(map.containsKey("testOk")).thenReturn(true); + when(map.containsKey("testKo")).thenReturn(false); + template.sendBodyAndHeader("direct:containsKey", null, HazelcastConstants.OBJECT_ID, "testOk"); + Boolean body = consumer.receiveBody("seda:out", 5000, Boolean.class); + verify(map).containsKey("testOk"); + assertEquals(true, body); + template.sendBodyAndHeader("direct:containsKey", null, HazelcastConstants.OBJECT_ID, "testKo"); + body = consumer.receiveBody("seda:out", 5000, Boolean.class); + verify(map).containsKey("testKo"); + assertEquals(false, body); + } + + @Test + public void testContainsValue() { + when(map.containsValue("testOk")).thenReturn(true); + when(map.containsValue("testKo")).thenReturn(false); + template.sendBody("direct:containsValue", "testOk"); + Boolean body = consumer.receiveBody("seda:out", 5000, Boolean.class); + verify(map).containsValue("testOk"); + assertEquals(true, body); + template.sendBody("direct:containsValue", "testKo"); + body = consumer.receiveBody("seda:out", 5000, Boolean.class); + verify(map).containsValue("testKo"); + assertEquals(false, body); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/b0ae439f/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerTest.java ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerTest.java index 82e2621..43bbbe4 100644 --- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerTest.java +++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastReplicatedmapProducerTest.java @@ -94,6 +94,34 @@ public class HazelcastReplicatedmapProducerTest extends HazelcastCamelTestSuppor template.sendBody("direct:clear", "test"); verify(map).clear(); } + + @Test + public void testContainsKey() { + when(map.containsKey("testOk")).thenReturn(true); + when(map.containsKey("testKo")).thenReturn(false); + template.sendBodyAndHeader("direct:containsKey", null, HazelcastConstants.OBJECT_ID, "testOk"); + Boolean body = consumer.receiveBody("seda:out", 5000, Boolean.class); + verify(map).containsKey("testOk"); + assertEquals(true, body); + template.sendBodyAndHeader("direct:containsKey", null, HazelcastConstants.OBJECT_ID, "testKo"); + body = consumer.receiveBody("seda:out", 5000, Boolean.class); + verify(map).containsKey("testKo"); + assertEquals(false, body); + } + + @Test + public void testContainsValue() { + when(map.containsValue("testOk")).thenReturn(true); + when(map.containsValue("testKo")).thenReturn(false); + template.sendBody("direct:containsValue", "testOk"); + Boolean body = consumer.receiveBody("seda:out", 5000, Boolean.class); + verify(map).containsValue("testOk"); + assertEquals(true, body); + template.sendBody("direct:containsValue", "testKo"); + body = consumer.receiveBody("seda:out", 5000, Boolean.class); + verify(map).containsValue("testKo"); + assertEquals(false, body); + } @Override protected RouteBuilder createRouteBuilder() throws Exception { @@ -114,6 +142,14 @@ public class HazelcastReplicatedmapProducerTest extends HazelcastCamelTestSuppor from("direct:clear").setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.CLEAR_OPERATION)) .to(String.format("hazelcast:%sbar", HazelcastConstants.REPLICATEDMAP_PREFIX)); + from("direct:containsKey").setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.CONTAINS_KEY_OPERATION)) + .to(String.format("hazelcast:%sbar", HazelcastConstants.REPLICATEDMAP_PREFIX)) + .to("seda:out"); + + from("direct:containsValue").setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.CONTAINS_VALUE_OPERATION)) + .to(String.format("hazelcast:%sbar", HazelcastConstants.REPLICATEDMAP_PREFIX)) + .to("seda:out"); + from("direct:putWithOperationNumber").toF("hazelcast:%sbar?operation=%s", HazelcastConstants.REPLICATEDMAP_PREFIX, HazelcastConstants.PUT_OPERATION); from("direct:putWithOperationName").toF("hazelcast:%sbar?operation=put", HazelcastConstants.REPLICATEDMAP_PREFIX); } http://git-wip-us.apache.org/repos/asf/camel/blob/b0ae439f/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-replicatedmap.xml ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-replicatedmap.xml b/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-replicatedmap.xml index c1af245..a7f3bc9 100644 --- a/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-replicatedmap.xml +++ b/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-replicatedmap.xml @@ -47,7 +47,24 @@ </setHeader> <to uri="hazelcast:replicatedmap:bar" /> </route> + + <route> + <from uri="direct:containsKey" /> + <setHeader headerName="CamelHazelcastOperationType"> + <constant>containsKey</constant> + </setHeader> + <to uri="hazelcast:replicatedmap:bar" /> + <to uri="seda:out" /> + </route> + <route> + <from uri="direct:containsValue" /> + <setHeader headerName="CamelHazelcastOperationType"> + <constant>containsValue</constant> + </setHeader> + <to uri="hazelcast:replicatedmap:bar" /> + <to uri="seda:out" /> + </route> </camelContext> </beans>