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