| [[Expression-Expressions]] |
| Expressions |
| ~~~~~~~~~~~ |
| |
| Expressions and Predicates can then be used to |
| create the various link: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 |
| |
| * <<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>> |
| * 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 |
| 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 |
| |