You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/11/30 06:02:16 UTC

[camel] branch main updated: java-js-dsl/javascript - Set mimeType and name

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 a3670a3d2b0 java-js-dsl/javascript - Set mimeType and name
a3670a3d2b0 is described below

commit a3670a3d2b032b43007af9f2d94f9add8a142c86
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Nov 30 07:02:03 2022 +0100

    java-js-dsl/javascript - Set mimeType and name
---
 .../java/org/apache/camel/language/js/JavaScriptExpression.java    | 7 ++++++-
 .../main/java/org/apache/camel/language/js/JavaScriptLanguage.java | 7 ++++++-
 .../org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java     | 5 +++--
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/components/camel-javascript/src/main/java/org/apache/camel/language/js/JavaScriptExpression.java b/components/camel-javascript/src/main/java/org/apache/camel/language/js/JavaScriptExpression.java
index 8d6258c161a..b675f70fd83 100644
--- a/components/camel-javascript/src/main/java/org/apache/camel/language/js/JavaScriptExpression.java
+++ b/components/camel-javascript/src/main/java/org/apache/camel/language/js/JavaScriptExpression.java
@@ -19,8 +19,11 @@ package org.apache.camel.language.js;
 import org.apache.camel.Exchange;
 import org.apache.camel.support.ExpressionSupport;
 import org.graalvm.polyglot.Context;
+import org.graalvm.polyglot.Source;
 import org.graalvm.polyglot.Value;
 
+import static org.graalvm.polyglot.Source.newBuilder;
+
 public class JavaScriptExpression extends ExpressionSupport {
 
     private final String expressionString;
@@ -54,7 +57,9 @@ public class JavaScriptExpression extends ExpressionSupport {
             b.putMember("properties", exchange.getAllProperties());
             b.putMember("body", exchange.getMessage().getBody());
 
-            Value o = cx.eval("js", expressionString);
+            Source source = newBuilder("js", expressionString, "Unnamed")
+                    .mimeType("application/javascript+module").buildLiteral();
+            Value o = cx.eval(source);
             Object answer = o != null ? o.as(Object.class) : null;
             if (type == Object.class) {
                 return (T) answer;
diff --git a/components/camel-javascript/src/main/java/org/apache/camel/language/js/JavaScriptLanguage.java b/components/camel-javascript/src/main/java/org/apache/camel/language/js/JavaScriptLanguage.java
index 430bd99b947..e0d9e41575c 100644
--- a/components/camel-javascript/src/main/java/org/apache/camel/language/js/JavaScriptLanguage.java
+++ b/components/camel-javascript/src/main/java/org/apache/camel/language/js/JavaScriptLanguage.java
@@ -24,8 +24,11 @@ import org.apache.camel.spi.ScriptingLanguage;
 import org.apache.camel.spi.annotations.Language;
 import org.apache.camel.support.TypedLanguageSupport;
 import org.graalvm.polyglot.Context;
+import org.graalvm.polyglot.Source;
 import org.graalvm.polyglot.Value;
 
+import static org.graalvm.polyglot.Source.newBuilder;
+
 @Language("js")
 public class JavaScriptLanguage extends TypedLanguageSupport implements ScriptingLanguage {
 
@@ -45,7 +48,9 @@ public class JavaScriptLanguage extends TypedLanguageSupport implements Scriptin
         try (Context cx = JavaScriptHelper.newContext()) {
             Value b = cx.getBindings("js");
             bindings.forEach(b::putMember);
-            Value o = cx.eval("js", script);
+            Source source = newBuilder("js", script, "Unnamed")
+                    .mimeType("application/javascript+module").buildLiteral();
+            Value o = cx.eval(source);
             Object answer = o != null ? o.as(resultType) : null;
             return resultType.cast(answer);
         }
diff --git a/dsl/camel-js-dsl/src/main/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java b/dsl/camel-js-dsl/src/main/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java
index 93c74d40c63..d4cc4ff3c49 100644
--- a/dsl/camel-js-dsl/src/main/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java
+++ b/dsl/camel-js-dsl/src/main/java/org/apache/camel/dsl/js/JavaScriptRoutesBuilderLoader.java
@@ -24,6 +24,7 @@ import org.apache.camel.builder.endpoint.EndpointRouteBuilder;
 import org.apache.camel.endpointdsl.support.EndpointRouteBuilderLoaderSupport;
 import org.apache.camel.spi.annotations.RoutesLoader;
 import org.apache.camel.support.LifecycleStrategySupport;
+import org.apache.camel.util.FileUtil;
 import org.graalvm.polyglot.Context;
 import org.graalvm.polyglot.HostAccess;
 import org.graalvm.polyglot.PolyglotAccess;
@@ -53,6 +54,7 @@ public class JavaScriptRoutesBuilderLoader extends EndpointRouteBuilderLoaderSup
 
         final Context context = contextBuilder.build();
         final Value bindings = context.getBindings(LANGUAGE_ID);
+        final String name = FileUtil.onlyName(builder.getResource().getLocation(), true) + "." + EXTENSION;
 
         // configure bindings
         bindings.putMember("__dsl", new JavaScriptDSL(builder));
@@ -72,12 +74,11 @@ public class JavaScriptRoutesBuilderLoader extends EndpointRouteBuilderLoaderSup
                         "        return Reflect.get((key in __dsl) ? __dsl : target, key, receiver);",
                         "    }",
                         "}));"));
-
         //
         // Run the script.
         //
         context.eval(
-                newBuilder(LANGUAGE_ID, reader, "Unnamed").mimeType("application/javascript+module").buildLiteral());
+                newBuilder(LANGUAGE_ID, reader, name).mimeType("application/javascript+module").buildLiteral());
 
         //
         // Close the polyglot context when the camel context stops