On Wed, Apr 15, 2009 at 7:24 PM, javadevel <javadeve...@yahoo.com> wrote: > > Clause, > > The fact that iBatis was sending an empty List (java.util.ArrayList) that > could be confused as a legitimate response by the camel router was pretty > obvious from the logs, I just thought that the camel iBatis component would > know about this and check to see weather the List is empty or not before > passing the message to the next hop. > > This is what I doing now > > from(“ibatis:selectunprocessedtrades”) > .filter().method("traderoutehelper", "hasItems")//helper bean to check the > list is empty or not > .process(processtrades) > .to(“ibatis:updateTrade”); > > Thanks again for all your help and quick response and let me know if you see > anything wrong with the above solution. You solution is perfect.
I have created a ticket in JIRA to allow a new option to the iBatis component https://issues.apache.org/activemq/browse/CAMEL-1534 For some an empty result is also an answer so we need to support both cases. And maybe the default could be to not route empty results :) > > > Claus Ibsen-2 wrote: >> >> Hi >> >> Its not that unclear iBatis is for interacting with a database and in >> your from it will execute a SELECT >> query and return the response from the database, regardless if there >> are 0 or N number of rows. >> >> So a response with 0 rows is just as legal as a response with N rows, >> i.e. the query as executed successful. >> >> If you do not want to process it further you can use the Filter EIP to >> filter out responses with 0 rows. >> http://camel.apache.org/message-filter.html >> >> However we could add some new option to the iBatis component to allow >> it to cater for this so it wont route >> if there are 0 rows returned in a SELECT query. Please feel free to >> add a JIRA ticket for this >> http://camel.apache.org/support.html >> ( there is a link to issue tracker ) >> >> >> On Tue, Apr 14, 2009 at 8:30 PM, javadevel <javadeve...@yahoo.com> wrote: >>> >>> Here is my route >>> >>> from(“ibatis:selectunprocessedtrades”) >>> .process(processtrades) >>> .to(“ibatis:updateTrade”); >>> >>> What I would expect is that the camel route will be executed when the >>> selectunprocessedtrades fetches rows of unprocessed trades, however, the >>> route gets executed regardless of the result. This behavior, in my >>> observation, is inconsistent with the rest of camel components. For >>> example >>> if we are polling a file >>> from(“file:c:/work/”).to(“jms:processqueue) >>> the route will only be executed when there is a file in the c:/work >>> directory. >>> >>> Please advise. >>> >>> -- >>> View this message in context: >>> http://www.nabble.com/IBatis-component-inconsistency-tp23045297p23045297.html >>> Sent from the Camel - Users (activemq) mailing list archive at >>> Nabble.com. >>> >>> >> >> >> >> -- >> Claus Ibsen >> Apache Camel Committer >> >> Open Source Integration: http://fusesource.com >> Blog: http://davsclaus.blogspot.com/ >> Twitter: http://twitter.com/davsclaus >> Apache Camel Reference Card: >> http://refcardz.dzone.com/refcardz/enterprise-integration >> >> > > -- > View this message in context: > http://www.nabble.com/IBatis-component-inconsistency-tp23045297p23063410.html > Sent from the Camel - Users (activemq) mailing list archive at Nabble.com. > > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus Apache Camel Reference Card: http://refcardz.dzone.com/refcardz/enterprise-integration