blob: 58dc8ac53997c1ddd49b30a408bc6f790b4ee99b [file] [log] [blame]
[[Expression-Expressions]]
= Expressions
Expressions and Predicates can then be used to
create the various xref:enterprise-integration-patterns.adoc[Enterprise
Integration Patterns] in the DSL or
XML Configuration like the
Recipient List. +
To support dynamic rules Camel supports pluggable
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Expression.html[Expression]
strategies using a variety of different Languages.
[[Expression-API]]
== API
If you are outside of the DSL and want to create your own
expressions you can either implement the
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Expression.html[Expression
interface], reuse one of the other builders or try the
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/builder/ExpressionBuilder.html[ExpressionBuilder
class].
[[Expression-Expression]]
=== Expression
The API for a Camel Expression is defined in the
`org.apache.camel.Expression` interface as shown:
[source,java]
-------------------------------------------------------------------------------
public interface Expression {
/**
* Returns the value of the expression on the given exchange
*
* @param exchange the message exchange on which to evaluate the expression
* @param type the expected type of the evaluation result
* @return the value of the expression
*/
<T> T evaluate(Exchange exchange, Class<T> type);
}
-------------------------------------------------------------------------------
[[Expression-Predicate]]
=== Predicate
The API for a Camel Predicate is defined in the
`org.apache.camel.Predicate` interface as shown:
[source,java]
-------------------------------------------------------------------------------
public interface Predicate {
/**
* Evaluates the predicate on the message exchange and returns true if this
* exchange matches the predicate
*
* @param exchange the message exchange
* @return true if the predicate matches
*/
boolean matches(Exchange exchange);
}
-------------------------------------------------------------------------------
[[Expression-ExpressionLanguages]]
== Expression Languages
The following languages are supported out of the box
* xref:components::bean-language.adoc[Bean Language] for using Java for expressions
* xref:constant-language.adoc[Constant]
* xref:header-language.adoc[Header]
* xref:components::jsonpath-language.adoc[JSonPath]
* xref:components::mvel-component.adoc[Mvel]
* xref:components::ognl-language.adoc[OGNL]
* xref:ref-language.adoc[Ref Language]
* ExchangeProperty / Property
* Scripting Languages such as
** BeanShell
** JavaScript
** xref:components::groovy-language.adoc[Groovy]
* xref:simple-language.adoc[Simple]
** xref:file-language.adoc[File Language]
* xref:components::spel-language.adoc[Spring Expression Language]
* xref:components::sql-component.adoc[SQL]
* Tokenizer
* xref:components::xpath-language.adoc[XPath]
* xref:components::xquery-component.adoc[XQuery]
* https://github.com/camel-extra/camel-extra/blob/master/components/camel-vtdxml/src/main/docs/vtdxml-component.adoc[VTD-XML]
Most of these languages is also supported used as
xref:parameter-binding-annotations.adoc[Annotation Based
Expression Language].
[[Expression-UsingExpressionsinyourIDE]]
== Using Expressions in your IDE
To use different expression and predicates in your IDE you need to
perform a static import of the builder class for the language(s) you
wish to use.
[width="100%",cols="20%,80%",options="header",]
|=======================================================================
|Language(s) |Builder class to import
|Scripting Languages such as
BeanShell, JavaScript,
xref:components::groovy-language.adoc[Groovy] |
|xref:components::sql-component.adoc[SQL] |
|xref:components::xpath-language.adoc[XPath] |https://github.com/apache/camel/blob/master/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathBuilder.java[org.apache.camel.builder.xml.XPathBuilder]
|xref:components::xquery-component.adoc[XQuery] |https://github.com/apache/camel/blob/master/components/camel-saxon/src/main/java/org/apache/camel/component/xquery/XQueryBuilder.java[org.apache.camel.builder.saxon.XQueryBuilder]
|=======================================================================