You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2015/06/15 17:33:33 UTC
[2/3] camel git commit: CAMEL-8872 Camel-Hazelcast: Add new
operations to HazelcastAtomicNumber producer, add getAndAdd Operation
CAMEL-8872 Camel-Hazelcast: Add new operations to HazelcastAtomicNumber producer, add getAndAdd Operation
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/11883ff7
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/11883ff7
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/11883ff7
Branch: refs/heads/master
Commit: 11883ff788da1bfcff752f0d8ce3d3fa459ffcc6
Parents: 68c62b6
Author: Andrea Cosentino <an...@gmail.com>
Authored: Mon Jun 15 14:31:32 2015 +0200
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Mon Jun 15 17:29:42 2015 +0200
----------------------------------------------------------------------
.../component/hazelcast/HazelcastComponentHelper.java | 1 +
.../camel/component/hazelcast/HazelcastConstants.java | 1 +
.../atomicnumber/HazelcastAtomicnumberProducer.java | 9 +++++++++
.../HazelcastAtomicnumberProducerForSpringTest.java | 9 ++++++++-
.../hazelcast/HazelcastAtomicnumberProducerTest.java | 11 +++++++++++
.../META-INF/spring/test-camel-context-atomicnumber.xml | 8 ++++++++
6 files changed, 38 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/11883ff7/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java
index cad9f64..9c281cf 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastComponentHelper.java
@@ -111,6 +111,7 @@ public final class HazelcastComponentHelper {
addMapping("setvalue", HazelcastConstants.SETVALUE_OPERATION);
addMapping("destroy", HazelcastConstants.DESTROY_OPERATION);
addMapping("compareAndSet", HazelcastConstants.COMPARE_AND_SET_OPERATION);
+ addMapping("getAndAdd", HazelcastConstants.GET_AND_ADD);
// queue
addMapping("add", HazelcastConstants.ADD_OPERATION);
http://git-wip-us.apache.org/repos/asf/camel/blob/11883ff7/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastConstants.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastConstants.java
index a8f15c3..8d5a9e3 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastConstants.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/HazelcastConstants.java
@@ -79,6 +79,7 @@ public final class HazelcastConstants {
public static final int SETVALUE_OPERATION = 22;
public static final int DESTROY_OPERATION = 23;
public static final int COMPARE_AND_SET_OPERATION = 24;
+ public static final int GET_AND_ADD = 25;
// queue
public static final int ADD_OPERATION = 31;
http://git-wip-us.apache.org/repos/asf/camel/blob/11883ff7/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberProducer.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberProducer.java
index a4827ee..fd42b7a 100644
--- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberProducer.java
+++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/atomicnumber/HazelcastAtomicnumberProducer.java
@@ -62,6 +62,10 @@ public class HazelcastAtomicnumberProducer extends HazelcastDefaultProducer {
case HazelcastConstants.COMPARE_AND_SET_OPERATION:
this.compare(expectedValue, exchange);
break;
+
+ case HazelcastConstants.GET_AND_ADD:
+ this.getAndAdd(exchange);
+ break;
case HazelcastConstants.SETVALUE_OPERATION:
this.set(exchange);
@@ -102,6 +106,11 @@ public class HazelcastAtomicnumberProducer extends HazelcastDefaultProducer {
}
exchange.getOut().setBody(this.atomicnumber.compareAndSet(expected, update));
}
+
+ private void getAndAdd(Exchange exchange) {
+ long delta = exchange.getIn().getBody(Long.class);
+ exchange.getOut().setBody(this.atomicnumber.getAndAdd(delta));
+ }
private void set(Exchange exchange) {
this.atomicnumber.set(exchange.getIn().getBody(Long.class));
http://git-wip-us.apache.org/repos/asf/camel/blob/11883ff7/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java
index 3f7105d..13f682b 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerForSpringTest.java
@@ -109,5 +109,12 @@ public class HazelcastAtomicnumberProducerForSpringTest extends HazelcastCamelSp
verify(atomicNumber).compareAndSet(1233L, 1235L);
assertEquals(false, result);
}
-
+
+ @Test
+ public void testGetAndAdd() {
+ when(atomicNumber.getAndAdd(12L)).thenReturn(13L);
+ long result = template.requestBody("direct:getAndAdd", 12L, Long.class);
+ verify(atomicNumber).getAndAdd(12L);
+ assertEquals(13L, result);
+ }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/11883ff7/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerTest.java
index a7bf3ad..53f4f8c 100644
--- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerTest.java
+++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastAtomicnumberProducerTest.java
@@ -118,6 +118,14 @@ public class HazelcastAtomicnumberProducerTest extends HazelcastCamelTestSupport
verify(atomicNumber).compareAndSet(1233L, 1235L);
assertEquals(false, result);
}
+
+ @Test
+ public void testGetAndAdd() {
+ when(atomicNumber.getAndAdd(12L)).thenReturn(13L);
+ long result = template.requestBody("direct:getAndAdd", 12L, Long.class);
+ verify(atomicNumber).getAndAdd(12L);
+ assertEquals(13L, result);
+ }
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -144,6 +152,9 @@ public class HazelcastAtomicnumberProducerTest extends HazelcastCamelTestSupport
from("direct:compareAndSet").setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.COMPARE_AND_SET_OPERATION)).to(
String.format("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX));
+
+ from("direct:getAndAdd").setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.GET_AND_ADD)).to(
+ String.format("hazelcast:%sfoo", HazelcastConstants.ATOMICNUMBER_PREFIX));
from("direct:setWithOperationNumber").toF("hazelcast:%sfoo?operation=%s", HazelcastConstants.ATOMICNUMBER_PREFIX, HazelcastConstants.SETVALUE_OPERATION);
from("direct:setWithOperationName").toF("hazelcast:%sfoo?operation=setvalue", HazelcastConstants.ATOMICNUMBER_PREFIX);
http://git-wip-us.apache.org/repos/asf/camel/blob/11883ff7/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-atomicnumber.xml
----------------------------------------------------------------------
diff --git a/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-atomicnumber.xml b/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-atomicnumber.xml
index 949d808..4c7b859 100644
--- a/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-atomicnumber.xml
+++ b/components/camel-hazelcast/src/test/resources/META-INF/spring/test-camel-context-atomicnumber.xml
@@ -64,6 +64,14 @@
</route>
<route>
+ <from uri="direct:getAndAdd" />
+ <setHeader headerName="CamelHazelcastOperationType">
+ <constant>getAndAdd</constant>
+ </setHeader>
+ <to uri="hazelcast:atomicvalue:foo" />
+ </route>
+
+ <route>
<from uri="direct:destroy" />
<setHeader headerName="CamelHazelcastOperationType">
<constant>destroy</constant>