mirror of
https://github.com/PlaceholderAPI/Javascript-Expansion.git
synced 2025-05-23 02:19:04 +00:00
fix for #73
This commit is contained in:
parent
e20da1e725
commit
c98705edfc
@ -6,6 +6,8 @@ allprojects {
|
||||
group = 'com.extendedclip.papi.expansion.javascript'
|
||||
version = '2.1.2'
|
||||
description = 'PAPI-Expansion-Javascript'
|
||||
|
||||
apply(plugin: 'java')
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
@ -1,7 +1,5 @@
|
||||
package com.extendedclip.papi.expansion.javascript.evaluator;
|
||||
|
||||
import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory;
|
||||
|
||||
import javax.script.Bindings;
|
||||
import javax.script.ScriptContext;
|
||||
import javax.script.ScriptEngine;
|
||||
@ -9,21 +7,22 @@ import javax.script.ScriptException;
|
||||
import java.util.Map;
|
||||
|
||||
public final class NashornScriptEvaluator implements ScriptEvaluator {
|
||||
private final NashornScriptEngineFactory scriptEngineFactory;
|
||||
|
||||
private final ScriptEngine scriptEngine;
|
||||
private final Map<String, Object> bindings;
|
||||
|
||||
public NashornScriptEvaluator(final NashornScriptEngineFactory scriptEngineFactory, final Map<String, Object> bindings) {
|
||||
this.scriptEngineFactory = scriptEngineFactory;
|
||||
public NashornScriptEvaluator(final ScriptEngine scriptEngine, final Map<String, Object> bindings) {
|
||||
this.scriptEngine = scriptEngine;
|
||||
this.bindings = bindings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object execute(final Map<String, Object> additionalBindings, final String script) throws EvaluatorException, ScriptException {
|
||||
final ScriptEngine engine = scriptEngineFactory.getScriptEngine("--no-java");
|
||||
final Bindings globalBindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
|
||||
final Bindings globalBindings = scriptEngine.getBindings(ScriptContext.ENGINE_SCOPE);
|
||||
globalBindings.putAll(bindings);
|
||||
globalBindings.putAll(additionalBindings);
|
||||
engine.setBindings(globalBindings, ScriptContext.GLOBAL_SCOPE);
|
||||
return engine.eval(script);
|
||||
scriptEngine.setBindings(globalBindings, ScriptContext.ENGINE_SCOPE);
|
||||
return scriptEngine.eval(script);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package com.extendedclip.papi.expansion.javascript.evaluator;
|
||||
import com.extendedclip.papi.expansion.javascript.evaluator.util.InjectionUtil;
|
||||
import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory;
|
||||
|
||||
import javax.script.ScriptEngine;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
@ -17,16 +18,16 @@ public final class NashornScriptEvaluatorFactory implements ScriptEvaluatorFacto
|
||||
"asm-util-9.2.isolated-jar",
|
||||
"asm-9.2.isolated-jar"
|
||||
);
|
||||
private final NashornScriptEngineFactory engineFactory;
|
||||
|
||||
private final ThreadLocal<ScriptEngine> engines;
|
||||
|
||||
private NashornScriptEvaluatorFactory(final NashornScriptEngineFactory engineFactory) {
|
||||
this.engineFactory = engineFactory;
|
||||
this.engines = ThreadLocal.withInitial(() -> engineFactory.getScriptEngine("--no-java"));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ScriptEvaluator create(final Map<String, Object> bindings) {
|
||||
return new NashornScriptEvaluator(engineFactory, bindings);
|
||||
return new NashornScriptEvaluator(engines.get(), bindings);
|
||||
}
|
||||
|
||||
public static ScriptEvaluatorFactory create() throws URISyntaxException, ReflectiveOperationException, NoSuchAlgorithmException, IOException {
|
||||
|
Loading…
x
Reference in New Issue
Block a user