Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Camel supports a pluggable interface called Predicate which can be used to integrate a dynamic predicate into Enterprise Integration Patterns such as when using the Message Filter or Content Based Router.

...

You can also create compound predicates using boolean operators such as and, or, not and many others.

Currently this feature is only available in the Java-based DSLs, but not in the Spring nor Blueprint DSLs.

Using the PredicateBuilder class, you can combine predicates from different Expression Languages based on logical operators and comparison operators:

  • not, and, or
  • isNull, isNotNull
  • isEqualTo, isGreaterThan, isLessThan
  • startsWith, endsWith
  • in ("any of X predicates stands true")

Additionally, with PredicateBuilder you can create Regular Expressions and use them as predicates, applying them to the result of an expression, e.g. PredicateBuilder.regex(header("foo"), "\d{4}") applies the regular expression to the header = foo.

Combining different Expression Languages is also possible, e.g.:

Code Block

PredicateBuilder.and(XPathBuilder.xpath("/bookings/flights"), simple("${property.country = 'Spain'}"))

The sample below demonstrates thisfurther use cases:

Wiki Markup
{snippet:id=e1|lang=java|url=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ChoiceCompoundPredicateTest.java}

...

Camel supports extensible Predicates using multiple Languages; the following languages are supported out of the box

Include Page
CAMEL:Languages SupportedCAMEL:
Languages Supported

You can easily write your own plugin predicate by implementing the Predicate interface.

There are also a number of helper builders available such as the PredicateBuilder class

Using Predicates in your IDE

Include Page
CAMEL:Using Languages In IDECAMEL:
Using Languages In IDE

See Also