From 8c68fb706e435797aa20ed1c8bb86c7dd2fff59b Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Thu, 13 Feb 2025 09:23:05 +0100 Subject: [PATCH] [jsscripting] Use OSGi-ified GraalVM dependencies (#18053) * [jsscripting] Use OSGI-ified org.graalvm.sdk:* dependencies Signed-off-by: Florian Hotze --- bundles/org.openhab.automation.jsscripting/README.md | 2 +- bundles/org.openhab.automation.jsscripting/bnd.bnd | 7 +++++++ bundles/org.openhab.automation.jsscripting/pom.xml | 12 +++++++++++- .../src/main/feature/feature.xml | 7 +++++++ ...neWithInvocableAndCompilableAndAutocloseable.java | 6 ++---- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/bundles/org.openhab.automation.jsscripting/README.md b/bundles/org.openhab.automation.jsscripting/README.md index 14b3300a9d4..e1f8d7f0390 100644 --- a/bundles/org.openhab.automation.jsscripting/README.md +++ b/bundles/org.openhab.automation.jsscripting/README.md @@ -1,6 +1,6 @@ # JavaScript Scripting -This add-on provides support for JavaScript (ECMAScript 2022+) that can be used as a scripting language within automation rules. +This add-on provides support for JavaScript (ECMAScript 2024+) that can be used as a scripting language within automation rules. It is based on [GraalJS](https://www.graalvm.org/javascript/) from the [GraalVM project](https://www.graalvm.org/). Also included is [openhab-js](https://github.com/openhab/openhab-js/), a fairly high-level ES6 library to support automation in openHAB. It provides convenient access diff --git a/bundles/org.openhab.automation.jsscripting/bnd.bnd b/bundles/org.openhab.automation.jsscripting/bnd.bnd index b10e569e696..fa3abf956d0 100644 --- a/bundles/org.openhab.automation.jsscripting/bnd.bnd +++ b/bundles/org.openhab.automation.jsscripting/bnd.bnd @@ -7,6 +7,13 @@ Require-Capability: osgi.serviceloader:= filter:="(osgi.serviceloader=org.graalvm.polyglot.impl.AbstractPolyglotImpl)"; cardinality:=multiple +Require-Bundle: org.graalvm.sdk.collections;bundle-version="24.1.2",\ + org.graalvm.sdk.jniutils;bundle-version="24.1.2",\ + org.graalvm.sdk.nativeimage;bundle-version="24.1.2",\ + org.graalvm.sdk.word;bundle-version="24.1.2",\ + org.graalvm.shadowed.icu4j;bundle-version="24.1.2",\ + org.graalvm.truffle.truffle-compiler;bundle-version="24.1.2",\ + org.graalvm.truffle.truffle-runtime;bundle-version="24.1.2" SPI-Provider: * SPI-Consumer: * diff --git a/bundles/org.openhab.automation.jsscripting/pom.xml b/bundles/org.openhab.automation.jsscripting/pom.xml index 6db5f18c5cb..3455cb0b71d 100644 --- a/bundles/org.openhab.automation.jsscripting/pom.xml +++ b/bundles/org.openhab.automation.jsscripting/pom.xml @@ -23,7 +23,7 @@ !jdk.vm.ci.services - 24.1.1 + 24.1.2 ${project.version} openhab@5.8.1 @@ -46,6 +46,14 @@ org.lastnpe.eea:eea-all org.apache.karaf.features:framework + + org.graalvm.sdk:collections + org.graalvm.sdk:jniutils + org.graalvm.sdk:nativeimage + org.graalvm.sdk:word + org.graalvm.shadowed:icu4j + org.graalvm.truffle:truffle-compiler + org.graalvm.truffle:truffle-runtime false @@ -109,6 +117,7 @@ + org.codehaus.mojo build-helper-maven-plugin @@ -141,6 +150,7 @@ + org.graalvm.polyglot polyglot diff --git a/bundles/org.openhab.automation.jsscripting/src/main/feature/feature.xml b/bundles/org.openhab.automation.jsscripting/src/main/feature/feature.xml index a54eb9e62f4..8e84ff47e5e 100644 --- a/bundles/org.openhab.automation.jsscripting/src/main/feature/feature.xml +++ b/bundles/org.openhab.automation.jsscripting/src/main/feature/feature.xml @@ -5,6 +5,13 @@ openhab-runtime-base + mvn:org.openhab.osgiify/org.graalvm.sdk.collections/24.1.2 + mvn:org.openhab.osgiify/org.graalvm.sdk.jniutils/24.1.2 + mvn:org.openhab.osgiify/org.graalvm.sdk.nativeimage/24.1.2 + mvn:org.openhab.osgiify/org.graalvm.sdk.word/24.1.2 + mvn:org.openhab.osgiify/org.graalvm.shadowed.icu4j/24.1.2 + mvn:org.openhab.osgiify/org.graalvm.truffle.truffle-compiler/24.1.2 + mvn:org.openhab.osgiify/org.graalvm.truffle.truffle-runtime/24.1.2 mvn:org.openhab.addons.bundles/org.openhab.automation.jsscripting/${project.version} diff --git a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/scriptengine/DelegatingScriptEngineWithInvocableAndCompilableAndAutocloseable.java b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/scriptengine/DelegatingScriptEngineWithInvocableAndCompilableAndAutocloseable.java index a12e253a6d2..6b045694fd8 100644 --- a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/scriptengine/DelegatingScriptEngineWithInvocableAndCompilableAndAutocloseable.java +++ b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/scriptengine/DelegatingScriptEngineWithInvocableAndCompilableAndAutocloseable.java @@ -23,8 +23,6 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineFactory; import javax.script.ScriptException; -import org.eclipse.jdt.annotation.NonNull; - /** * {@link ScriptEngine} implementation that delegates to a supplied ScriptEngine instance. Allows overriding specific * methods. @@ -33,9 +31,9 @@ import org.eclipse.jdt.annotation.NonNull; */ public abstract class DelegatingScriptEngineWithInvocableAndCompilableAndAutocloseable implements ScriptEngine, Invocable, Compilable, AutoCloseable { - protected @NonNull T delegate; + protected T delegate; - public DelegatingScriptEngineWithInvocableAndCompilableAndAutocloseable(@NonNull T delegate) { + public DelegatingScriptEngineWithInvocableAndCompilableAndAutocloseable(T delegate) { this.delegate = delegate; }