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>

Reply via email to