blob: e71ac4eb17ee2dc9278a5b08f8d29db769f08b8e [file] [log] [blame]
[[Expression-Expressions]]
Expressions
~~~~~~~~~~~
Expressions and Predicates can then be used to
create the various link:enterprise-integration-patterns.html[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
* <<bean-language,Bean Language>> for using Java for expressions
* <<constant-language,Constant>>
* the unified <<el-language,EL>> from JSP and JSF
* <<header-language,Header>>
* <<jsonpath-language,JSonPath>>
* <<jxpath-language,JXPath>>
* <<mvel-component,Mvel>>
* <<ognl-language,OGNL>>
* <<ref-language,Ref Language>>
* ExchangeProperty
Property
* Scripting Languages such as
** BeanShell
** JavaScript
** <<groovy-language,Groovy>>
** <<python-language,Python>>
** <<php-language,PHP>>
** <<ruby-language,Ruby>>
* <<simple-language,Simple>>
** <<file-language,File Language>>
* <<spel-language,Spring Expression Language>>
* <<sql-component,SQL>>
* Tokenizer
* <<xpath-language,XPath>>
* <<xquery-component,XQuery>>
* VTD-XML
Most of these languages is also supported used as
link:annotation-based-expression-language.html[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,
<<groovy-language,Groovy>>, <<groovy-language,PHP>>, <<groovy-language,Python>>
and <<ruby-language,Ruby>> |http://camel.apache.org/maven/current/camel-script/apidocs/org/apache/camel/builder/script/ScriptBuilder.html[org.apache.camel.builder.script.ScriptBuilder]
|<<sql-component,SQL>> |http://camel.apache.org/maven/current/camel-josql/apidocs/org/apache/camel/builder/sql/SqlBuilder.html[org.apache.camel.builder.josql.SqlBuilder]
|<<xpath-language,XPath>> |http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/builder/xml/XPathBuilder.html[org.apache.camel.builder.xml.XPathBuilder]
|<<xquery-component,XQuery>> |http://camel.apache.org/maven/current/camel-saxon/apidocs/org/apache/camel/builder/saxon/XQueryBuilder.html[org.apache.camel.builder.saxon.XQueryBuilder]
|=======================================================================
[[Expression-SeeAlso]]
See Also
++++++++
* Predicate