Repository: camel Updated Branches: refs/heads/camel-2.13.x c2ddc7ba6 -> 430d1a254 refs/heads/master 8142b4380 -> 84812de96
CAMEL-7730 plus added junit test for this bug Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7e699997 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7e699997 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7e699997 Branch: refs/heads/master Commit: 7e699997bdad65ee89129055db7f97b7dd922942 Parents: 8945cf1 Author: Roman Jakubco <rjaku...@redhat.com> Authored: Thu Aug 21 16:38:57 2014 +0200 Committer: Roman Jakubco <rjaku...@redhat.com> Committed: Thu Aug 21 16:38:57 2014 +0200 ---------------------------------------------------------------------- .../infinispan/InfinispanOperation.java | 10 +++- .../infinispan/InfinispanProducer.java | 2 +- .../infinispan/InfinispanProducerTest.java | 58 ++++++++++++++++++++ 3 files changed, 67 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/7e699997/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 ae8e18d..04ffe55 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,9 +24,11 @@ import org.slf4j.LoggerFactory; public class InfinispanOperation { private static final transient Logger LOGGER = LoggerFactory.getLogger(InfinispanOperation.class); private final BasicCache<Object, Object> cache; + private final InfinispanConfiguration configuration; - public InfinispanOperation(BasicCache<Object, Object> cache) { + public InfinispanOperation(BasicCache<Object, Object> cache, InfinispanConfiguration configuration) { this.cache = cache; + this.configuration = configuration; } public void process(Exchange exchange) { @@ -37,7 +39,11 @@ public class InfinispanOperation { private Operation getOperation(Exchange exchange) { String operation = exchange.getIn().getHeader(InfinispanConstants.OPERATION, String.class); if (operation == null) { - operation = InfinispanConstants.PUT; + if(configuration.getCommand() != null){ + operation = InfinispanConstants.OPERATION + configuration.getCommand(); + } else{ + operation = InfinispanConstants.PUT; + } } LOGGER.trace("Operation: [{}]", operation); return Operation.valueOf(operation.substring(InfinispanConstants.OPERATION.length()).toUpperCase()); http://git-wip-us.apache.org/repos/asf/camel/blob/7e699997/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 9e3037c..4063553 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 @@ -39,7 +39,7 @@ public class InfinispanProducer extends DefaultProducer { @Override public void process(Exchange exchange) throws Exception { - new InfinispanOperation(getCache(exchange)).process(exchange); + new InfinispanOperation(getCache(exchange), configuration).process(exchange); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/7e699997/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 e31fd92..7a7d003 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 @@ -19,6 +19,7 @@ package org.apache.camel.component.infinispan; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; +import org.junit.Assert; import org.junit.Test; import static org.hamcrest.CoreMatchers.nullValue; @@ -26,6 +27,9 @@ import static org.hamcrest.core.Is.is; public class InfinispanProducerTest extends InfinispanTestSupport { + private static final String COMMAND_VALUE = "commandValue"; + private static final String COMMAND_KEY = "commandKey1"; + @Test public void keyAndValueArePublishedWithDefaultOperation() throws Exception { template.send("direct:start", new Processor() { @@ -119,6 +123,51 @@ public class InfinispanProducerTest extends InfinispanTestSupport { assertThat(currentCache().isEmpty(), is(true)); } + @Test + public void testUriCommandOption() throws Exception { + template.send("direct:put", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(InfinispanConstants.KEY, COMMAND_KEY); + exchange.getIn().setHeader(InfinispanConstants.VALUE, COMMAND_VALUE); + } + }); + String result = (String) currentCache().get(COMMAND_KEY); + assertEquals(COMMAND_VALUE, result); + + Exchange exchange; + exchange = template.send("direct:get", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(InfinispanConstants.KEY, COMMAND_KEY); + } + }); + String resultGet = exchange.getIn().getHeader(InfinispanConstants.RESULT, String.class); + assertEquals(COMMAND_VALUE, resultGet); + + exchange = template.send("direct:remove", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + exchange.getIn().setHeader(InfinispanConstants.KEY, COMMAND_KEY); + } + }); + String resultRemove = exchange.getIn().getHeader(InfinispanConstants.RESULT, String.class); + assertEquals(COMMAND_VALUE, resultRemove); + assertNull(currentCache().get(COMMAND_KEY)); + assertTrue(currentCache().isEmpty()); + + currentCache().put(COMMAND_KEY, COMMAND_VALUE); + currentCache().put("keyTest","valueTest"); + + template.send("direct:clear", new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + + } + }); + assertTrue(currentCache().isEmpty()); + } + @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @@ -126,6 +175,15 @@ public class InfinispanProducerTest extends InfinispanTestSupport { public void configure() { from("direct:start") .to("infinispan://localhost?cacheContainer=#cacheContainer"); + + from("direct:put") + .to("infinispan://localhost?cacheContainer=#cacheContainer&command=PUT"); + from("direct:get") + .to("infinispan://localhost?cacheContainer=#cacheContainer&command=GET"); + from("direct:remove") + .to("infinispan://localhost?cacheContainer=#cacheContainer&command=REMOVE"); + from("direct:clear") + .to("infinispan://localhost?cacheContainer=#cacheContainer&command=CLEAR"); } }; }