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=?");

Reply via email to