Skip to content

Commit 12207ba

Browse files
authored
Merge pull request #74 from PlaceholderAPI/fix/issue-#73
fix for #73
2 parents e20da1e + c98705e commit 12207ba

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ allprojects {
66
group = 'com.extendedclip.papi.expansion.javascript'
77
version = '2.1.2'
88
description = 'PAPI-Expansion-Javascript'
9+
10+
apply(plugin: 'java')
911
}
1012

1113
repositories {
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
package com.extendedclip.papi.expansion.javascript.evaluator;
22

3-
import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory;
4-
53
import javax.script.Bindings;
64
import javax.script.ScriptContext;
75
import javax.script.ScriptEngine;
86
import javax.script.ScriptException;
97
import java.util.Map;
108

119
public final class NashornScriptEvaluator implements ScriptEvaluator {
12-
private final NashornScriptEngineFactory scriptEngineFactory;
10+
11+
private final ScriptEngine scriptEngine;
1312
private final Map<String, Object> bindings;
1413

15-
public NashornScriptEvaluator(final NashornScriptEngineFactory scriptEngineFactory, final Map<String, Object> bindings) {
16-
this.scriptEngineFactory = scriptEngineFactory;
14+
public NashornScriptEvaluator(final ScriptEngine scriptEngine, final Map<String, Object> bindings) {
15+
this.scriptEngine = scriptEngine;
1716
this.bindings = bindings;
1817
}
1918

2019
@Override
2120
public Object execute(final Map<String, Object> additionalBindings, final String script) throws EvaluatorException, ScriptException {
22-
final ScriptEngine engine = scriptEngineFactory.getScriptEngine("--no-java");
23-
final Bindings globalBindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
21+
final Bindings globalBindings = scriptEngine.getBindings(ScriptContext.ENGINE_SCOPE);
2422
globalBindings.putAll(bindings);
2523
globalBindings.putAll(additionalBindings);
26-
engine.setBindings(globalBindings, ScriptContext.GLOBAL_SCOPE);
27-
return engine.eval(script);
24+
scriptEngine.setBindings(globalBindings, ScriptContext.ENGINE_SCOPE);
25+
return scriptEngine.eval(script);
2826
}
27+
2928
}

evaluator/src/main/java/com/extendedclip/papi/expansion/javascript/evaluator/NashornScriptEvaluatorFactory.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.extendedclip.papi.expansion.javascript.evaluator.util.InjectionUtil;
44
import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory;
55

6+
import javax.script.ScriptEngine;
67
import java.io.IOException;
78
import java.net.URISyntaxException;
89
import java.security.NoSuchAlgorithmException;
@@ -17,16 +18,16 @@ public final class NashornScriptEvaluatorFactory implements ScriptEvaluatorFacto
1718
"asm-util-9.2.isolated-jar",
1819
"asm-9.2.isolated-jar"
1920
);
20-
private final NashornScriptEngineFactory engineFactory;
21+
22+
private final ThreadLocal<ScriptEngine> engines;
2123

2224
private NashornScriptEvaluatorFactory(final NashornScriptEngineFactory engineFactory) {
23-
this.engineFactory = engineFactory;
25+
this.engines = ThreadLocal.withInitial(() -> engineFactory.getScriptEngine("--no-java"));
2426
}
2527

26-
2728
@Override
2829
public ScriptEvaluator create(final Map<String, Object> bindings) {
29-
return new NashornScriptEvaluator(engineFactory, bindings);
30+
return new NashornScriptEvaluator(engines.get(), bindings);
3031
}
3132

3233
public static ScriptEvaluatorFactory create() throws URISyntaxException, ReflectiveOperationException, NoSuchAlgorithmException, IOException {

0 commit comments

Comments
 (0)