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 4b35801e262 CAMEL-21086: Add more complex functions to csimple language
4b35801e262 is described below
commit 4b35801e262c3dcd9531e5073cc8acc447a9bc47
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Aug 15 11:52:04 2024 +0200
CAMEL-21086: Add more complex functions to csimple language
---
.../language/csimple/CSimpleCodeGenerator.java | 14 +++++++++++++-
.../camel/language/csimple/CSimpleHelper.java | 19 ++-----------------
.../simple/ast/SimpleFunctionExpression.java | 21 +++++++++++++++++++--
3 files changed, 34 insertions(+), 20 deletions(-)
diff --git
a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleCodeGenerator.java
b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleCodeGenerator.java
index f6304517930..1f53489f431 100644
---
a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleCodeGenerator.java
+++
b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleCodeGenerator.java
@@ -22,6 +22,8 @@ import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.camel.util.StringHelper;
+
/**
* Source code generate for csimple language.
*
@@ -138,6 +140,11 @@ public class CSimpleCodeGenerator {
script = "\"" + script + "\"";
}
}
+ String uuid = null;
+ if (script.startsWith(" UuidGenerator uuid")) {
+ uuid = StringHelper.before(script, "\n") + "\n";
+ script = StringHelper.after(script, "\n");
+ }
if (!script.contains("return ")) {
sb.append("return ");
@@ -162,7 +169,12 @@ public class CSimpleCodeGenerator {
sb.append("}\n");
sb.append("\n");
- return new CSimpleGeneratedCode(qn + "." + name, sb.toString());
+ String code = sb.toString();
+ if (uuid != null) {
+ code = code.replace(" UuidGenerator uuid;\n", uuid);
+ }
+
+ return new CSimpleGeneratedCode(qn + "." + name, code);
}
private String alias(String script) {
diff --git
a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index b572aef5478..1ff46c5534e 100644
---
a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++
b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -43,14 +43,10 @@ import org.apache.camel.spi.Language;
import org.apache.camel.spi.PropertiesComponent;
import org.apache.camel.spi.UuidGenerator;
import org.apache.camel.support.CamelContextHelper;
-import org.apache.camel.support.ClassicUuidGenerator;
-import org.apache.camel.support.DefaultUuidGenerator;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.support.GroupIterator;
import org.apache.camel.support.LanguageHelper;
import org.apache.camel.support.MessageHelper;
-import org.apache.camel.support.ShortUuidGenerator;
-import org.apache.camel.support.SimpleUuidGenerator;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.InetAddressUtil;
import org.apache.camel.util.ObjectHelper;
@@ -744,18 +740,7 @@ public final class CSimpleHelper {
return null;
}
- public static UuidGenerator createUuidGenerator(Exchange exchange, String
generator) {
- if ("classic".equalsIgnoreCase(generator)) {
- return new ClassicUuidGenerator();
- } else if ("short".equals(generator)) {
- return new ShortUuidGenerator();
- } else if ("simple".equals(generator)) {
- return new SimpleUuidGenerator();
- } else if (generator == null || "default".equals(generator)) {
- return new DefaultUuidGenerator();
- } else {
- // lookup custom generator
- return CamelContextHelper.mandatoryLookup(exchange.getContext(),
generator, UuidGenerator.class);
- }
+ public static UuidGenerator customUuidGenerator(Exchange exchange, String
generator) {
+ return CamelContextHelper.mandatoryLookup(exchange.getContext(),
generator, UuidGenerator.class);
}
}
diff --git
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index e0801692538..8f73cdcfec5 100644
---
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -1892,8 +1892,25 @@ public class SimpleFunctionExpression extends
LiteralExpression {
if (generator == null) {
generator = "default";
}
- generator = StringQuoteHelper.doubleQuote(generator);
- return "if (uuid == null) uuid = createUuidGenerator(exchange, " +
generator + "); return uuid.generateUuid();";
+ StringBuilder sb = new StringBuilder();
+ if ("classic".equals(generator)) {
+ sb.append(" UuidGenerator uuid = new
org.apache.camel.support.ClassicUuidGenerator();\n");
+ sb.append("return uuid.generateUuid();");
+ } else if ("short".equals(generator)) {
+ sb.append(" UuidGenerator uuid = new
org.apache.camel.support.ShortUuidGenerator();\n");
+ sb.append("return uuid.generateUuid();");
+ } else if ("simple".equals(generator)) {
+ sb.append(" UuidGenerator uuid = new
org.apache.camel.support.SimpleUuidGenerator();\n");
+ sb.append("return uuid.generateUuid();");
+ } else if ("default".equals(generator)) {
+ sb.append(" UuidGenerator uuid = new
org.apache.camel.support.DefaultUuidGenerator();\n");
+ sb.append("return uuid.generateUuid();");
+ } else {
+ generator = StringQuoteHelper.doubleQuote(generator);
+ sb.append("if (uuid == null) uuid =
customUuidGenerator(exchange, ").append(generator)
+ .append("); return uuid.generateUuid();");
+ }
+ return sb.toString();
}
// iif function