This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 9fef939  CAMEL-16861: Polished groovy language
9fef939 is described below

commit 9fef939c56d643c705f56f186498c7c00ae2a9b2
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon Sep 13 18:01:34 2021 +0200

    CAMEL-16861: Polished groovy language
---
 .../src/main/docs/groovy-language.adoc             | 134 ++++++++-------------
 1 file changed, 49 insertions(+), 85 deletions(-)

diff --git a/components/camel-groovy/src/main/docs/groovy-language.adoc 
b/components/camel-groovy/src/main/docs/groovy-language.adoc
index cf56b42..d68f36d 100644
--- a/components/camel-groovy/src/main/docs/groovy-language.adoc
+++ b/components/camel-groovy/src/main/docs/groovy-language.adoc
@@ -11,30 +11,19 @@ 
include::{cq-version}@camel-quarkus:ROOT:partial$reference/languages/groovy.adoc
 
 *Since Camel {since}*
 
-Camel supports http://www.groovy-lang.org/[Groovy] to allow an
-xref:manual::expression.adoc[Expression] or 
xref:manual::predicate.adoc[Predicate] to be
-used in the xref:manual::dsl.adoc[DSL].
+Camel has support for using http://www.groovy-lang.org/[Groovy].
 
-For example you could use Groovy to create an
-Predicate in a xref:{eip-vc}:eips:filter-eip.adoc[Message
-Filter] or as an Expression for a
-xref:{eip-vc}:eips:recipientList-eip.adoc[Recipient List].
-
-To use a Groovy expression use the following Java code
+For example, you can use Groovy in a xref:manual::predicate.adoc[Predicate]
+with the xref:{eip-vc}:eips:filter-eip.adoc[Message
+Filter] EIP.
 
 [source,java]
 ---------------------------------------
 groovy("someGroovyExpression")
 ---------------------------------------
 
-For example you could use the *groovy* function to create an
-Predicate in a xref:{eip-vc}:eips:filter-eip.adoc[Message Filter] or as an 
Expression for a
-Recipient List
-
 == Groovy Options
 
-
-
 // language options: START
 The Groovy language supports 1 options, which are listed below.
 
@@ -47,19 +36,57 @@ The Groovy language supports 1 options, which are listed 
below.
 |===
 // language options: END
 
+== Examples
+
+In the example below we use a groovy script as predicate in the message filter,
+to determine if any line items is over $100:
+
+[source,java]
+------------------------------------------------------------------------------------------------
+// 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 in XML DSL:
 
+[source,xml]
+----
+<route>
+    <from uri="queue:foo"/>
+    <filter>
+        <groovy>request.lineItems.any { i -> i.value > 100 }</groovy>
+        <to uri="queue:bar"/>
+    </filter>
+</route>
+----
 
+== How to get the result from multiple statements script
+
+As the Groovy script engine evaluate method just return a `Null` if it runs a
+multiple statements script. Camel now look up the value of script result
+by using the key of "result" from the value set. If you have multiple
+statements script, you need to make sure you set the value of result
+variable as the script return value.
+
+[source,text]
+-------------------------------------------------------------
+bar = "baz";
+# some other statements ...
+# camel take the result value as the script evaluation result
+result = body * 2 + 1
+-------------------------------------------------------------
 
 == Customizing Groovy Shell
 
-Sometimes you may need to use custom `GroovyShell` instance in your
-Groovy expressions. To provide custom `GroovyShell`, add implementation
+For very special use-cases you may need to use a custom `GroovyShell` instance 
in your
+Groovy expressions. To provide the custom `GroovyShell`, add an 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...
+interface to the Camel registry.
 
 [source,java]
-----------------------------------------------------------------------
+----
 public class CustomGroovyShellFactory implements GroovyShellFactory {
 
   public GroovyShell createGroovyShell(Exchange exchange) {
@@ -71,58 +98,11 @@ public class CustomGroovyShellFactory implements 
GroovyShellFactory {
   }
 
 }
-----------------------------------------------------------------------
+----
 
-...Camel will use your custom GroovyShell instance (containing your
+Camel will then use your custom GroovyShell instance (containing your
 custom static imports), instead of the default one.
 
-=== Customizing Groovy class file name
-
-You may rarely in need of customizing generated Groovy class file name for 
debugging purposes.
-This is also possible by implementing `getFileName` method.
-
-[source,java]
-----------------------------------------------------------------------
-public class CustomGroovyShellFactory implements GroovyShellFactory {
-
-  public GroovyShell createGroovyShell(Exchange exchange) {
-    return new GroovyShell();
-  }
-
-  public String getFileName(Exchange exchange) {
-    return "Foo.groovy";
-  }
-
-}
-----------------------------------------------------------------------
-
-== Example
-
-[source,java]
-------------------------------------------------------------------------------------------------
-// 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:
-
-[source,xml]
------------------------------------------------------------------------------
-        <route>
-            <from uri="queue:foo"/>
-            <filter>
-                <groovy>request.lineItems.any { i -> i.value > 100 }</groovy>
-                <to uri="queue:bar"/>
-            </filter>
-        </route>
------------------------------------------------------------------------------
-
-== Additional arguments to ScriptingEngine
-
-You can provide additional arguments to the `ScriptingEngine` using a
-header on the Camel message with the key `CamelScriptArguments`. +
- See this example:
-
 == Loading script from external resource
 
 You can externalize the script and have Camel load it from a resource
@@ -135,22 +115,6 @@ eg to refer to a file on the classpath you can do:
 .setHeader("myHeader").groovy("resource:classpath:mygroovy.groovy")
 -------------------------------------------------------------------
 
-== How to get the result from multiple statements script
-
-As the scripteengine evaluate method just return a Null if it runs a
-multiple statements script. Camel now look up the value of script result
-by using the key of "result" from the value set. If you have multiple
-statements script, you need to make sure you set the value of result
-variable as the script return value.
-
-[source,text]
--------------------------------------------------------------
-bar = "baz";
-# some other statements ...
-# camel take the result value as the script evaluation result
-result = body * 2 + 1
--------------------------------------------------------------
-
 == Dependencies
 
 To use scripting languages in your camel routes you need to add a

Reply via email to