Content Based Router : Java DSL is not working
I have choice with many options, and using java operation for conditions. The route is going to otherwise() option always and checckFilePattern() method is not executing. from(FILE_WATCHER_DSL) .log(LoggingLevel.INFO, FileWatchDSLUtil.getFileLogPattern()) .choice() .when(checckFilePattern(header("CamelFileAbsolutePath").toString())).process(new FileConsumerProcesser()).endChoice() .otherwise().log("File Patten is not Matched. ${file:absolute.path}") .to("file:/app/work01/FileWatcherAgent/quarantine").process(new FileConsumerErrorProcesser()).stop().endChoice() .end() .log("End Processing Route"); ; private static Predicate checckFilePattern(String fileName){ logger.info("checckFilePattern==> File Name : {}", fileName); boolean flag = false; if(fileName.endsWith("txt")) flag= true; Predicate predicate = PredicateBuilder.constant(flag); logger.info("checckFilePattern==> predicate: {}", predicate); return predicate; } -- View this message in context: http://camel.465427.n5.nabble.com/Content-Based-Router-Java-DSL-is-not-working-tp5767440.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Content Based Router : Java DSL is not working
Hi, I would suggest to split the route in smaller route using direct and then check from(FILE_WATCHER_DSL) .log(LoggingLevel.INFO, FileWatchDSLUtil.getFileLogPattern()) .choice() .when(checckFilePattern(header("CamelFileAbsolutePath").toString())) .to(direct:process) .otherwise() .to(direct:processOtherwise) place the logic in respective direct endpoints. -- View this message in context: http://camel.465427.n5.nabble.com/Content-Based-Router-Java-DSL-is-not-working-tp5767440p5767443.html Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Content Based Router : Java DSL is not working
Hi > .when(checckFilePattern(header("CamelFileAbsolutePath").toString())). This is wrong. This code is only invoked once to setup the routes. Use a bean as predicate instead of header for dynamic, and just write it as plain java code public static boolean checkPattern(@Header("CamelFileAbsolutePath") path) { ... } And use a bean as the predicate. On Mon, May 25, 2015 at 9:33 AM, Kondalarv wrote: > I have choice with many options, and using java operation for conditions. > The route is going to otherwise() option always and checckFilePattern() > method is not executing. > > > from(FILE_WATCHER_DSL) > .log(LoggingLevel.INFO, FileWatchDSLUtil.getFileLogPattern()) > .choice() > > .when(checckFilePattern(header("CamelFileAbsolutePath").toString())).process(new > FileConsumerProcesser()).endChoice() > .otherwise().log("File Patten is not Matched. > ${file:absolute.path}") > > .to("file:/app/work01/FileWatcherAgent/quarantine").process(new > FileConsumerErrorProcesser()).stop().endChoice() > .end() > .log("End Processing Route"); > ; > > > private static Predicate checckFilePattern(String fileName){ > logger.info("checckFilePattern==> File Name : {}", fileName); > boolean flag = false; > if(fileName.endsWith("txt")) flag= true; > Predicate predicate = PredicateBuilder.constant(flag); > logger.info("checckFilePattern==> predicate: {}", predicate); > return predicate; > } > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Content-Based-Router-Java-DSL-is-not-working-tp5767440.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen - Red Hat, Inc. Email: cib...@redhat.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen hawtio: http://hawt.io/ fabric8: http://fabric8.io/
Re: Content Based Router : Java DSL is not working
It looks like your Predicate is a static now, which cannot take the message header as parameter. Please take a look at the Bean Language[1], it shows you how to write a right one. [1]http://camel.apache.org/bean-language.html -- Willem Jiang Red Hat, Inc. Web: http://www.redhat.com Blog: http://willemjiang.blogspot.com (English) http://jnn.iteye.com (Chinese) Twitter: willemjiang Weibo: 姜宁willem On May 25, 2015 at 3:33:38 PM, Kondalarv (kondala.sou...@gmail.com) wrote: > I have choice with many options, and using java operation for conditions. > The route is going to otherwise() option always and checckFilePattern() > method is not executing. > > > from(FILE_WATCHER_DSL) > .log(LoggingLevel.INFO, FileWatchDSLUtil.getFileLogPattern()) > .choice() > > .when(checckFilePattern(header("CamelFileAbsolutePath").toString())).process(new > > FileConsumerProcesser()).endChoice() > .otherwise().log("File Patten is not Matched. ${file:absolute.path}") > .to("file:/app/work01/FileWatcherAgent/quarantine").process(new > FileConsumerErrorProcesser()).stop().endChoice() > .end() > .log("End Processing Route"); > ; > > > private static Predicate checckFilePattern(String fileName){ > logger.info("checckFilePattern==> File Name : {}", fileName); > boolean flag = false; > if(fileName.endsWith("txt")) flag= true; > Predicate predicate = PredicateBuilder.constant(flag); > logger.info("checckFilePattern==> predicate: {}", predicate); > return predicate; > } > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Content-Based-Router-Java-DSL-is-not-working-tp5767440.html > > Sent from the Camel - Users mailing list archive at Nabble.com. >
Re: Content Based Router : Java DSL is not working
How to get EndPoint File Directory using camel annotation, I am getting "preMove" directory from Headers, not EndPoint Dir. Looks like I need @Exchange annotation but it is not available. ((FileEndpoint)exchange.getFromEndpoint()).getConfiguration().getDirectory(); Please help me on this. -- View this message in context: http://camel.465427.n5.nabble.com/Content-Based-Router-Java-DSL-is-not-working-tp5767440p5767576.html Sent from the Camel - Users mailing list archive at Nabble.com.