CAMEL-8856 Camel-Hazelcast: Add evict and evictAll operation to hazelcast map
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/30558012 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/30558012 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/30558012 Branch: refs/heads/master Commit: 305580120fd97c8532d7a792a303118ed2382637 Parents: 4bc4fe8 Author: Andrea Cosentino <anco...@gmail.com> Authored: Thu Jun 11 10:13:59 2015 +0200 Committer: Andrea Cosentino <anco...@gmail.com> Committed: Thu Jun 11 17:14:36 2015 +0200 ---------------------------------------------------------------------- .../camel/component/hazelcast/HazelcastConstants.java | 3 ++- .../component/hazelcast/map/HazelcastMapProducer.java | 11 +++++++++++ .../component/hazelcast/HazelcastMapProducerTest.java | 11 +++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/30558012/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 38a3a9d..b005047 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 @@ -65,9 +65,10 @@ public final class HazelcastConstants { public static final int ADD_ALL_OPERATION = 9; public static final int REMOVE_ALL_OPERATION = 10; public static final int RETAIN_ALL_OPERATION = 11; + public static final int EVICT_OPERATION = 12; // multimap - public static final int REMOVEVALUE_OPERATION = 12; + public static final int REMOVEVALUE_OPERATION = 14; // atomic numbers public static final int INCREMENT_OPERATION = 20; http://git-wip-us.apache.org/repos/asf/camel/blob/30558012/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapProducer.java b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapProducer.java index 75de1d2..ba459b0 100644 --- a/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapProducer.java +++ b/components/camel-hazelcast/src/main/java/org/apache/camel/component/hazelcast/map/HazelcastMapProducer.java @@ -118,6 +118,10 @@ public class HazelcastMapProducer extends HazelcastDefaultProducer { this.clear(exchange); break; + case HazelcastConstants.EVICT_OPERATION: + this.evict(oid); + break; + default: throw new IllegalArgumentException(String.format("The value '%s' is not allowed for parameter '%s' on the MAP cache.", operation, HazelcastConstants.OPERATION)); } @@ -219,4 +223,11 @@ public class HazelcastMapProducer extends HazelcastDefaultProducer { private void clear(Exchange exchange) { this.cache.clear(); } + + /** + * Eviction operation for a specific key + */ + private void evict(Object oid) { + this.cache.evict(oid); + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/30558012/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerTest.java ---------------------------------------------------------------------- diff --git a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerTest.java b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerTest.java index a821303..c848142 100644 --- a/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerTest.java +++ b/components/camel-hazelcast/src/test/java/org/apache/camel/component/hazelcast/HazelcastMapProducerTest.java @@ -198,6 +198,14 @@ public class HazelcastMapProducerTest extends HazelcastCamelTestSupport implemen } @Test + public void testEvict() throws InterruptedException { + Map<String, Object> headers = new HashMap<String, Object>(); + headers.put(HazelcastConstants.OBJECT_ID, "4711"); + template.sendBodyAndHeaders("direct:evict", "", headers); + verify(map).evict("4711"); + } + + @Test public void testClear() throws InterruptedException { template.sendBody("direct:clear", "test"); verify(map).clear(); @@ -230,6 +238,9 @@ public class HazelcastMapProducerTest extends HazelcastCamelTestSupport implemen .to("seda:out"); from("direct:clear").setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.CLEAR_OPERATION)).to(String.format("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)); + + from("direct:evict").setHeader(HazelcastConstants.OPERATION, constant(HazelcastConstants.EVICT_OPERATION)).to(String.format("hazelcast:%sfoo", HazelcastConstants.MAP_PREFIX)) + .to("seda:out"); from("direct:putWithOperationNumber").toF("hazelcast:%sfoo?operation=%s", HazelcastConstants.MAP_PREFIX, HazelcastConstants.PUT_OPERATION); from("direct:putWithOperationName").toF("hazelcast:%sfoo?operation=put", HazelcastConstants.MAP_PREFIX);