Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

To use a Groovy expression use the following Java code

Code Block
languagejava
...
import static org.apache.camel.builder.script.ScriptBuilder.*;

...

... 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...

Code Block
languagejava
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

Code Block
languagejava
// 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:

Code Block
xml
xml
        <route>
            <from uri="queue:foo"/>
            <filter>
                <groovy>request.lineItems.any { i -> i.value > 100 }</groovy>
                <to uri="queue:bar"/>
            </filter>
        </route>

Include Page
Scripting Languages Context
Scripting Languages Context