Author: romkal
Date: Mon Oct 19 10:49:03 2009
New Revision: 826630

URL: http://svn.apache.org/viewvc?rev=826630&view=rev
Log:
CAMEL-2077: Ignoring message body if sql query doesn't have any parameters

Modified:
    
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
    
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java

Modified: 
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java?rev=826630&r1=826629&r2=826630&view=diff
==============================================================================
--- 
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
 (original)
+++ 
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
 Mon Oct 19 10:49:03 2009
@@ -44,15 +44,16 @@
             public Object doInPreparedStatement(PreparedStatement ps) throws 
SQLException, DataAccessException {
                 int argNumber = 1;
 
-                if (exchange.getIn().getBody() != null) {
+                // number of parameters must match
+                int expected = ps.getParameterMetaData().getParameterCount();
+
+                if (expected > 0 && exchange.getIn().getBody() != null) {
                     Iterator<?> iterator = 
exchange.getIn().getBody(Iterator.class);
                     while (iterator != null && iterator.hasNext()) {
                         ps.setObject(argNumber++, iterator.next());
                     }
                 }
 
-                // number of parameters must match
-                int expected = ps.getParameterMetaData().getParameterCount();
                 if (argNumber - 1 != expected) {
                     throw new SQLException("Number of parameters mismatch. 
Expected: " + expected + ", was:" + (argNumber - 1));
                 }

Modified: 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java?rev=826630&r1=826629&r2=826630&view=diff
==============================================================================
--- 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
 (original)
+++ 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
 Mon Oct 19 10:49:03 2009
@@ -152,6 +152,18 @@
         assertEquals("Camel", row.get("PROJECT"));
     }
     
+    @Test
+    public void testBodyButNoParams() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        template.sendBody("direct:no-param", "Mock body");
+        mock.assertIsSatisfied();
+        List received = assertIsInstanceOf(List.class, 
mock.getReceivedExchanges().get(0).getIn().getBody());
+        Map row = assertIsInstanceOf(Map.class, received.get(0));
+        assertEquals("Camel", row.get("PROJECT"));
+    }
+
+    
     @Before
     public void setUp() throws Exception {
         Class.forName(driverClass);


Reply via email to