blob: 9b7f5ac94af36a290e82f5f1efc7a0321283bd62 [file] [log] [blame]
[[Expression-Expressions]]
Expressions
~~~~~~~~~~~
Expressions and link:predicate.html[Predicates] can then be used to
create the various link:enterprise-integration-patterns.html[Enterprise
Integration Patterns] in the link:dsl.html[DSL] or
link:xml-configuration.html[Xml Configuration] like the
link:recipient-list.html[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 link:languages.html[Languages].
[[Expression-API]]
API
^^^
If you are outside of the link:dsl.html[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
* link:bean-language.html[Bean Language] for using Java for expressions
* link:constant.html[Constant]
* the unified link:el.html[EL] from JSP and JSF
* link:header.html[Header]
* link:jsonpath.html[JSonPath]
* link:jxpath.html[JXPath]
* link:mvel.html[Mvel]
* link:ognl.html[OGNL]
* link:ref-language.html[Ref Language]
* link:exchangeproperty.html[ExchangeProperty]
link:property.html[Property]
* link:scripting-languages.html[Scripting Languages] such as
** link:beanshell.html[BeanShell]
** link:javascript.html[JavaScript]
** link:groovy.html[Groovy]
** link:python.html[Python]
** link:php.html[PHP]
** link:ruby.html[Ruby]
* link:simple.html[Simple]
** link:file-language.html[File Language]
* link:spel.html[Spring Expression Language]
* link:sql.html[SQL]
* link:tokenizer.html[Tokenizer]
* link:xpath.html[XPath]
* link:xquery.html[XQuery]
* link:vtd-xml.html[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
|link:scripting-languages.html[Scripting Languages] such as
link:beanshell.html[BeanShell], link:javascript.html[JavaScript],
link:groovy.html[Groovy], link:php.html[PHP], link:python.html[Python]
and link:ruby.html[Ruby] |http://camel.apache.org/maven/current/camel-script/apidocs/org/apache/camel/builder/script/ScriptBuilder.html[org.apache.camel.builder.script.ScriptBuilder]
|link:sql.html[SQL] |http://camel.apache.org/maven/current/camel-josql/apidocs/org/apache/camel/builder/sql/SqlBuilder.html[org.apache.camel.builder.josql.SqlBuilder]
|link:xpath.html[XPath] |http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/builder/xml/XPathBuilder.html[org.apache.camel.builder.xml.XPathBuilder]
|link:xquery.html[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
++++++++
* link:predicate.html[Predicate]