You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/01/23 04:44:40 UTC
svn commit: r736901 - in /camel/branches/camel-1.x: ./
components/camel-restlet/src/test/java/org/apache/camel/component/restlet/
components/camel-sql/src/main/java/org/apache/camel/component/sql/
components/camel-sql/src/test/java/org/apache/camel/com...
Author: ningjiang
Date: Thu Jan 22 19:44:40 2009
New Revision: 736901
URL: http://svn.apache.org/viewvc?rev=736901&view=rev
Log:
Merged revisions 736676 via svnmerge from
https://svn.apache.org/repos/asf/camel/trunk
........
r736676 | romkal | 2009-01-22 23:39:01 +0800 (Thu, 22 Jan 2009) | 2 lines
CAMEL-1283: Validation of correct number of parameters added
Null body allowed
........
Modified:
camel/branches/camel-1.x/ (props changed)
camel/branches/camel-1.x/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java (props changed)
camel/branches/camel-1.x/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
camel/branches/camel-1.x/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
Propchange: camel/branches/camel-1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jan 22 19:44:40 2009
@@ -1,2 +1,2 @@
/activemq/camel/trunk:732943,733749,734053,734057-734058,734064,734130,734309,734340-734342,734348,734392,734422,734727,734903,734932,735421,735427,735732
-/camel/trunk:735847,735888,736227,736562,736617-736620
+/camel/trunk:735847,735888,736227,736562,736617-736620,736676
Propchange: camel/branches/camel-1.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Propchange: camel/branches/camel-1.x/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Jan 22 19:44:40 2009
@@ -0,0 +1 @@
+/camel/trunk/components/camel-restlet/src/test/java/org/apache/camel/component/restlet/RestletRouteBuilderTest.java:736676
Modified: camel/branches/camel-1.x/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java?rev=736901&r1=736900&r2=736901&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java (original)
+++ camel/branches/camel-1.x/components/camel-sql/src/main/java/org/apache/camel/component/sql/SqlProducer.java Thu Jan 22 19:44:40 2009
@@ -22,6 +22,7 @@
import java.util.List;
import org.apache.camel.Exchange;
+import org.apache.camel.NoTypeConversionAvailableException;
import org.apache.camel.impl.DefaultProducer;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.ColumnMapRowMapper;
@@ -45,10 +46,20 @@
public Object doInPreparedStatement(PreparedStatement ps) throws SQLException,
DataAccessException {
int argNumber = 1;
- for (Iterator<?> i = exchange.getIn().getBody(Iterator.class); i.hasNext();) {
- ps.setObject(argNumber++, i.next());
+ try {
+ Iterator<?> iterator = exchange.getIn().getBody(Iterator.class);
+ while (iterator != null && iterator.hasNext()) {
+ ps.setObject(argNumber++, iterator.next());
+ }
+ } catch (NoTypeConversionAvailableException e) {
+ // ignored - assumed no parameters have to be used
}
+ if (argNumber - 1 != ps.getParameterMetaData().getParameterCount()) {
+ throw new SQLException("To less parameters set");
+ }
+
boolean isResultSet = ps.execute();
+
if (isResultSet) {
RowMapperResultSetExtractor mapper = new RowMapperResultSetExtractor(new ColumnMapRowMapper());
List<?> result = (List<?>) mapper.extractData(ps.getResultSet());
Modified: camel/branches/camel-1.x/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java?rev=736901&r1=736900&r2=736901&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java (original)
+++ camel/branches/camel-1.x/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java Thu Jan 22 19:44:40 2009
@@ -23,9 +23,12 @@
import javax.sql.DataSource;
import org.apache.camel.ContextTestSupport;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.springframework.dao.DataAccessException;
import org.springframework.dao.EmptyResultDataAccessException;
+import org.springframework.jdbc.UncategorizedSQLException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.SingleConnectionDataSource;
@@ -63,15 +66,26 @@
assertEquals(1, row.get("ID"));
}
- public void testBadNumberOfParameter() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(1);
- template.sendBody("direct:list", "ASF");
- mock.assertIsSatisfied();
- List received = assertIsInstanceOf(List.class, mock.getReceivedExchanges().get(0).getIn().getBody());
- assertEquals(0, received.size());
+ public void testLowNumberOfParameter() throws Exception {
+ try {
+ template.sendBody("direct:list", "ASF");
+ fail();
+ } catch (RuntimeCamelException e) {
+ // should have DataAccessException thrown
+ assertTrue("Exception thrown is wrong", e.getCause() instanceof DataAccessException);
+ }
}
+ public void testHighNumberOfParameter() throws Exception {
+ try {
+ template.sendBody("direct:simple", new Object[] {"ASF", "Foo"});
+ fail();
+ } catch (RuntimeCamelException e) {
+ // should have DataAccessException thrown
+ assertTrue("Exception thrown is wrong", e.getCause() instanceof DataAccessException);
+ }
+ }
+
public void testListResult() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(1);
@@ -119,6 +133,16 @@
assertEquals((Integer)1, actualUpdateCount);
}
+ public void testNoBody() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(1);
+ template.sendBody("direct:no-param", null);
+ 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"));
+ }
+
protected void setUp() throws Exception {
Class.forName(driverClass);
super.setUp();
@@ -145,6 +169,8 @@
getContext().getComponent("sql", SqlComponent.class).setDataSource(ds);
+ errorHandler(noErrorHandler());
+
from("direct:simple").to("sql:select * from projects where license = # order by id")
.to("mock:result");
@@ -157,6 +183,8 @@
.to("mock:result");
from("direct:insert").to("sql:insert into projects values (#, #, #)").to("mock:result");
+
+ from("direct:no-param").to("sql:select * from projects order by id").to("mock:result");
}
};
}