Hi Clause So for a header I can define a Predicate, but for a property I can't?
Example with header: (that works?) Predicate isSystemActive = header("isSystemActive").isEqualTo("true"); Example with property: (that doesn’t work?) Predicate isSystemActive = exchangeProperty ("systemConfig.isActive").isEqualTo(true); So later I can use: choice().when(isSystemActive) -----Original Message----- From: Claus Ibsen <claus.ib...@gmail.com> Sent: Monday, 17 October 2022 20:49 To: users@camel.apache.org Subject: Re: Predicates Hi > exchangeProperty("systemConfig.isActive") This is not simple language, but refers to a exchange property key with the given name. You need to use simple as predicate instead of exchangeProperty On Mon, Oct 17, 2022 at 7:38 PM Reto Peter <reto.pe...@advanceit.ch> wrote: > Hi > I have a simple question about the Predicates I got a systemConfig > object, which has 2 getters/setters. > The systemConfig object is set as an exchange property. > > When I use a the simple function, that works! > from("direct:testPredicates") > .to("direct:getSystemConfig") > .choice() > .when(simple("${exchangeProperty.systemConfig.isActive} == false || > ${exchangeProperty.systemConfig.isEnabled} == false")) > .log("System is active and System is enabled") > .otherwise() > .log("System is not active or MLSSync is disabled") > .end(); > > When I try to use Predicates, then I thought this should work like this: > Before the route: > Predicate isSystemActive = > exchangeProperty("systemConfig.isActive").isEqualTo(true); > Predicate isSystemEnabled = > exchangeProperty("systemConfig.isEnabled").isEqualTo(false); > > Inside the route: > from("direct:testPredicates") > .to("direct:getSystemConfig") > .choice() > .when(and(isSystemActive, isSystemEnabled)) > .log("System is active and System is enabled") > .otherwise() > .log("System is not active or MLSSync is disabled") > .end(); > > I am using Camel 3.18.2 > -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2