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

Reply via email to