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

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

commit 525373c08edb29fc5dff6e938db28aac927a0b8f
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sun Nov 26 11:52:12 2023 +0100

    camel-jbang - Prototype for transform message command.
---
 .../camel/cli/connector/LocalCliConnector.java     | 120 ++++++++++-----------
 .../commands/action/TransformMessageAction.java    |  19 +---
 2 files changed, 65 insertions(+), 74 deletions(-)

diff --git 
a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
 
b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
index f992d5a0235..641569e55b9 100644
--- 
a/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
+++ 
b/dsl/camel-cli-connector/src/main/java/org/apache/camel/cli/connector/LocalCliConnector.java
@@ -493,70 +493,70 @@ public class LocalCliConnector extends ServiceSupport 
implements CliConnector, C
                 StopWatch watch = new StopWatch();
                 long timestamp = System.currentTimeMillis();
                 String language = root.getString("language");
-                String expression = 
Jsoner.unescape(root.getStringOrDefault("expression", ""));
-                String body = root.getString("body");
+                String template = Jsoner.unescape(root.getString("template"));
+                if (template.startsWith("file:")) {
+                    template = "resource:" + template;
+                }
+                String body = Jsoner.unescape(root.getString("body"));
+                InputStream is = null;
+                Object b = body;
+                Map<String, Object> map = null;
+                if (body.startsWith("file:")) {
+                    File file = new File(body.substring(5));
+                    is = new FileInputStream(file);
+                    b = IOHelper.loadText(is);
+                }
                 Collection<JsonObject> headers = root.getCollection("headers");
-                if (body != null) {
-                    InputStream is = null;
-                    Object b = body;
-                    Map<String, Object> map = null;
-                    if (body.startsWith("file:")) {
-                        File file = new File(body.substring(5));
-                        is = new FileInputStream(file);
-                        b = IOHelper.loadText(is);
-                    }
-                    if (headers != null) {
-                        map = new LinkedHashMap<>();
-                        for (JsonObject jo : headers) {
-                            map.put(jo.getString("key"), 
jo.getString("value"));
-                        }
-                    }
-                    final Object inputBody = b;
-                    final Map<String, Object> inputHeaders = map;
-
-                    Exchange out = 
camelContext.getCamelContextExtension().getExchangeFactory().create(false);
-                    try {
-                        Language lan = camelContext.resolveLanguage(language);
-                        Expression exp = lan.createExpression(expression);
-                        exp.init(camelContext);
-                        // create dummy exchange with
-                        out.setPattern(ExchangePattern.InOut);
-                        out.getMessage().setBody(inputBody);
-                        if (inputHeaders != null) {
-                            out.getMessage().setHeaders(inputHeaders);
-                        }
-                        String result = exp.evaluate(out, String.class);
-                        out.getMessage().setBody(result);
-                        IOHelper.close(is);
-                    } catch (Exception e) {
-                        out.setException(e);
+                if (headers != null) {
+                    map = new LinkedHashMap<>();
+                    for (JsonObject jo : headers) {
+                        map.put(jo.getString("key"), jo.getString("value"));
                     }
-                    LOG.trace("Updating output file: {}", outputFile);
-                    if (out.getException() != null) {
-                        JsonObject jo = new JsonObject();
-                        jo.put("language", language);
-                        jo.put("exchangeId", out.getExchangeId());
-                        jo.put("timestamp", timestamp);
-                        jo.put("elapsed", watch.taken());
-                        jo.put("status", "failed");
-                        // avoid double wrap
-                        jo.put("exception",
-                                
MessageHelper.dumpExceptionAsJSonObject(out.getException()).getMap("exception"));
-                        IOHelper.writeText(jo.toJson(), outputFile);
-                    } else {
-                        JsonObject jo = new JsonObject();
-                        jo.put("language", language);
-                        jo.put("exchangeId", out.getExchangeId());
-                        jo.put("timestamp", timestamp);
-                        jo.put("elapsed", watch.taken());
-                        jo.put("status", "success");
-                        // avoid double wrap
-                        jo.put("message", 
MessageHelper.dumpAsJSonObject(out.getMessage(), true, true, true, true, true,
-                                BODY_MAX_CHARS).getMap("message"));
-                        IOHelper.writeText(jo.toJson(), outputFile);
+                }
+                final Object inputBody = b;
+                final Map<String, Object> inputHeaders = map;
+                Exchange out = 
camelContext.getCamelContextExtension().getExchangeFactory().create(false);
+                try {
+                    Language lan = camelContext.resolveLanguage(language);
+                    Expression exp = lan.createExpression(template);
+                    exp.init(camelContext);
+                    // create dummy exchange with
+                    out.setPattern(ExchangePattern.InOut);
+                    out.getMessage().setBody(inputBody);
+                    if (inputHeaders != null) {
+                        out.getMessage().setHeaders(inputHeaders);
                     }
-                    
camelContext.getCamelContextExtension().getExchangeFactory().release(out);
+                    String result = exp.evaluate(out, String.class);
+                    out.getMessage().setBody(result);
+                    IOHelper.close(is);
+                } catch (Exception e) {
+                    out.setException(e);
+                }
+                LOG.trace("Updating output file: {}", outputFile);
+                if (out.getException() != null) {
+                    JsonObject jo = new JsonObject();
+                    jo.put("language", language);
+                    jo.put("exchangeId", out.getExchangeId());
+                    jo.put("timestamp", timestamp);
+                    jo.put("elapsed", watch.taken());
+                    jo.put("status", "failed");
+                    // avoid double wrap
+                    jo.put("exception",
+                            
MessageHelper.dumpExceptionAsJSonObject(out.getException()).getMap("exception"));
+                    IOHelper.writeText(jo.toJson(), outputFile);
+                } else {
+                    JsonObject jo = new JsonObject();
+                    jo.put("language", language);
+                    jo.put("exchangeId", out.getExchangeId());
+                    jo.put("timestamp", timestamp);
+                    jo.put("elapsed", watch.taken());
+                    jo.put("status", "success");
+                    // avoid double wrap
+                    jo.put("message", 
MessageHelper.dumpAsJSonObject(out.getMessage(), true, true, true, true, true,
+                            BODY_MAX_CHARS).getMap("message"));
+                    IOHelper.writeText(jo.toJson(), outputFile);
                 }
+                
camelContext.getCamelContextExtension().getExchangeFactory().release(out);
             }
 
             // action done so delete file
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/TransformMessageAction.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/TransformMessageAction.java
index d51c3247160..a5f76dbe074 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/TransformMessageAction.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/TransformMessageAction.java
@@ -58,10 +58,10 @@ public class TransformMessageAction extends 
ActionWatchCommand {
     private String language;
 
     @CommandLine.Option(names = {
-            "--expression" },
+            "--template" },
                         required = true,
-                        description = "The expression (template) to use for 
message transformation")
-    private String expression;
+                        description = "The template to use for message 
transformation (prefix with file: to refer to loading message body from file)")
+    private String template;
 
     @CommandLine.Option(names = {
             "--output" },
@@ -123,17 +123,8 @@ public class TransformMessageAction extends 
ActionWatchCommand {
         JsonObject root = new JsonObject();
         root.put("action", "transform");
         root.put("language", language);
-        String exp = expression;
-        if (expression.startsWith("file:")) {
-            File f = new File(expression.substring(5));
-            if (!f.isFile() && !f.exists()) {
-                System.err.println("File " + f.getName() + " does not exists");
-                return -1;
-            }
-            exp = IOHelper.loadText(new FileInputStream(f));
-        }
-        root.put("expression", Jsoner.escape(exp));
-        root.put("body", body);
+        root.put("template", Jsoner.escape(template));
+        root.put("body", Jsoner.escape(body));
         if (headers != null) {
             JsonArray arr = new JsonArray();
             for (String h : headers) {

Reply via email to