78 lines
1.9 KiB
Java
78 lines
1.9 KiB
Java
package me.skymc.taboolib.javascript;
|
|
|
|
import java.io.File;
|
|
import java.io.FileReader;
|
|
import java.io.IOException;
|
|
|
|
import javax.script.Invocable;
|
|
import javax.script.ScriptEngine;
|
|
import javax.script.ScriptEngineManager;
|
|
import javax.script.ScriptException;
|
|
|
|
import me.skymc.taboolib.Main;
|
|
|
|
public class JavaScriptUtils {
|
|
|
|
private static ScriptEngineManager manager = new ScriptEngineManager();
|
|
|
|
public static ScriptEngineManager getScriptManager() {
|
|
return manager;
|
|
}
|
|
|
|
public static void invokeJavaScript(File jsFile, String method, Object... o) {
|
|
ScriptEngine engine = manager.getEngineByName("javascript");
|
|
try {
|
|
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
|
Thread.currentThread().setContextClassLoader(Main.class.getClassLoader());
|
|
|
|
FileReader reader = new FileReader(jsFile);
|
|
engine.eval(reader);
|
|
|
|
// TODO run
|
|
|
|
Thread.currentThread().setContextClassLoader(classLoader);
|
|
}
|
|
catch (Exception e) {
|
|
// TODO: handle exception
|
|
}
|
|
}
|
|
|
|
@Deprecated
|
|
public static Object JavaScriptInterface(String jsFile, Object... o) {
|
|
|
|
ScriptEngine engine = manager.getEngineByName("javascript");
|
|
try {
|
|
FileReader reader = new FileReader(jsFile);
|
|
engine.eval(reader);
|
|
|
|
if (engine instanceof Invocable) {
|
|
return ((Invocable) engine).invokeFunction("main", o);
|
|
}
|
|
|
|
reader.close();
|
|
} catch (NoSuchMethodException | IOException | ScriptException e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
|
|
@Deprecated
|
|
public static void JavaScriptExecute(String jsFile, Object... o) {
|
|
|
|
ScriptEngine engine = manager.getEngineByName("javascript");
|
|
try {
|
|
FileReader reader = new FileReader(jsFile);
|
|
engine.eval(reader);
|
|
|
|
if (engine instanceof Invocable) {
|
|
((Invocable) engine).invokeFunction("main", o);
|
|
}
|
|
|
|
reader.close();
|
|
} catch (NoSuchMethodException | IOException | ScriptException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
}
|