CAMEL-2939: Allow to use statements without parameters
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0592f0c8 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0592f0c8 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0592f0c8 Branch: refs/heads/master Commit: 0592f0c8e9ec0f49b6cc56cb4cea89bfdfdd3977 Parents: 69934ac Author: Gerald Quintana <gerald.quint...@zenika.com> Authored: Wed Jan 14 16:55:07 2015 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Feb 18 10:00:48 2015 +0100 ---------------------------------------------------------------------- .../component/cassandra/CassandraProducer.java | 12 ++++--- .../CassandraComponentProducerTest.java | 36 ++++++++++++++++---- 2 files changed, 36 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/0592f0c8/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java ---------------------------------------------------------------------- diff --git a/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java b/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java index cc53775..824d0eb 100644 --- a/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java +++ b/components/camel-cassandraql/src/main/java/org/apache/camel/component/cassandra/CassandraProducer.java @@ -16,8 +16,6 @@ */ package org.apache.camel.component.cassandra; -import java.util.Collection; - import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Session; @@ -27,6 +25,8 @@ import org.apache.camel.impl.DefaultProducer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Collection; + /** * Cassandra 2 CQL3 producer. * <dl> @@ -51,10 +51,12 @@ public class CassandraProducer extends DefaultProducer { } private Object[] getCqlParams(Message message) { - Object cqlParamsObj = message.getBody(Object.class); + Object cqlParamsObj = message.getBody(); Object[] cqlParams; final Class<Object[]> objectArrayClazz = Object[].class; - if (objectArrayClazz.isInstance(cqlParamsObj)) { + if (cqlParamsObj == null) { + cqlParams = null; + } else if (objectArrayClazz.isInstance(cqlParamsObj)) { cqlParams = objectArrayClazz.cast(cqlParamsObj); } else if (cqlParamsObj instanceof Collection) { final Collection cqlParamsColl = (Collection) cqlParamsObj; @@ -85,7 +87,7 @@ public class CassandraProducer extends DefaultProducer { lPreparedStatement = getEndpoint().prepareStatement(messageCql); } Session session = getEndpoint().getSessionHolder().getSession(); - if (cqlParams == null) { + if (cqlParams == null || cqlParams.length==0) { resultSet = session.execute(lPreparedStatement.bind()); } else { resultSet = session.execute(lPreparedStatement.bind(cqlParams)); http://git-wip-us.apache.org/repos/asf/camel/blob/0592f0c8/components/camel-cassandraql/src/test/java/org/apache/camel/component/cassandra/CassandraComponentProducerTest.java ---------------------------------------------------------------------- diff --git a/components/camel-cassandraql/src/test/java/org/apache/camel/component/cassandra/CassandraComponentProducerTest.java b/components/camel-cassandraql/src/test/java/org/apache/camel/component/cassandra/CassandraComponentProducerTest.java index 1755612..5780b5b 100644 --- a/components/camel-cassandraql/src/test/java/org/apache/camel/component/cassandra/CassandraComponentProducerTest.java +++ b/components/camel-cassandraql/src/test/java/org/apache/camel/component/cassandra/CassandraComponentProducerTest.java @@ -16,13 +16,7 @@ */ package org.apache.camel.component.cassandra; -import java.util.Arrays; - -import com.datastax.driver.core.Cluster; -import com.datastax.driver.core.ConsistencyLevel; -import com.datastax.driver.core.ResultSet; -import com.datastax.driver.core.Row; -import com.datastax.driver.core.Session; +import com.datastax.driver.core.*; import org.apache.camel.Produce; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; @@ -33,9 +27,14 @@ import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + public class CassandraComponentProducerTest extends CamelTestSupport { private static final String CQL = "insert into camel_user(login, first_name, last_name) values (?, ?, ?)"; + private static final String NO_PARAMETER_CQL = "select login, first_name, last_name from camel_user"; private static final String NOT_CONSISTENT_URI = "cql://localhost/camel_ks?cql=" + CQL + "&consistencyLevel=ANY"; @Rule @@ -44,6 +43,9 @@ public class CassandraComponentProducerTest extends CamelTestSupport { @Produce(uri = "direct:input") ProducerTemplate producerTemplate; + @Produce(uri = "direct:inputNoParameter") + ProducerTemplate noParameterProducerTemplate; + @Produce(uri = "direct:inputNotConsistent") ProducerTemplate notConsistentProducerTemplate; @@ -64,6 +66,8 @@ public class CassandraComponentProducerTest extends CamelTestSupport { from("direct:input") .to("cql://localhost/camel_ks?cql=" + CQL); + from("direct:inputNoParameter") + .to("cql://localhost/camel_ks?cql=" + NO_PARAMETER_CQL); from("direct:inputNotConsistent") .to(NOT_CONSISTENT_URI); } @@ -86,6 +90,24 @@ public class CassandraComponentProducerTest extends CamelTestSupport { } @Test + public void testRequestNoParameter_Null() throws Exception { + Object response = noParameterProducerTemplate.requestBody(null); + + assertNotNull(response); + assertIsInstanceOf(List.class, response); + List<Row> rows = (List<Row>) response; + } + + @Test + public void testRequestNoParameter_Empty() throws Exception { + Object response = noParameterProducerTemplate.requestBody(Collections.emptyList()); + + assertNotNull(response); + assertIsInstanceOf(List.class, response); + List<Row> rows = (List<Row>) response; + } + + @Test public void testRequestMessageCql() throws Exception { Object response = producerTemplate.requestBodyAndHeader(new Object[]{"Claus 2", "Ibsen 2", "c_ibsen"}, CassandraConstants.CQL_QUERY, "update camel_user set first_name=?, last_name=? where login=?");