Skip to content

Commit 3b473ef

Browse files
committed
- Switch: Nashorn and Rhino
1 parent 5202268 commit 3b473ef

File tree

4 files changed

+34
-86
lines changed

4 files changed

+34
-86
lines changed

src/main/java/com/viglet/shio/website/nashorn/ShNashornEngineConfiguration.java

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import org.apache.commons.logging.Log;
2929
import org.apache.commons.logging.LogFactory;
30+
import org.springframework.beans.factory.annotation.Value;
3031
import org.springframework.context.ApplicationContext;
3132
import org.springframework.context.annotation.Bean;
3233
import org.springframework.context.annotation.Configuration;
@@ -38,22 +39,22 @@
3839
public class ShNashornEngineConfiguration {
3940
private static final Log logger = LogFactory.getLog(ShNashornEngineConfiguration.class);
4041

42+
private static final String NASHORN_CLASS = "org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory";
43+
private static final String RHINO_CLASS = "org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory";
44+
private static final String NASHORN_ENGINE = "nashorn";
45+
46+
@Value("${shio.website.javascript.engine:nashorn}")
47+
private String defaultEngine;
48+
4149
@Resource
4250
private ApplicationContext context;
4351

4452
@Bean
4553
public ScriptEngine scriptEngine(ShNashornEngineBindings shBindings) {
4654

47-
Class<?> nashornScriptEngineFactory;
4855
try {
56+
ScriptEngine engine = defaultEngine.equals(NASHORN_ENGINE) ? nashornEngine(shBindings) : rhinoEngine();
4957

50-
nashornScriptEngineFactory = Class.forName("org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory");
51-
52-
Method getScriptEngine = nashornScriptEngineFactory.getDeclaredMethod("getScriptEngine", String[].class);
53-
ScriptEngineFactory scriptEngineFactory = (ScriptEngineFactory) nashornScriptEngineFactory
54-
.getDeclaredConstructor().newInstance();
55-
ScriptEngine engine = (ScriptEngine) getScriptEngine.invoke(scriptEngineFactory,
56-
shBindings.getShWebsiteProperties().getNashornAsObject());
5758
Bindings bindings = engine.createBindings();
5859

5960
bindings.put("shNavigationComponent", shBindings.getShNavigationComponent());
@@ -75,4 +76,27 @@ public ScriptEngine scriptEngine(ShNashornEngineBindings shBindings) {
7576
return null;
7677
}
7778

79+
private ScriptEngine rhinoEngine() throws ClassNotFoundException, NoSuchMethodException, InstantiationException,
80+
IllegalAccessException, InvocationTargetException {
81+
ScriptEngine engine;
82+
Class<?> rhinoScriptEngineFactory = Class.forName(RHINO_CLASS);
83+
Method getScriptEngine = rhinoScriptEngineFactory.getDeclaredMethod("getScriptEngine");
84+
ScriptEngineFactory scriptEngineFactory = (ScriptEngineFactory) rhinoScriptEngineFactory
85+
.getDeclaredConstructor().newInstance();
86+
engine = (ScriptEngine) getScriptEngine.invoke(scriptEngineFactory);
87+
return engine;
88+
}
89+
90+
private ScriptEngine nashornEngine(ShNashornEngineBindings shBindings) throws ClassNotFoundException,
91+
NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
92+
ScriptEngine engine;
93+
Class<?> nashornScriptEngineFactory = Class.forName(NASHORN_CLASS);
94+
Method getScriptEngine = nashornScriptEngineFactory.getDeclaredMethod("getScriptEngine", String[].class);
95+
ScriptEngineFactory scriptEngineFactory = (ScriptEngineFactory) nashornScriptEngineFactory
96+
.getDeclaredConstructor().newInstance();
97+
engine = (ScriptEngine) getScriptEngine.invoke(scriptEngineFactory,
98+
shBindings.getShWebsiteProperties().getNashornAsObject());
99+
return engine;
100+
}
101+
78102
}

src/main/java/com/viglet/shio/website/nashorn/ShRhinoEngineConfiguration.java

Lines changed: 0 additions & 76 deletions
This file was deleted.

src/main/resources/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ shio.config.system="/system"
77
shio.config.auth="/provider/auth/%s"
88
shio.config.exchange="/provider/exchange/%s"
99
shio.website.nashorn=--persistent-code-cache,--optimistic-types=true,-pcc,--class-cache-size=50000
10-
10+
shio.website.javascript.engine=nashorn
1111
shio.allowedOrigins=localhost
1212
shio.plugin.blogger=com.viglet.shio.plugin.ShImporterBloggerPlugin
1313

system.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
java.runtime.version=14
1+
java.runtime.version=17

0 commit comments

Comments
 (0)