From 7a1e6c63490975be36de901a8092af96bb4cb27c Mon Sep 17 00:00:00 2001 From: gudzpoz Date: Wed, 22 May 2024 21:45:16 +0800 Subject: [PATCH] Fix jsr223 interface and jpms test --- jpms-example/build.gradle | 4 +++ jpms-example/src/main/java/module-info.java | 4 ++- .../java/party/iroiro/luajava/jpms/Main.java | 20 +++++--------- .../luajava/jsr223/LuaScriptEngine.java | 27 +++++++------------ 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/jpms-example/build.gradle b/jpms-example/build.gradle index 75913613..5da98f35 100644 --- a/jpms-example/build.gradle +++ b/jpms-example/build.gradle @@ -5,6 +5,9 @@ plugins { repositories { mavenCentral() + maven { + url 'https://jitpack.io' + } } java { @@ -30,6 +33,7 @@ dependencies { implementation project(path: ':lua53', configuration: 'instrumentedJars') implementation project(path: ':lua54', configuration: 'instrumentedJars') implementation project(path: ':luajit', configuration: 'instrumentedJars') + implementation project(':luaj') runtimeOnly project(path: ':lua51', configuration: 'desktopNatives') runtimeOnly project(path: ':lua52', configuration: 'desktopNatives') runtimeOnly project(path: ':lua53', configuration: 'desktopNatives') diff --git a/jpms-example/src/main/java/module-info.java b/jpms-example/src/main/java/module-info.java index c17157bf..6a3ceecd 100644 --- a/jpms-example/src/main/java/module-info.java +++ b/jpms-example/src/main/java/module-info.java @@ -1,9 +1,11 @@ module party.iroiro.luajava.jpms { exports party.iroiro.luajava.jpms; + requires party.iroiro.luajava; requires party.iroiro.luajava.lua51; requires party.iroiro.luajava.lua52; requires party.iroiro.luajava.lua53; requires party.iroiro.luajava.lua54; requires party.iroiro.luajava.luajit; -} \ No newline at end of file + requires party.iroiro.luajava.luaj; +} diff --git a/jpms-example/src/main/java/party/iroiro/luajava/jpms/Main.java b/jpms-example/src/main/java/party/iroiro/luajava/jpms/Main.java index d24ecef7..82ba7e17 100644 --- a/jpms-example/src/main/java/party/iroiro/luajava/jpms/Main.java +++ b/jpms-example/src/main/java/party/iroiro/luajava/jpms/Main.java @@ -5,10 +5,9 @@ import party.iroiro.luajava.lua52.Lua52; import party.iroiro.luajava.lua53.Lua53; import party.iroiro.luajava.lua54.Lua54; +import party.iroiro.luajava.luaj.LuaJ; import party.iroiro.luajava.luajit.LuaJit; -import static party.iroiro.luajava.Lua.LuaError.OK; - public class Main implements AutoCloseable { public static void main(String[] args) { try (Main test = new Main()) { @@ -26,26 +25,19 @@ private Main() { new Lua53(), new Lua54(), new LuaJit(), + new LuaJ(), }; } private void test() { for (Lua L : luas) { // Accessing java.* - assertEquals(L.run("out = java.import('java.lang.System').out"), OK); - assertEquals(L.run("out:println('Hello World: ' .. _VERSION)"), OK); + L.run("out = java.import('java.lang.System').out"); + L.run("out:println('Hello World: ' .. _VERSION)"); // Accessing explicitly modulized classes - assertEquals(L.run("out:println(java.import('party.iroiro.luajava.jpms.Main').class:getName())"), OK); + L.run("out:println(java.import('party.iroiro.luajava.jpms.Main').class:getName())"); // Accessing implicit modules - assertEquals(L.run("out:println(java.import('party.iroiro.luajava.lua51.Lua51').class:getName())"), OK); - } - } - - private void assertEquals(Object a, Object b) { - if (a != b) { - if (a != null && !a.equals(b)) { - throw new AssertionError(); - } + L.run("out:println(java.import('party.iroiro.luajava.lua51.Lua51').class:getName())"); } } diff --git a/jsr223/src/main/java/party/iroiro/luajava/jsr223/LuaScriptEngine.java b/jsr223/src/main/java/party/iroiro/luajava/jsr223/LuaScriptEngine.java index 00150f42..fe298fb3 100644 --- a/jsr223/src/main/java/party/iroiro/luajava/jsr223/LuaScriptEngine.java +++ b/jsr223/src/main/java/party/iroiro/luajava/jsr223/LuaScriptEngine.java @@ -3,6 +3,7 @@ import party.iroiro.luajava.ClassPathLoader; import party.iroiro.luajava.Consts; import party.iroiro.luajava.Lua; +import party.iroiro.luajava.LuaException; import party.iroiro.luajava.util.ClassUtils; import party.iroiro.luajava.value.LuaValue; @@ -24,7 +25,6 @@ public final class LuaScriptEngine extends AbstractScriptEngine implements Scrip private Lua getLua() throws ScriptException { try { - //noinspection deprecation Lua L = (Lua) ClassUtils.forName(luaClass, null).newInstance(); L.setExternalLoader(new ClassPathLoader()); L.openLibraries(); @@ -100,11 +100,7 @@ private static void assertNotNull(T t, String name) { @Override public CompiledScript compile(String s) throws ScriptException { try (Lua L = getLua()) { - if (L.load(s) != Lua.LuaError.OK) { - String message = L.toString(-1); - L.pop(1); - throw new ScriptException(message); - } + L.load(s); ByteBuffer dump = L.dump(); return new CompiledScript() { @Override @@ -114,18 +110,13 @@ public Object eval(ScriptContext scriptContext) throws ScriptException { putContext(L, scriptContext); int top = L.getTop(); L.load(dump, "CompiledScript"); - if (L.pCall(0, Consts.LUA_MULTRET) == Lua.LuaError.OK) { - int returnCount = L.getTop() - top; - LuaValue[] returnValues = new LuaValue[returnCount]; - for (int i = 0; i < returnCount; i++) { - returnValues[returnCount - i - 1] = L.get(); - } - return returnValues.length == 0 ? null : returnValues; - } else { - String message = L.toString(-1); - L.pop(1); - throw new ScriptException(message); + L.pCall(0, Consts.LUA_MULTRET); + int returnCount = L.getTop() - top; + LuaValue[] returnValues = new LuaValue[returnCount]; + for (int i = 0; i < returnCount; i++) { + returnValues[returnCount - i - 1] = L.get(); } + return returnValues.length == 0 ? null : returnValues; } } @@ -134,6 +125,8 @@ public ScriptEngine getEngine() { return LuaScriptEngine.this; } }; + } catch (LuaException e) { + throw new ScriptException(e); } }