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