camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christophe Pache <christophe.pa...@crossing-tech.com>
Subject error clauses and reste of the route in scala
Date Fri, 23 May 2014 10:59:23 GMT
Hello everyone,

I'm currently working on error clauses and I got some strange behaviour 
with camel in Scala. I would really enjoy having some feedback on what 
I've tried to do because I haven't found any help on that. I saw Java 
example that seamed to work and it's really currious for me.


  My Problem is to separate the exception handling route from the main 
route. I know this is not realistic use. I would like to have a main 
route such as : from(direct).process.to(mock) while allowing the 
IllegalArgumentException to continue the main flow. The following code 
doesn't compile with error "value to is not a member of ?0". When I try 
to separate the route into separated parts, the type gets to Any instead 
of ProcessorDefinition of Any which I thing could be the error. I don't 
get this compilation error if I remove the processor from the route.

     class MyRoute extends RouteBuilder {

       def configure() {

         val exceptionProcessor = new Processor {
           def process(ex: Exchange) {
             throw ex.getIn.getBody(classOf[Exception])
           }
         }

from("direct:input").onException(classOf[IllegalArgumentException])
.continued(true).end().process(exceptionProcessor).to("mock:toto")

       }
     }

Even harder to understand, the following is working well:

def configure() {

         val exceptionProcessor = new Processor {
           def process(ex: Exchange) {
             throw ex.getIn.getBody(classOf[Exception])
           }
         }

         onException(classOf[IllegalArgumentException]).continued(new 
Predicate {
           override def matches(exchange: Exchange): Boolean = {
exchange.getIn().getBody(classOf[Exception]).getMessage.contains("toto")
           }
         })

from("direct:input").process(exceptionProcessor).to("mock:output")
       }
     }

Thanks a lot for any comment/help.

Christophe

Mime
View raw message