Hi! I am trying to learn about the SQL component. I found an
example[7], SqlRouteTest, and have tried to apply some debugging[5], and
tracing[6] to it. Even with logging turned all the way up[8] I don't get
tracing output. Using the debugger I see the route that starts with
direct:simple being called.
My question is why does the insert route[2] work and the select route[3]
fail? The debug output[8] shows that the setUp() method is inserting
several rows into the database. When I run SqlRouteTest. testSimpleBody I
get a stack trace[9] that I fail to see a clue in.
Would you please give me any suggestions or tell me what I'm doing wrong
please?
When I step through things using eclipse's debugger I see this in
org.apache.camel.component.sql.SqlProducer around line 91. The first call
to ps.getResultSet() returns non-null, the second call to ps.getResultSet()
returns null.
if (isResultSet) {
ResultSet rs = ps.getResultSet();
SqlOutputType outputType =
getEndpoint().getOutputType();
log.trace("Got result list from query: {},
outputType={}", rs, outputType);
if (outputType == SqlOutputType.SelectList) {
List<Map<String, Object>> data =
getEndpoint().queryForList(ps.getResultSet());
Thanks! --Matt Payne; cell: (402) 208 8787
[1] https://github.com/payne/CamelSqlDemo/tree/master/SqlRouteTestDemo
[2]
from("direct:insert")
.to("sql:insert into projects values (#, #, #)")
.to("mock:result");
[3]
from("direct:simple")
.tracing()
.to("sql:select * from projects where license = # order by id")
.tracing()
.to("mock:result");
[4] http://camel.apache.org/sql-component.html
[5] http://camel.apache.org/debugger.html
[6] http://camel.apache.org/tracer.html
[7]
https://svn.apache.org/repos/asf/camel/sandbox/tuning-experiment/components/camel-sql/src/test/java/org/apache/camel/component/sql/SqlRouteTest.java
[8]
https://github.com/payne/CamelSqlDemo/blob/master/SqlRouteTestDemo/target/camel-sql-test.log
[9]
Caused by: java.lang.NullPointerException
at
org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:91)
at
org.apache.camel.component.sql.SqlEndpoint.queryForList(SqlEndpoint.java:258)
at
org.apache.camel.component.sql.SqlProducer$1.doInPreparedStatement(SqlProducer.java:96)
at
org.apache.camel.component.sql.SqlProducer$1.doInPreparedStatement(SqlProducer.java:60)
at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589)
at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617)
at
org.apache.camel.component.sql.SqlProducer.process(SqlProducer.java:60)
at
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:110)
at
org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:163)
at org.apache.camel.processor.interceptor.Debug$1.process(Debug.java:50)
at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:91)
at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:51)
at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at
org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:73)
at
org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:378)
at
org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:346)
at
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:242)
at
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:346)
at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:184)
at
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:137)
... 49 more