Repository: camel
Updated Branches:
  refs/heads/master 9b93ea51a -> 08665fecd


CAMEL-9620 Infinispan: Support IGNORE_RETURN_VALUES for Put/Remove/Replace 
operations


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

Branch: refs/heads/master
Commit: 5ae721c0c2846b1b5c45da22a2ade5b9185fd55e
Parents: 9b93ea5
Author: Tristan Tarrant <ttarr...@redhat.com>
Authored: Thu Feb 18 19:51:59 2016 +0100
Committer: Andrea Cosentino <anco...@gmail.com>
Committed: Fri Feb 19 09:17:58 2016 +0100

----------------------------------------------------------------------
 components/camel-infinispan/pom.xml             |  4 +-
 .../infinispan/InfinispanConstants.java         |  3 +-
 .../infinispan/InfinispanOperation.java         | 46 ++++++++++---
 .../component/infinispan/InfinispanUtil.java    | 71 ++++++++++++++++++++
 4 files changed, 110 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5ae721c0/components/camel-infinispan/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-infinispan/pom.xml 
b/components/camel-infinispan/pom.xml
index 96c1631..c6e4c07 100644
--- a/components/camel-infinispan/pom.xml
+++ b/components/camel-infinispan/pom.xml
@@ -42,12 +42,12 @@
         </dependency>
         <dependency>
             <groupId>org.infinispan</groupId>
-            <artifactId>infinispan-core</artifactId>
+            <artifactId>infinispan-embedded</artifactId>
             <version>${infinispan-version}</version>
         </dependency>
         <dependency>
             <groupId>org.infinispan</groupId>
-            <artifactId>infinispan-client-hotrod</artifactId>
+            <artifactId>infinispan-remote</artifactId>
             <version>${infinispan-version}</version>
         </dependency>
 

http://git-wip-us.apache.org/repos/asf/camel/blob/5ae721c0/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 9b82bc5..a6ae8a5 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,7 +23,7 @@ public interface InfinispanConstants {
     String KEY = "CamelInfinispanKey";
     String VALUE = "CamelInfinispanValue";
     String OLD_VALUE = "CamelInfinispanOldValue";
-    String MAP = "CamelInfinispanMap";    
+    String MAP = "CamelInfinispanMap";
     String OPERATION = "CamelInfinispanOperation";
     String PUT = "CamelInfinispanOperationPut";
     String PUT_ASYNC = "CamelInfinispanOperationPutAsync";
@@ -46,4 +46,5 @@ public interface InfinispanConstants {
     String LIFESPAN_TIME_UNIT = "CamelInfinispanTimeUnit";
     String MAX_IDLE_TIME = "CamelInfinispanMaxIdleTime";
     String MAX_IDLE_TIME_UNIT = "CamelInfinispanMaxIdleTimeUnit";
+    String IGNORE_RETURN_VALUES = "CamelInfinispanIgnoreReturnValues";
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5ae721c0/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 69eb3e8..f4f7184 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
@@ -55,10 +55,13 @@ public final class InfinispanOperation {
             @Override
             void execute(BasicCache<Object, Object> cache, Exchange exchange) {
                 Object result;
+                if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.IGNORE_RETURN_VALUES)))
 {
+                    cache = InfinispanUtil.ignoreReturnValuesCache(cache);
+                }
                 if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME))
 && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT)))
 {
                     long lifespan = 
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
                     String timeUnit =  
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, 
String.class);
-                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
 
+                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
                         && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT)))
 {
                         long maxIdle = 
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
                         String maxIdleTimeUnit =  
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, 
String.class);
@@ -75,10 +78,13 @@ public final class InfinispanOperation {
             @Override
             void execute(BasicCache<Object, Object> cache, Exchange exchange) {
                 NotifyingFuture result;
+                if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.IGNORE_RETURN_VALUES)))
 {
+                    cache = InfinispanUtil.ignoreReturnValuesCache(cache);
+                }
                 if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME))
 && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT)))
 {
                     long lifespan = 
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
                     String timeUnit =  
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, 
String.class);
-                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
 
+                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
                         && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT)))
 {
                         long maxIdle = 
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
                         String maxIdleTimeUnit =  
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, 
String.class);
@@ -97,7 +103,7 @@ public final class InfinispanOperation {
                 if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME))
 && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT)))
 {
                     long lifespan = 
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
                     String timeUnit =  
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, 
String.class);
-                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
 
+                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
                         && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT)))
 {
                         long maxIdle = 
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
                         String maxIdleTimeUnit =  
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, 
String.class);
@@ -116,7 +122,7 @@ public final class InfinispanOperation {
                 if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME))
 && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT)))
 {
                     long lifespan = 
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
                     String timeUnit =  
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, 
String.class);
-                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
 
+                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
                         && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT)))
 {
                         long maxIdle = 
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
                         String maxIdleTimeUnit =  
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, 
String.class);
@@ -133,10 +139,13 @@ public final class InfinispanOperation {
             @Override
             void execute(BasicCache<Object, Object> cache, Exchange exchange) {
                 Object result;
+                if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.IGNORE_RETURN_VALUES)))
 {
+                    cache = InfinispanUtil.ignoreReturnValuesCache(cache);
+                }
                 if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME))
 && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT)))
 {
                     long lifespan = 
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
                     String timeUnit =  
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, 
String.class);
-                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
 
+                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
                         && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT)))
 {
                         long maxIdle = 
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
                         String maxIdleTimeUnit =  
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, 
String.class);
@@ -153,10 +162,13 @@ public final class InfinispanOperation {
             @Override
             void execute(BasicCache<Object, Object> cache, Exchange exchange) {
                 NotifyingFuture result;
+                if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.IGNORE_RETURN_VALUES)))
 {
+                    cache = InfinispanUtil.ignoreReturnValuesCache(cache);
+                }
                 if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME))
 && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT)))
 {
                     long lifespan = 
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
                     String timeUnit =  
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, 
String.class);
-                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
 
+                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
                         && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT)))
 {
                         long maxIdle = 
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
                         String maxIdleTimeUnit =  
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, 
String.class);
@@ -191,6 +203,9 @@ public final class InfinispanOperation {
             @Override
             void execute(BasicCache<Object, Object> cache, Exchange exchange) {
                 Object result;
+                if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.IGNORE_RETURN_VALUES)))
 {
+                    cache = InfinispanUtil.ignoreReturnValuesCache(cache);
+                }
                 if (ObjectHelper.isEmpty(getValue(exchange))) {
                     result = cache.remove(getKey(exchange));
                 } else {
@@ -202,6 +217,9 @@ public final class InfinispanOperation {
             @Override
             void execute(BasicCache<Object, Object> cache, Exchange exchange) {
                 NotifyingFuture result;
+                if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.IGNORE_RETURN_VALUES)))
 {
+                    cache = InfinispanUtil.ignoreReturnValuesCache(cache);
+                }
                 if (ObjectHelper.isEmpty(getValue(exchange))) {
                     result = cache.removeAsync(getKey(exchange));
                 } else {
@@ -213,10 +231,13 @@ public final class InfinispanOperation {
             @Override
             void execute(BasicCache<Object, Object> cache, Exchange exchange) {
                 Object result;
+                if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.IGNORE_RETURN_VALUES)))
 {
+                    cache = InfinispanUtil.ignoreReturnValuesCache(cache);
+                }
                 if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME))
 && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT)))
 {
                     long lifespan = 
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
                     String timeUnit =  
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, 
String.class);
-                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
 
+                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
                         && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT)))
 {
                         long maxIdle = 
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
                         String maxIdleTimeUnit =  
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, 
String.class);
@@ -224,7 +245,7 @@ public final class InfinispanOperation {
                             result = cache.replace(getKey(exchange), 
getValue(exchange), lifespan, TimeUnit.valueOf(timeUnit), maxIdle, 
TimeUnit.valueOf(maxIdleTimeUnit));
                         } else {
                             result = cache.replace(getKey(exchange), 
getOldValue(exchange), getValue(exchange), lifespan, 
TimeUnit.valueOf(timeUnit), maxIdle, TimeUnit.valueOf(maxIdleTimeUnit));
-                        } 
+                        }
                     } else {
                         if (ObjectHelper.isEmpty(getOldValue(exchange))) {
                             result = cache.replace(getKey(exchange), 
getValue(exchange), lifespan, TimeUnit.valueOf(timeUnit));
@@ -245,10 +266,13 @@ public final class InfinispanOperation {
             @Override
             void execute(BasicCache<Object, Object> cache, Exchange exchange) {
                 NotifyingFuture result;
+                if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.IGNORE_RETURN_VALUES)))
 {
+                    cache = InfinispanUtil.ignoreReturnValuesCache(cache);
+                }
                 if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME))
 && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT)))
 {
                     long lifespan = 
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME, long.class);
                     String timeUnit =  
exchange.getIn().getHeader(InfinispanConstants.LIFESPAN_TIME_UNIT, 
String.class);
-                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
 
+                    if 
(!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME))
                         && 
!ObjectHelper.isEmpty(exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT)))
 {
                         long maxIdle = 
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME, long.class);
                         String maxIdleTimeUnit =  
exchange.getIn().getHeader(InfinispanConstants.MAX_IDLE_TIME_UNIT, 
String.class);
@@ -304,11 +328,11 @@ public final class InfinispanOperation {
         Object getValue(Exchange exchange) {
             return exchange.getIn().getHeader(InfinispanConstants.VALUE);
         }
-        
+
         Object getOldValue(Exchange exchange) {
             return exchange.getIn().getHeader(InfinispanConstants.OLD_VALUE);
         }
-        
+
         Map<? extends Object, ? extends Object>  getMap(Exchange exchange) {
             return (Map<? extends Object, ? extends Object>) 
exchange.getIn().getHeader(InfinispanConstants.MAP);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/5ae721c0/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanUtil.java
----------------------------------------------------------------------
diff --git 
a/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanUtil.java
 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanUtil.java
new file mode 100644
index 0000000..b0713da
--- /dev/null
+++ 
b/components/camel-infinispan/src/main/java/org/apache/camel/component/infinispan/InfinispanUtil.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.infinispan;
+
+import org.infinispan.Cache;
+import org.infinispan.client.hotrod.RemoteCache;
+import org.infinispan.client.hotrod.RemoteCacheManager;
+import org.infinispan.commons.api.BasicCache;
+import org.infinispan.commons.api.BasicCacheContainer;
+import org.infinispan.context.Flag;
+import org.infinispan.manager.EmbeddedCacheManager;
+
+public class InfinispanUtil {
+    private InfinispanUtil() {
+    }
+
+    public static boolean isEmbedded(BasicCacheContainer container) {
+        try {
+            return container instanceof EmbeddedCacheManager;
+        } catch (Throwable e) {
+            return false;
+        }
+    }
+
+    public static <K, V> boolean isEmbedded(BasicCache<K, V> cache) {
+        try {
+            return cache instanceof Cache;
+        } catch (Throwable e) {
+            return false;
+        }
+    }
+
+    public static boolean isRemote(BasicCacheContainer container) {
+        try {
+            return container instanceof RemoteCacheManager;
+        } catch (Throwable e) {
+            return false;
+        }
+    }
+
+    public static <K, V> boolean isRemote(BasicCache<K, V> cache) {
+        try {
+            return cache instanceof RemoteCache;
+        } catch (Throwable e) {
+            return false;
+        }
+    }
+
+    public static <K, V> BasicCache<K, V> 
ignoreReturnValuesCache(BasicCache<K, V> cache) {
+        if (isEmbedded(cache)) {
+            return ((Cache<K, V>) 
cache).getAdvancedCache().withFlags(Flag.IGNORE_RETURN_VALUES);
+        } else {
+            return cache;
+        }
+    }
+
+}

Reply via email to