Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace Nashorn with GraalVM #1857

Merged
merged 44 commits into from
Jun 10, 2019
Merged
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
567752f
First steps (#1637)
plata Jan 30, 2019
8dce77f
Merge branch 'master' into graalvm
plata Feb 23, 2019
c098fd2
ShortcutRunner: include by ID
plata Feb 23, 2019
5693b51
Merge branch 'master' into graalvm
plata Mar 2, 2019
d0ec44a
Rename Nashorn related classes to "PhoenicisScript..." (#1870)
plata Mar 2, 2019
4f9422f
Allow to create graal.js engine in PhoenicisScriptEngineFactory (#1872)
plata Mar 4, 2019
1eeb9d7
Add phoenicis script engine interface (#1882)
madoar Mar 5, 2019
7f612a7
Remove ScriptObjectMirror (#1883)
plata Mar 5, 2019
14def23
Fix usage of Java interfaces (#1884)
plata Mar 5, 2019
12a80ff
Merge branch 'master' into graalvm
plata Mar 5, 2019
9e5b26d
Add interface communication approach to documentation (#1885)
madoar Mar 5, 2019
52a81f3
Fix retrieval of engine settings (#1886)
plata Mar 6, 2019
091198c
Merge branch 'master' into graalvm
plata Mar 6, 2019
7bead68
Remove unused import
plata Mar 6, 2019
65b1f46
Docs: do not set nashorn compat on command line (#1890)
plata Mar 6, 2019
07c1018
Fix retrieval of engines (#1892)
plata Mar 7, 2019
2f28a88
Restructure phoenicis-scripts module (#1887)
madoar Mar 7, 2019
6c5d7f1
Fix shortcut creation (#1894)
plata Mar 7, 2019
a45588b
Merge branch 'master' into graalvm
plata Mar 25, 2019
bd3654f
Travis: remove OpenJDK 10
plata May 15, 2019
f054b39
Update README (remove JDK 10 support)
plata May 15, 2019
f978412
Update docs (remove Java 11 support)
plata May 15, 2019
57c0622
Use 19.0.0
plata May 19, 2019
08a040a
Merge branch 'master' into graalvm
plata May 19, 2019
c69b5b1
Merge branch 'master' into graalvm
plata Jun 1, 2019
adc83d3
Package creation fix
Jun 1, 2019
56bdfbf
Merge branch 'graalvm' of https://github.com/PhoenicisOrg/phoenicis i…
Jun 1, 2019
fa14ad5
Removed useless options
Jun 1, 2019
34fea35
Revert Removed useless options
Jun 1, 2019
dadc27a
Fix linux build
Jun 1, 2019
0e59dd3
Fix linux installation
Jun 1, 2019
5853ca7
Packaging with GraalVM support (#1957)
qparis Jun 1, 2019
aa18cf0
Merge branch 'master' into graalvm
plata Jun 2, 2019
dd6da65
Merge remote-tracking branch 'upstream/graalvm' into graalvm
Jun 9, 2019
bd28b7f
Fixed dependencies
Jun 9, 2019
6384354
Java12 packaging
Jun 9, 2019
36c4ce1
Merging
Jun 9, 2019
f05d890
Java12 packaging - Disclaimer
Jun 9, 2019
087179e
Jpackager: Java 12+
Jun 9, 2019
2fd6be1
Jpackager: Memory switch
Jun 9, 2019
47be5f2
Fixed module path
Jun 9, 2019
aa3fb2a
Remove classpath parameter
plata Jun 10, 2019
c9598be
Merge branch 'master' into graalvm
plata Jun 10, 2019
f6073e6
Remove Java 10 support
plata Jun 10, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/_docs/Developers/intellij-idea.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ add: JavaFXApplication with:
* main class: org.phoenicis.javafx.JavaFXApplication
* VM options:
```
--add-modules=ALL-MODULE-PATH --module-path=phoenicis-dist/target/lib
--add-modules=ALL-MODULE-PATH --module-path=phoenicis-dist/target/lib -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -classpath phoenicis-dist/target/lib --upgrade-module-path=phoenicis-dist/target/lib/compiler.jar
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand why -classpath would be required for GraalVM and not other dependencies. This might cause package problems

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you try if it works for you without it?

```
* **With Java 11**, you may need to remove the = in --module-path
```
Expand Down
36 changes: 36 additions & 0 deletions docs/_docs/Developers/script-interaction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: "Interaction between Phoenicis and its Scripts"
category: Developers
order: 10
toc: true
---

The interaction between Phoenicis and its scripts occurs through interfaces.

### Accessing a JavaScript Script from Java
Every script type that Phoenicis uses has its own Java interface.
To access a JavaScript script, Phoenicis proceeds like followed:

1) Execute the script using a `PhoenicisScriptEngine`
2) Cast the result object of the executed script into the desired interface type
3) Interact with the interface object

### Existing interfaces
* [`Engine`](https://github.com/PhoenicisOrg/phoenicis/blob/master/phoenicis-engines/src/main/java/org/phoenicis/engines/Engine.java)
* [`Verb`](https://github.com/PhoenicisOrg/phoenicis/blob/master/phoenicis-engines/src/main/java/org/phoenicis/engines/Verb.java)
* [`Installer`](https://github.com/PhoenicisOrg/phoenicis/blob/master/phoenicis-scripts/src/main/java/org/phoenicis/scripts/Installer.java)
* [`EngineTool`](https://github.com/PhoenicisOrg/phoenicis/blob/master/phoenicis-engines/src/main/java/org/phoenicis/engines/EngineTool.java)

### Easy casting via `PhoenicisScriptEngine`
To provide an easy method to perform all three previously mentioned step in a generic way, they could be implemented inside the `PhoenicisScriptEngine` implementations
Example method signatures:

```java
public interface PhoenicisScriptEngine {
<E> E evalAndReturn(String script, Class<E> type);

<E> void eval(String script, Class<E> type, Consumer<E> onSuccess, Consumer<Exception> onError);
}
```

Alternatively to the `String` script representation it could be a useful idea to pass `ScriptDTO` objects to the `PhoenicisScriptEngine`s.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import jdk.nashorn.api.scripting.ScriptObjectMirror;
import org.phoenicis.configuration.security.Safe;
import org.phoenicis.containers.dto.ContainerCategoryDTO;
import org.phoenicis.containers.dto.ContainerDTO;
Expand All @@ -29,7 +28,7 @@
import org.phoenicis.library.ShortcutManager;
import org.phoenicis.library.dto.ShortcutCategoryDTO;
import org.phoenicis.library.dto.ShortcutDTO;
import org.phoenicis.scripts.interpreter.InteractiveScriptSession;
import org.phoenicis.scripts.session.InteractiveScriptSession;
import org.phoenicis.scripts.interpreter.ScriptInterpreter;
import org.phoenicis.tools.config.CompatibleConfigFileFormatFactory;
import org.phoenicis.tools.config.ConfigFile;
Expand Down Expand Up @@ -142,11 +141,9 @@ public void deleteContainer(ContainerDTO container, Consumer<ContainerDTO> onSuc

interactiveScriptSession.eval("include(\"engines." + engineId + ".shortcuts.reader\");",
ignored -> interactiveScriptSession.eval("new ShortcutReader()", output -> {
final ScriptObjectMirror shortcutReader = (ScriptObjectMirror) output;

shortcutReader.callMember("of", shortcut);

final String containerName = (String) shortcutReader.callMember("container");
final org.graalvm.polyglot.Value shortcutReader = (org.graalvm.polyglot.Value) output;
shortcutReader.invokeMember("of", shortcut);
final String containerName = shortcutReader.invokeMember("container").as(String.class);
if (containerName.equals(container.getName())) {
this.shortcutManager.deleteShortcut(shortcut);
}
Expand Down
46 changes: 45 additions & 1 deletion phoenicis-dist/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,51 @@
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeArtifactIds>bcprov-jdk16, bcmail-jdk16, bcpg-jdk16, commons-logging, xml-apis, xmlParserAPIs, xercesImpl</excludeArtifactIds>
<excludeArtifactIds>bcprov-jdk16, bcmail-jdk16, bcpg-jdk16, commons-logging, xml-apis, xmlParserAPIs, xercesImpl, truffle-api, graal-sdk</excludeArtifactIds>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-graal-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.graalvm.compiler</groupId>
<artifactId>compiler</artifactId>
<version>${graalvm.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<destFileName>compiler.jar</destFileName>
</artifactItem>
<artifactItem>
<groupId>org.graalvm.truffle</groupId>
<artifactId>truffle-api</artifactId>
<version>${graalvm.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<destFileName>truffle-api.jar</destFileName>
</artifactItem>
<artifactItem>
<groupId>org.graalvm.sdk</groupId>
<artifactId>graal-sdk</artifactId>
<version>${graalvm.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<destFileName>graal-sdk.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
Expand Down
2 changes: 1 addition & 1 deletion phoenicis-dist/src/flatpak/org.phoenicis.playonlinux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,4 @@ modules:
- type: script
dest-filename: phoenicis-playonlinux
commands:
- /app/jre/bin/java --module-path /app/phoenicis/lib/ --add-modules=ALL-MODULE-PATH org.phoenicis.javafx.JavaFXApplication "$@"
- /app/jre/bin/java --module-path /app/phoenicis/lib/ --add-modules=ALL-MODULE-PATH -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -classpath /app/phoenicis/lib --upgrade-module-path=/app/phoenicis/lib/compiler.jar org.phoenicis.javafx.JavaFXApplication "$@"
108 changes: 108 additions & 0 deletions phoenicis-dist/src/scripts/phoenicis-create-package-java12.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
#!/bin/bash

## Dependencies
# Linux:
# - fakeroot
#

VERSION="$1"

if [ "$VERSION" = "" ]; then
echo "Warning: Version not specified. Reading from pom.xml"
VERSION="$(cat ../../pom.xml|grep -4 '<parent>'|grep '<version>'|awk -F'[<>]' '/<version>/{print $3}')"
echo "Using $VERSION"
fi

SCRIPT_PATH="$(dirname "$0")"
cd "$SCRIPT_PATH"
SCRIPT_PATH="$PWD"

[ "$JAVA_HOME" = "" ] && echo "Please set JAVA_HOME" && exit 0

PHOENICIS_OPERATING_SYSTEM="$(uname)"

if [ "$PHOENICIS_OPERATING_SYSTEM" == "Darwin" ]; then
PHOENICIS_APPTITLE="Phoenicis PlayOnMac"
JPACKAGER_OS="osx"
JAR_RELATIVE_PATH="../Java"
fi

if [ "$PHOENICIS_OPERATING_SYSTEM" == "Linux" ]; then
PHOENICIS_APPTITLE="Phoenicis PlayOnLinux"
JPACKAGER_OS="linux"
JAR_RELATIVE_PATH="/usr/share/phoenicis/app"
fi

PHOENICIS_TARGET="$SCRIPT_PATH/../../target"
PHOENICIS_JPACKAGER="$SCRIPT_PATH/../../target/jpackager"
PHOENICIS_RESOURCES="$SCRIPT_PATH/../resources"
PHOENICIS_MODULES="jdk.crypto.ec,java.base,javafx.base,javafx.web,javafx.media,javafx.graphics,javafx.controls,java.naming,java.sql,java.scripting,jdk.scripting.nashorn,jdk.internal.vm.ci,jdk.internal.vm.compiler,org.graalvm.truffle,java.desktop,java.prefs,java.xml"
PHOENICIS_RUNTIME_OPTIONS="-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --upgrade-module-path=$JAR_RELATIVE_PATH/compiler.jar"
PHOENICIS_JPACKAGER_ARGUMENTS=("-i" "$PHOENICIS_TARGET/lib" "--main-jar" "phoenicis-javafx-$VERSION.jar" "-n" "$PHOENICIS_APPTITLE" "--output" "$PHOENICIS_TARGET/packages/" "--add-modules" "$PHOENICIS_MODULES" "-p" "$PHOENICIS_TARGET/lib/" "--app-version" "$VERSION" "--java-options" "$PHOENICIS_RUNTIME_OPTIONS")


_download_jpackager() {
mkdir -p "$PHOENICIS_JPACKAGER"
cd "$PHOENICIS_JPACKAGER"
wget https://download.java.net/java/early_access/jpackage/49/openjdk-13-jpackage+49_osx-x64_bin.tar.gz
tar -xvf openjdk-13-jpackage+49_osx-x64_bin.tar.gz
}


jpackager() {
if [ ! -e "$PHOENICIS_JPACKAGER/jdk-13.jdk/Contents/Home/bin" ]; then
_download_jpackager
fi

"$PHOENICIS_JPACKAGER/jdk-13.jdk/Contents/Home/bin/jpackage" "$@"
}

cd "$PHOENICIS_TARGET"

if [ "$PHOENICIS_OPERATING_SYSTEM" == "Darwin" ]; then
rm -rf "$PHOENICIS_TARGET/packages/Phoenicis PlayOnMac.app"
jpackager create-app-image --icon "$PHOENICIS_RESOURCES/Phoenicis PlayOnMac.icns" "${PHOENICIS_JPACKAGER_ARGUMENTS[@]}"
fi

if [ "$PHOENICIS_OPERATING_SYSTEM" == "Linux" ]; then
jpackager create-image "${PHOENICIS_JPACKAGER_ARGUMENTS[@]}" --linux-bundle-name "phoenicis-playonlinux"

packageName="Phoenicis_$VERSION"
cd "$PHOENICIS_TARGET"
rmdir packages/PhoenicisPlayOnLinux/
rm -rf "packages/phoenicis" 2> /dev/null
mv packages/Phoenicis\ PlayOnLinux/ packages/phoenicis
rm -rf "$packageName" 2> /dev/null
mkdir -p "$packageName/DEBIAN/"

cat << EOF > "$packageName/DEBIAN/control"
Package: phoenicis-playonlinux
Version: $VERSION
Section: misc
Priority: optional
Architecture: all
Depends: unzip, wget, xterm | x-terminal-emulator, python, imagemagick, cabextract, icoutils, p7zip-full, curl
Maintainer: PlayOnLinux Packaging <[email protected]>
Description: This program is a front-end for wine.
It permits you to install Windows Games and softwares
on Linux. It allows you to manage differents virtual hard drive,
and several wine versions.
Copyright 2011-2019 PlayOnLinux team <[email protected]>
EOF

mkdir -p $packageName/usr/share/applications
mkdir -p $packageName/usr/share/pixmaps
mkdir -p $packageName/usr/bin

cp -a packages/phoenicis $packageName/usr/share/
cp -a "$SCRIPT_PATH/../launchers/phoenicis" $packageName/usr/bin/phoenicis
chmod +x $packageName/usr/bin/phoenicis

cp "$SCRIPT_PATH/../resources/Phoenicis.desktop" "$packageName/usr/share/applications"
cp "$SCRIPT_PATH/../resources/phoenicis.png" "$packageName/usr/share/pixmaps"
cp "$SCRIPT_PATH/../resources/phoenicis-16.png" "$packageName/usr/share/pixmaps"
cp "$SCRIPT_PATH/../resources/phoenicis-32.png" "$packageName/usr/share/pixmaps"

fakeroot dpkg-deb --build "$packageName"
rm -rf deb
fi
8 changes: 5 additions & 3 deletions phoenicis-dist/src/scripts/phoenicis-create-package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,21 @@ PHOENICIS_OPERATING_SYSTEM="$(uname)"
if [ "$PHOENICIS_OPERATING_SYSTEM" == "Darwin" ]; then
PHOENICIS_APPTITLE="Phoenicis PlayOnMac"
JPACKAGER_OS="osx"
JAR_RELATIVE_PATH="../Java"
fi

if [ "$PHOENICIS_OPERATING_SYSTEM" == "Linux" ]; then
PHOENICIS_APPTITLE="Phoenicis PlayOnLinux"
JPACKAGER_OS="linux"
JAR_RELATIVE_PATH="/usr/share/phoenicis/app"
fi

PHOENICIS_TARGET="$SCRIPT_PATH/../../target"
PHOENICIS_JPACKAGER="$SCRIPT_PATH/../../target/jpackager"
PHOENICIS_RESOURCES="$SCRIPT_PATH/../resources"
PHOENICIS_MODULES="jdk.crypto.ec,java.base,javafx.base,javafx.web,javafx.media,javafx.graphics,javafx.controls,java.naming,java.sql,java.scripting,jdk.scripting.nashorn"
PHOENICIS_JPACKAGER_ARGUMENTS=("-i" "$PHOENICIS_TARGET/lib" "--main-jar" "phoenicis-javafx-$VERSION.jar" "-n" "$PHOENICIS_APPTITLE" "--output" "$PHOENICIS_TARGET/packages/" "--add-modules" "$PHOENICIS_MODULES" "-p" "$PHOENICIS_TARGET/lib/" "--version" "$VERSION")

PHOENICIS_MODULES="jdk.crypto.ec,java.base,javafx.base,javafx.web,javafx.media,javafx.graphics,javafx.controls,java.naming,java.sql,java.scripting,jdk.scripting.nashorn,jdk.internal.vm.ci,org.graalvm.truffle"
PHOENICIS_RUNTIME_OPTIONS="-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --upgrade-module-path=$JAR_RELATIVE_PATH/compiler.jar"
PHOENICIS_JPACKAGER_ARGUMENTS=("-i" "$PHOENICIS_TARGET/lib" "--main-jar" "phoenicis-javafx-$VERSION.jar" "-n" "$PHOENICIS_APPTITLE" "--output" "$PHOENICIS_TARGET/packages/" "--add-modules" "$PHOENICIS_MODULES" "-p" "$PHOENICIS_TARGET/lib/" "--version" "$VERSION" "--jvm-args" "$PHOENICIS_RUNTIME_OPTIONS")

_download_jpackager() {
mkdir -p "$PHOENICIS_JPACKAGER"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@

package org.phoenicis.engines;

import org.graalvm.polyglot.Value;
import org.phoenicis.repository.dto.*;
import org.phoenicis.scripts.interpreter.InteractiveScriptSession;
import org.phoenicis.scripts.session.InteractiveScriptSession;
import org.phoenicis.scripts.interpreter.ScriptInterpreter;

import java.util.ArrayList;
Expand Down Expand Up @@ -55,7 +56,7 @@ public void getSetting(String engineId, String settingId, Consumer<EngineSetting
interactiveScriptSession.eval(
"include(\"engines." + engineId + ".settings." + settingId + "\"); new Setting();",
output -> {
final EngineSetting setting = (EngineSetting) output;
final EngineSetting setting = ((Value) output).as(EngineSetting.class);
doneCallback.accept(setting);
}, errorCallback);
}
Expand All @@ -71,7 +72,8 @@ public void fetchAvailableEngineSettings(RepositoryDTO repositoryDTO,
final InteractiveScriptSession interactiveScriptSession = scriptInterpreter.createInteractiveSession();

interactiveScriptSession.eval(this.createFetchScript(repositoryDTO),
output -> callback.accept((Map<String, List<EngineSetting>>) output), errorCallback);
output -> callback.accept(((Value) output).as(Map.class)),
errorCallback);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@

package org.phoenicis.engines;

import org.graalvm.polyglot.Value;
import org.phoenicis.repository.dto.ApplicationDTO;
import org.phoenicis.repository.dto.CategoryDTO;
import org.phoenicis.repository.dto.RepositoryDTO;
import org.phoenicis.repository.dto.TypeDTO;
import org.phoenicis.scripts.interpreter.InteractiveScriptSession;
import org.phoenicis.scripts.session.InteractiveScriptSession;
import org.phoenicis.scripts.interpreter.ScriptInterpreter;

import java.util.ArrayList;
Expand Down Expand Up @@ -60,7 +61,7 @@ public void runTool(String engineId, String container, String toolId, Runnable d
interactiveScriptSession.eval(
"include(\"engines." + engineId + ".tools." + toolId + "\");",
ignored -> interactiveScriptSession.eval("new Tool()", output -> {
final EngineTool toolObject = (EngineTool) output;
final EngineTool toolObject = ((Value) output).as(EngineTool.class);
toolObject.run(container);
doneCallback.run();
}, errorCallback), errorCallback);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.graalvm.polyglot.Value;
import org.phoenicis.configuration.security.Safe;
import org.phoenicis.engines.dto.EngineCategoryDTO;
import org.phoenicis.engines.dto.EngineSubCategoryDTO;
import org.phoenicis.repository.dto.*;
import org.phoenicis.scripts.interpreter.InteractiveScriptSession;
import org.phoenicis.scripts.session.InteractiveScriptSession;
import org.phoenicis.scripts.interpreter.ScriptInterpreter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -67,7 +68,7 @@ public void getEngine(String engineId, Consumer<Engine> doneCallback, Consumer<E
interactiveScriptSession.eval(
"include(\"engines." + engineId + ".engine.implementation\"); new Engine();",
output -> {
final Engine engine = (Engine) output;
final Engine engine = ((Value) output).as(Engine.class);
doneCallback.accept(engine);
}, errorCallback);
}
Expand Down Expand Up @@ -129,7 +130,7 @@ public void fetchAvailableEngines(RepositoryDTO repositoryDTO,
final InteractiveScriptSession interactiveScriptSession = scriptInterpreter.createInteractiveSession();

interactiveScriptSession.eval(this.createFetchScript(repositoryDTO),
output -> callback.accept((Map<String, Engine>) output), errorCallback);
output -> callback.accept(((Value) output).as(Map.class)), errorCallback);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,12 @@

package org.phoenicis.engines;

import org.graalvm.polyglot.Value;
import org.phoenicis.repository.dto.ApplicationDTO;
import org.phoenicis.repository.dto.CategoryDTO;
import org.phoenicis.repository.dto.RepositoryDTO;
import org.phoenicis.repository.dto.TypeDTO;
import org.phoenicis.scripts.interpreter.InteractiveScriptSession;
import org.phoenicis.scripts.session.InteractiveScriptSession;
import org.phoenicis.scripts.interpreter.ScriptInterpreter;

import java.util.ArrayList;
Expand Down Expand Up @@ -62,7 +63,7 @@ public void installVerb(String engineId, String container, String verbId, Runnab
interactiveScriptSession.eval(
"include(\"" + verbId + "\");",
ignored -> interactiveScriptSession.eval("new Verb()", output -> {
final Verb verbObject = (Verb) output;
final Verb verbObject = ((Value) output).as(Verb.class);
verbObject.install(container);
doneCallback.run();
}, errorCallback), errorCallback);
Expand Down
2 changes: 1 addition & 1 deletion phoenicis-javafx/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@
<dependency>
<groupId>com.github.PhoenicisOrg</groupId>
<artifactId>javafx-collections</artifactId>
<version>1.2.0</version>
<version>1.2.1</version>
</dependency>
</dependencies>
<build>
Expand Down
Loading