Repository: camel
Updated Branches:
  refs/heads/master 83ee9a5e5 -> 9d2f1df1e


CAMEL-11337: Camel-Infinispan: Add support for GetOrDefault operation on 
Producer


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

Branch: refs/heads/master
Commit: 9d2f1df1e926e82c5cd21a7a0bffe8c18e7e758c
Parents: 83ee9a5
Author: Andrea Cosentino <anco...@gmail.com>
Authored: Fri May 26 11:38:24 2017 +0200
Committer: Andrea Cosentino <anco...@gmail.com>
Committed: Fri May 26 11:42:00 2017 +0200

----------------------------------------------------------------------
 .../infinispan/InfinispanConstants.java         |  1 +
 .../infinispan/InfinispanOperation.java         |  1 +
 .../infinispan/InfinispanProducer.java          | 12 ++++++-
 .../infinispan/InfinispanProducerTest.java      | 38 ++++++++++++++++++++
 4 files changed, 51 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9d2f1df1/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
----------------------------------------------------------------------
diff --git 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
index 0ad16e1..eef8f6a 100644
--- 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
+++ 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanConstants.java
@@ -23,6 +23,7 @@ public interface InfinispanConstants {
     String CACHE_NAME = "CamelInfinispanCacheName";
     String KEY = "CamelInfinispanKey";
     String VALUE = "CamelInfinispanValue";
+    String DEFAULT_VALUE = "CamelInfinispanDefaultValue";
     String OLD_VALUE = "CamelInfinispanOldValue";
     String MAP = "CamelInfinispanMap";
     String OPERATION = "CamelInfinispanOperation";

http://git-wip-us.apache.org/repos/asf/camel/blob/9d2f1df1/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
----------------------------------------------------------------------
diff --git 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
index 8d20969..7753fff 100644
--- 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
+++ 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanOperation.java
@@ -24,6 +24,7 @@ public enum InfinispanOperation {
     PUTIFABSENT,
     PUTIFABSENTASYNC,
     GET,
+    GETORDEFAULT,
     CONTAINSKEY,
     CONTAINSVALUE,
     REMOVE,

http://git-wip-us.apache.org/repos/asf/camel/blob/9d2f1df1/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
index c1ccda2..7c09c8f 100644
--- 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
+++ 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanProducer.java
@@ -224,6 +224,17 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
 
         setResult(message, result);
     }
+    
+    @InvokeOnHeader("GETORDEFAULT")
+    void onGetOrDefault(Message message) {
+        final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
+        final Object key = message.getHeader(InfinispanConstants.KEY);
+        final Object defaultValue = 
message.getHeader(InfinispanConstants.DEFAULT_VALUE);
+        final Object result = cache.getOrDefault(key, defaultValue);
+
+        setResult(message, result);
+    }
+
 
     @InvokeOnHeader("CONTAINSKEY")
     @InvokeOnHeader(InfinispanConstants.CONTAINS_KEY)
@@ -371,7 +382,6 @@ public class InfinispanProducer extends 
HeaderSelectorProducer {
     void onSize(Message message) {
         final BasicCache<Object, Object> cache = manager.getCache(message, 
this.cacheName);
         final Object result = cache.size();
-
         setResult(message, result);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/9d2f1df1/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
 
b/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
index d26744a..f84bcc9 100644
--- 
a/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
+++ 
b/components/camel-infinispan/src/test/java/org/apache/camel/component/infinispan/InfinispanProducerTest.java
@@ -494,6 +494,42 @@ public class InfinispanProducerTest extends 
InfinispanTestSupport {
 
         waitForNullValue(KEY_ONE);
     }
+    
+    @Test
+    public void getOrDefault() throws Exception {
+        template.send("direct:start", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(InfinispanConstants.KEY, KEY_ONE);
+                exchange.getIn().setHeader(InfinispanConstants.VALUE, 
VALUE_ONE);
+                exchange.getIn().setHeader(InfinispanConstants.OPERATION, 
InfinispanOperation.PUT);
+            }
+        });
+
+        Object value = currentCache().get(KEY_ONE);
+        assertEquals(VALUE_ONE, value.toString());
+
+        Exchange exchange;
+        exchange = template.send("direct:getOrDefault", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(InfinispanConstants.KEY, KEY_ONE);
+                exchange.getIn().setHeader(InfinispanConstants.DEFAULT_VALUE, 
"defaultTest");
+            }
+        });
+        String resultGet = exchange.getIn().getBody(String.class);
+        assertEquals(VALUE_ONE, resultGet);
+        
+        exchange = template.send("direct:getOrDefault", new Processor() {
+            @Override
+            public void process(Exchange exchange) throws Exception {
+                exchange.getIn().setHeader(InfinispanConstants.KEY, KEY_TWO);
+                exchange.getIn().setHeader(InfinispanConstants.DEFAULT_VALUE, 
"defaultTest");
+            }
+        });
+        resultGet = exchange.getIn().getBody(String.class);
+        assertEquals("defaultTest", resultGet);
+    }
 
     @Test
     public void putOperationReturnsThePreviousValue() throws Exception {
@@ -1015,6 +1051,8 @@ public class InfinispanProducerTest extends 
InfinispanTestSupport {
                     
.to("infinispan?cacheContainer=#cacheContainer&operation=PUTIFABSENT");
                 from("direct:get")
                     
.to("infinispan?cacheContainer=#cacheContainer&operation=GET");
+                from("direct:getOrDefault")
+                    
.to("infinispan?cacheContainer=#cacheContainer&operation=GETORDEFAULT");
                 from("direct:remove")
                     
.to("infinispan?cacheContainer=#cacheContainer&operation=REMOVE");
                 from("direct:clear")

Reply via email to