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);