Christoph (et all),
Thanks for the reply... I apologize for not being clear.. I know that is
important for effective use of everyones time. Here is the use case..
User http posts a form to servlet (camel servlet....
I have this working via the camel tomcat example as starting point.. )
Servlet validates post, parses parameters, executes query, passes query results
to velocity to generate html, returns response
It is the later that I broke down into junit tests to ensure I understand the
syntax and that each step works.. So.. what I have is..
execute query ..
I have this working via a junit that basically has a route of .
from("direct:start")
.to("mybatis:selectMyList?statementType=SelectList") .log("Tapped message body
is ${body}") .to("mock:result");
and then after the template.sendBody() .. the junit does a
List<Account> list =
mock.getReceivedExchanges().get(0).getIn().getBody(List.class);
and iterates over the returned collection .. so I know myBatis is
working as designed.
generate html from list..
I kind of have this working in a junit.. though I currently do not
execute myBatis via a route.. I execute it as I always have..
I execute this .. (mainly because I am struggling to link the routes..
)
myList = mySqlSession.selectList("selectMyList"); // pojo style
myBaits.
template.requestBody("direct:start", myList);
my route looks like..
from("direct:start") // start from camel itself .. no input queue
.to("velocity:myVelocityTemplate.vm") // run velocity against input
message
.to("file://target/subfolder") // write the output of the velocity
to a file.
;
where I am trying to get to is something like this..
route looks like...
from("direct:start") // start from camel itself .. no input queue
.to("mybatis:selectMyList?statementType=SelectList")
.log("Tapped message body is ${body}")
.to("velocity:myVelocityTemplate.vm") // run velocity against input
message
.to("file://target/subfolder") // write the output of the velocity
to a file.
;
and eventually .. burry all that into a config.. using the example tomcat
servlet as my starting point..
So..finally.. to provide response to your questions..
> A: Are you executing this example as unit test? If so, why don't you apply
> the ProducerTemplate and simply pass the list when executing the sendBody()
> operation?
I tried following the Camel In Action book's logic of an anonymous
inner class "new Processor()..", but that seems to have moved to an interface
now. I will look into the ProducerTemplate...
> B: We'll, ... you probably need to send it somewhere via the to() statement,
> e.g. to the jetty component or any other
I need to send to the servlet output stream as the use case is post
form.. return formatted response..
I was just going to tackle this problem in a plain old servlet, but
thought I would use this as an opportunity to learn camel's EIP capabilities.
;)
Kind Regards,
Michael L. Conneen
Information Integrators, Inc.
http://www.infointegrators.com
PGP Key: http://mconneen.infointegrators.net/mconneen.asc
On Jun 3, 2013, at 02:55 , Christoph Emmersberger wrote:
> Hi Michael,
>
> let me try to ask some questions:
>
> A: Are you executing this example as unit test? If so, why don't you apply
> the ProducerTemplate and simply pass the list when executing the sendBody()
> operation?
> B: We'll, ... you probably need to send it somewhere via the to() statement,
> e.g. to the jetty component or any other.
>
> Cheers,
>
> - Christoph
>
> On Jun 2, 2013, at 11:01 PM, Conneen Michael wrote:
>
>> Folks,
>>
>> I suspect I am a stones throw away from the "ah ha" moment.. but I cannot
>> seem to get there.. I am a newbie so I purchased and downloaded the Camel
>> In Action ebook... Great overview and has gotten me this far.. I do have
>> "some" of the individual pieces working.. I just cannot figure out how to
>> build the route correctly.
>>
>> I have searched the camel user forum for "mybatis selectlist velocity" ...
>> but have yet to find what I am looking for...
>>
>> Here is what I want to do..
>> 1. Run camel using a servlet endpoint as the starting point.
>> From the tomcat example, got this working and mostly understand the
>> spring configuration...
>>
>> 2. Parse off a parameter and pass into a myBatis select list. ..
>> I have worked with myBatis a lot from POJOs... so I have both POJOs..
>> and I think a direct junit test of the mybatis route..
>>
>> 3. Route the query results to velocity to produce an html table. ...
>> I have junit working where I pass a list via
>> template.requestBody("direct:in", list);
>>
>> 4. Return the results of the velocity template as the html response
>> Have not tackled this yet. Trying to get routes 2 and 3 above first..
>>
>> Things I cannot figure out..
>> A. via "to" routing syntax, how do I provide the appropriate list
>> collection to velocity ? I know the raw syntax is
>> List<?> list =
>> mock.getReceivedExchanges().get(0).getIn().getBody(List.class);
>> but velocity is expecting the collection as part of the body..
>>
>> B. how do I pull the velocity results out and concatenate with my desired
>> html output stream?
>>
>> Any pointers to my "ah ha" moment much appreciated..
>