You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by onders <on...@gmail.com> on 2016/04/04 16:51:15 UTC

DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Hi,

I have a simple route as the following;

from("sql:select rowid vrow_id from myTable where nstatus = 0" +
MyBean.class.getName()
				+ "&onConsume=update myTable set nstatus = 1 where VROW_ID =
:#${body.vrow_id}")
						.routeId("mySimpleRoute")
						.threads(5).to("direct:generateLine")
						.end();

When i run such route, onConsume fails to update the row by giving the
stacktrace below;

(Please note that MyBean has the right attributes and setters and getters..)

org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to
invoke method: vrow_id on null due to:
org.apache.camel.component.bean.MethodNotFoundException: Method with name:
vrow_id not found on bean: MyBean[vrow_id=AAAGsJAAEAAApayAAE]
 of type: java.lang.String. Exchange[]
        at
org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:321)
        at
org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:114)
        at
org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:138)
        at
org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:126)
        at
org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:118)
        at
org.apache.camel.builder.ExpressionBuilder$34.evaluate(ExpressionBuilder.java:852)
        at
org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
        at
org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy.lookupParameter(DefaultSqlPrepareStatementStrategy.java:200)
        at
org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy$PopulateIterator.next(DefaultSqlPrepareStatementStrategy.java:267)
        at
org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy.populateStatement(DefaultSqlPrepareStatementStrategy.java:129)
        at
org.apache.camel.component.sql.DefaultSqlProcessingStrategy$1.doInPreparedStatement(DefaultSqlProcessingStrategy.java:52)
        at
org.apache.camel.component.sql.DefaultSqlProcessingStrategy$1.doInPreparedStatement(DefaultSqlProcessingStrategy.java:46)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
        at
org.apache.camel.component.sql.DefaultSqlProcessingStrategy.commit(DefaultSqlProcessingStrategy.java:46)
        at
org.apache.camel.component.sql.SqlConsumer.processBatch(SqlConsumer.java:240)
        at
org.apache.camel.component.sql.SqlConsumer$1.doInPreparedStatement(SqlConsumer.java:137)
        at
org.apache.camel.component.sql.SqlConsumer$1.doInPreparedStatement(SqlConsumer.java:110)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
        at
org.apache.camel.component.sql.SqlConsumer.poll(SqlConsumer.java:149)
        at
org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175)
        at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method
with name: vrow_id not found on bean: MyBean [vrow_id=AAAGsJAAEAAApayAAE]
 of type: java.lang.String. Exchange[]
        at
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:271)
        at
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:185)
        at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:159)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
        at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:68)
        at
org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:211)
        at
org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:317)
        ... 29 more

I tracked down the issue and found out that 

in DefaultSqlPrepareStatementStrategy class the implementation on the
following method

    protected static Object lookupParameter(String nextParam, Exchange
exchange, Object body) {
        Map<?, ?> bodyMap =
safeMap(exchange.getContext().getTypeConverter().tryConvertTo(Map.class,
body));


can not do the right conversion from MyBean to Map.class.


Is there anyone facing a similar issue and being able to get around the
problem?

Cheers
Önder



--
View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by onders <on...@gmail.com>.
thanks for the guidance.



--
View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780671.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by Claus Ibsen <cl...@gmail.com>.
The onConsume is run when the exchange is complete at the end,
whatever that means routing over threads and whatnot.

If you want to break up your route into 2 lets, then consider using
wire-tap to fork of a separeted copy that is indepdenent.



On Thu, Apr 7, 2016 at 12:12 PM, onders <on...@gmail.com> wrote:
> Hmm.. I think i misunderstood the route conceptually.
>
> What i thought was that below is a single route;
>
> from("sql:select rowid vrowid from myTable where nstatus = 0?outputClass=" +
> MyBean.class.getName()
>                 + "&onConsume=update myTable set nstatus = 1 where rowid =
> :#${body.getVrowid()}")
>
> .routeId("mySimpleRoute").threads(5).to("direct:generateLine").end();
>
>
> and the exchange becomes complete when we do
>
> ...
> ...
> // piece of code above
> .to("direct:generateLine").end();
>
> and another route is
>
> from("direct:generateLine").process(new
> LineGenerator()).to("amq:queue:jms.simpleQueue");
>
> So i expected onConsume receives MyBean as the body of exchange;
> But you are saying that exhange is complete after this line
>
>>> from("direct:generateLine").process(new
>>> LineGenerator()).to("amq:queue:jms.simpleQueue");
>
> so onConsume receives whatever is set as the body of exchange in the
> instance of LineGenerator.
>
> I think i am confused?
>
> Could you please help me understand what makes up the route?
>
> Regards
> Önder
>
>
>
>
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780663.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by onders <on...@gmail.com>.
Hmm.. I think i misunderstood the route conceptually.

What i thought was that below is a single route;

from("sql:select rowid vrowid from myTable where nstatus = 0?outputClass=" +
MyBean.class.getName() 
                + "&onConsume=update myTable set nstatus = 1 where rowid =
:#${body.getVrowid()}") 
                               
.routeId("mySimpleRoute").threads(5).to("direct:generateLine").end(); 


and the exchange becomes complete when we do 

...
...
// piece of code above
.to("direct:generateLine").end();

and another route is 

from("direct:generateLine").process(new
LineGenerator()).to("amq:queue:jms.simpleQueue");

So i expected onConsume receives MyBean as the body of exchange;
But you are saying that exhange is complete after this line

>> from("direct:generateLine").process(new
>> LineGenerator()).to("amq:queue:jms.simpleQueue");

so onConsume receives whatever is set as the body of exchange in the
instance of LineGenerator.

I think i am confused?

Could you please help me understand what makes up the route?

Regards
Önder








--
View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780663.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by Claus Ibsen <cl...@gmail.com>.
Ah yeah that is intended. The onConsume runs after the exchange is
complete. So you need to store the id somewhere in a header or
something if you modify the message body.

.setHeader("rowId").simple("${body.vrow_id}")
.threads...

And then use the header in the onConsume



On Thu, Apr 7, 2016 at 9:46 AM, onders <on...@gmail.com> wrote:
> no, this does not help :(
>
> when i debug, interestingly i can see onConsume gets exhange's body as the
> output of bean bound on from("direct:generateLine"...) route which is
> LineGenerator..
>
> from("sql:select rowid vrowid from myTable where nstatus = 0?outputClass=" +
> MyBean.class.getName()
>                 + "&onConsume=update myTable set nstatus = 1 where rowid =
> :#${body.getVrowid()}")
>
> .routeId("mySimpleRoute").threads(5).to("direct:generateLine").end();
>
> from("direct:generateLine").process(new
> LineGenerator()).to("amq:queue:jms.simpleQueue");
>
> org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to
> invoke method: getVrowid() on null due to:
> org.apache.camel.component.bean.MethodNotFoundException: Method with name:
> getVrowid() not found on bean: testField1|textField2|
>  of type: java.lang.String. Exchange[]
>         at
> org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:321)
>         at
> org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:114)
>         at
> org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:138)
>         at
> org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:126)
>         at
> org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:118)
>         at
> org.apache.camel.builder.ExpressionBuilder$34.evaluate(ExpressionBuilder.java:852)
>         at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
>         at
> org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy.lookupParameter(DefaultSqlPrepareStatementStrategy.java:200)
>         at
> org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy$PopulateIterator.next(DefaultSqlPrepareStatementStrategy.java:267)
>         at
> org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy.populateStatement(DefaultSqlPrepareStatementStrategy.java:129)
>         at
> org.apache.camel.component.sql.DefaultSqlProcessingStrategy$1.doInPreparedStatement(DefaultSqlProcessingStrategy.java:52)
>         at
> org.apache.camel.component.sql.DefaultSqlProcessingStrategy$1.doInPreparedStatement(DefaultSqlProcessingStrategy.java:46)
>         at
> org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
>         at
> org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
>         at
> org.apache.camel.component.sql.DefaultSqlProcessingStrategy.commit(DefaultSqlProcessingStrategy.java:46)
>         at
> org.apache.camel.component.sql.SqlConsumer.processBatch(SqlConsumer.java:240)
>         at
> org.apache.camel.component.sql.SqlConsumer$1.doInPreparedStatement(SqlConsumer.java:137)
>         at
> org.apache.camel.component.sql.SqlConsumer$1.doInPreparedStatement(SqlConsumer.java:110)
>         at
> org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
>         at
> org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
>         at
> org.apache.camel.component.sql.SqlConsumer.poll(SqlConsumer.java:149)
>         at
> org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175)
>         at
> org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102)
>         at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>         at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
>         at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
>         at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>         at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:744)
> Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method
> with name: getVrowid() not found on bean: testField1|textField2|
>  of type: java.lang.String. Exchange[]
>         at
> org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:271)
>         at
> org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:185)
>         at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:159)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
>         at
> org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:68)
>         at
> org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:211)
>         at
> org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:317)
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780645.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by onders <on...@gmail.com>.
no, this does not help :(

when i debug, interestingly i can see onConsume gets exhange's body as the
output of bean bound on from("direct:generateLine"...) route which is
LineGenerator..

from("sql:select rowid vrowid from myTable where nstatus = 0?outputClass=" +
MyBean.class.getName() 
                + "&onConsume=update myTable set nstatus = 1 where rowid =
:#${body.getVrowid()}") 
                               
.routeId("mySimpleRoute").threads(5).to("direct:generateLine").end(); 

from("direct:generateLine").process(new
LineGenerator()).to("amq:queue:jms.simpleQueue");

org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to
invoke method: getVrowid() on null due to:
org.apache.camel.component.bean.MethodNotFoundException: Method with name:
getVrowid() not found on bean: testField1|textField2|
 of type: java.lang.String. Exchange[]
        at
org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:321)
        at
org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:114)
        at
org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:138)
        at
org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:126)
        at
org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:118)
        at
org.apache.camel.builder.ExpressionBuilder$34.evaluate(ExpressionBuilder.java:852)
        at
org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)
        at
org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy.lookupParameter(DefaultSqlPrepareStatementStrategy.java:200)
        at
org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy$PopulateIterator.next(DefaultSqlPrepareStatementStrategy.java:267)
        at
org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy.populateStatement(DefaultSqlPrepareStatementStrategy.java:129)
        at
org.apache.camel.component.sql.DefaultSqlProcessingStrategy$1.doInPreparedStatement(DefaultSqlProcessingStrategy.java:52)
        at
org.apache.camel.component.sql.DefaultSqlProcessingStrategy$1.doInPreparedStatement(DefaultSqlProcessingStrategy.java:46)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
        at
org.apache.camel.component.sql.DefaultSqlProcessingStrategy.commit(DefaultSqlProcessingStrategy.java:46)
        at
org.apache.camel.component.sql.SqlConsumer.processBatch(SqlConsumer.java:240)
        at
org.apache.camel.component.sql.SqlConsumer$1.doInPreparedStatement(SqlConsumer.java:137)
        at
org.apache.camel.component.sql.SqlConsumer$1.doInPreparedStatement(SqlConsumer.java:110)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
        at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
        at
org.apache.camel.component.sql.SqlConsumer.poll(SqlConsumer.java:149)
        at
org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175)
        at
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
        at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method
with name: getVrowid() not found on bean: testField1|textField2|
 of type: java.lang.String. Exchange[]
        at
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:271)
        at
org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:185)
        at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:159)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
        at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:68)
        at
org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:211)
        at
org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:317)



--
View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780645.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by Claus Ibsen <cl...@gmail.com>.
Oh so you are using _ in the getters, try with

:#${body.getVrow_id()}"

I wonder if the getter detection has a glitch when you use underscores.

On Thu, Apr 7, 2016 at 7:30 AM, onders <on...@gmail.com> wrote:
> Here it is;
>
> import java.io.Serializable;
>
> public class MyBean implements Serializable {
>
>         /**
>          *
>          */
>         private static final long serialVersionUID = 1L;
>         private String vrow_id;
>
>         public String getVrow_id() {
>                 return vrow_id;
>         }
>         public void setVrow_id(String vrow_id) {
>                 this.vrow_id = vrow_id;
>         }
>
> }
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780629.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by onders <on...@gmail.com>.
Here it is;

import java.io.Serializable;

public class MyBean implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String vrow_id;
	
	public String getVrow_id() {
		return vrow_id;
	}
	public void setVrow_id(String vrow_id) {
		this.vrow_id = vrow_id;
	}

}




--
View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780629.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by Claus Ibsen <cl...@gmail.com>.
What is the bean code for that bean ?

On Thu, Apr 7, 2016 at 7:22 AM, onders <on...@gmail.com> wrote:
> I think the code snippet i sent earlier had outputClass option missing.
> (I was playing it around).
>
> So what i meant to describe was as the following...
>
>                 from("sql:select rowid vrow_id from myTable where nstatus =
> 0?*outputClass=" + MyBean.class.getName()
>                 + "*&onConsume=update myTable set nstatus = 1 where VROW_ID
> = :#${body.vrow_id}")
>
> .routeId("mySimpleRoute").threads(5).to("direct:generateLine").end();
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780627.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by onders <on...@gmail.com>.
I think the code snippet i sent earlier had outputClass option missing.
(I was playing it around).

So what i meant to describe was as the following...

		from("sql:select rowid vrow_id from myTable where nstatus =
0?*outputClass=" + MyBean.class.getName() 
                + "*&onConsume=update myTable set nstatus = 1 where VROW_ID
= :#${body.vrow_id}") 
                               
.routeId("mySimpleRoute").threads(5).to("direct:generateLine").end(); 




--
View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780627.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by Claus Ibsen <cl...@gmail.com>.
The output from the from is a Map, so you should refer to the value by
referring to the column name.

     where VROW_ID = :#vrow_id



On Thu, Apr 7, 2016 at 6:44 AM, onders <on...@gmail.com> wrote:
> Hi,
>
> This is the route code.
>
>                 from("sql:select rowid vrow_id from myTable where nstatus = 0" +
> MyBean.class.getName()
>                                 + "&onConsume=update myTable set nstatus = 1 where VROW_ID =
> :#${body.vrow_id}")
>                                                 .routeId("mySimpleRoute").threads(5).to("direct:generateLine").end();
>
>
> In the following from("direct:generateLine"), I apply bean-binding and send
> myBean.toString() to a file...
>
> Thanks again
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780624.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by onders <on...@gmail.com>.
Hi,

This is the route code.

		from("sql:select rowid vrow_id from myTable where nstatus = 0" +
MyBean.class.getName()
				+ "&onConsume=update myTable set nstatus = 1 where VROW_ID =
:#${body.vrow_id}")
						.routeId("mySimpleRoute").threads(5).to("direct:generateLine").end();


In the following from("direct:generateLine"), I apply bean-binding and send
myBean.toString() to a file...

Thanks again 



--
View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780624.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by Claus Ibsen <cl...@gmail.com>.
Can you post the route code again - it seems you cut out some details
or it was formatted poorly.


On Wed, Apr 6, 2016 at 1:50 PM, onders <on...@gmail.com> wrote:
> Did anybody have a chance to look at it?
>
> Regards
> Önder
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780585.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: DefaultSqlPrepareStatementStrategy lookupParameter when onConsume used in SQL component

Posted by onders <on...@gmail.com>.
Did anybody have a chance to look at it?

Regards
Önder



--
View this message in context: http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780585.html
Sent from the Camel - Users mailing list archive at Nabble.com.