Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Ce contenu n'est pas disponible dans la langue sélectionnée.
29.5. Predicates
Overview
Copier lienLien copié sur presse-papiers!
					You can construct predicates by testing expressions for equality. For example, the predicate, 
simple("${header.timeOfDay} == '14:30'"), tests whether the timeOfDay header in the incoming message is equal to 14:30.
				
					In addition, whenever the 
resultType is specified as a Boolean the expression is evaluated as a predicate instead of an expression. This allows the predicate syntax to be used for these expressions.
				Syntax
Copier lienLien copié sur presse-papiers!
					You can also test various parts of an exchange (headers, message body, and so on) using simple predicates. Simple predicates have the following general syntax:
				
${LHSVariable} Op RHSValue
${LHSVariable} Op RHSValue
					Where the variable on the left hand side, LHSVariable, is one of the variables shown in Table 29.1, “Variables for the Simple Language” and the value on the right hand side, RHSValue, is one of the following:
				
- Another variable,${RHSVariable}.
- A string literal, enclosed in single quotes,' '.
- A numeric constant, enclosed in single quotes,' '.
- The null object,null.
					The simple language always attempts to convert the RHS value to the type of the LHS value.
				
Note
						While the simple language will attempt to convert the RHS, depending on the operator the LHS may need to be cast into the appropriate Type before the comparison is made.
					
Examples
Copier lienLien copié sur presse-papiers!
					For example, you can perform simple string comparisons and numerical comparisons as follows:
				
simple("${in.header.user} == 'john'")
simple("${in.header.number} > '100'")  // String literal can be converted to integer
simple("${in.header.user} == 'john'")
simple("${in.header.number} > '100'")  // String literal can be converted to integer
					You can test whether the left hand side is a member of a comma-separated list, as follows:
				
simple("${in.header.type} in 'gold,silver'")
simple("${in.header.type} in 'gold,silver'")
					You can test whether the left hand side matches a regular expression, as follows:
				
simple("${in.header.number} regex '\d{4}'")
simple("${in.header.number} regex '\d{4}'")
					You can test the type of the left hand side using the 
is operator, as follows:
				simple("${in.header.type} is 'java.lang.String'")
simple("${in.header.type} is 'String'") // You can abbreviate java.lang. types
simple("${in.header.type} is 'java.lang.String'")
simple("${in.header.type} is 'String'") // You can abbreviate java.lang. types
					You can test whether the left hand side lies in a specified numerical range (where the range is inclusive), as follows:
				
simple("${in.header.number} range '100..199'")
simple("${in.header.number} range '100..199'")Conjunctions
Copier lienLien copié sur presse-papiers!
					You can also combine predicates using the logical conjunctions, 
&& and ||.
				
					For example, here is an expression using the 
&& conjunction (logical and):
				simple("${in.header.title} contains 'Camel' && ${in.header.type} == 'gold'")
simple("${in.header.title} contains 'Camel' && ${in.header.type} == 'gold'")
					And here is an expression using the 
|| conjunction (logical inclusive or):
				simple("${in.header.title} contains 'Camel' || ${in.header.type} == 'gold'")
simple("${in.header.title} contains 'Camel' || ${in.header.type} == 'gold'")