Groovy
Camel supports Groovy among other Scripting Languages to allow an Expression or Predicate to be used in the DSL or Xml Configuration.
To use a Groovy expression use the following Java code
... groovy("someGroovyExpression") ...
For example you could use the groovy function to create an Predicate in a Message Filter or as an Expression for a Recipient List
Dependency
You should add the camel-groovy dependeny when using Groovy language with Camel. The generic camel-script is not optimized for best Groovy experience, and hence you should add camel-groovy as dependency.
Customizing Groovy Shell
Sometimes you may need to use custom GroovyShell
instance in your Groovy expressions. To provide custom GroovyShell
, add implementation of the org.apache.camel.language.groovy.GroovyShellFactory
SPI interface to your Camel registry. For example after adding the following bean to your Spring context...
public class CustomGroovyShellFactory implements GroovyShellFactory { public GroovyShell createGroovyShell(Exchange exchange) { ImportCustomizer importCustomizer = new ImportCustomizer(); importCustomizer.addStaticStars("com.example.Utils"); CompilerConfiguration configuration = new CompilerConfiguration(); configuration.addCompilationCustomizers(importCustomizer); return new GroovyShell(configuration); } }
...Camel will use your custom GroovyShell instance (containing your custom static imports), instead of the default one.
Example
// lets route if a line item is over $100 from("queue:foo").filter(groovy("request.lineItems.any { i -> i.value > 100 }")).to("queue:bar")
And the Spring DSL:
<route> <from uri="queue:foo"/> <filter> <groovy>request.lineItems.any { i -> i.value > 100 }</groovy> <to uri="queue:bar"/> </filter> </route>