Skip to content

Commit

Permalink
Merge pull request #105 from fmtn/feature/change-js-engine
Browse files Browse the repository at this point in the history
Changed Nashorn to GraalVM with Nashorn compability enabled
  • Loading branch information
northlander authored Nov 17, 2021
2 parents 60f140a + 92872bf commit a9dfcba
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 7 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Changed
- Durable subscriptions (by @erwindon)
- Option to add client id
- #105 changed Nashorn javascript engine to GraalVM JS.

## [1.5.0]
### Removed
Expand Down
10 changes: 10 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,16 @@
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js</artifactId>
<version>21.3.0</version>
</dependency>
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js-scriptengine</artifactId>
<version>21.3.0</version>
</dependency>

<!-- Test dependencies -->
<dependency>
Expand Down
1 change: 1 addition & 0 deletions src/main/java/co/nordlander/a/A.java
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ public enum Protocol {
}

public static void main(String[] args) {
System.setProperty("polyglot.engine.WarnInterpreterOnly", "false");
A a = new A();
try { a.run(args); } catch (Exception e) {
e.printStackTrace();
Expand Down
23 changes: 16 additions & 7 deletions src/main/java/co/nordlander/a/MessageDumpTransformer.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.function.Predicate;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.script.*;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
Expand All @@ -39,9 +38,19 @@
public class MessageDumpTransformer {


protected ScriptEngineManager mgr = new ScriptEngineManager();
protected ScriptEngine engine = mgr.getEngineByName("JavaScript");
protected ScriptEngineManager mgr;
protected ScriptEngine engine;
protected Bindings bindings;
protected Map<String, Object> context = new TreeMap<>();

public MessageDumpTransformer(){
mgr = new ScriptEngineManager();
engine = mgr.getEngineByName("js");
bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("polyglot.js.nashorn-compat", true);
bindings.put("polyglot.js.allowHostAccess", true);
bindings.put("polyglot.js.allowHostClassLookup", (Predicate<String>) s -> true);
}

public MessageDump transformMessage(MessageDump msg, String script) throws ScriptException, IOException{
if (StringUtils.isBlank(script)) {
Expand Down Expand Up @@ -71,9 +80,9 @@ protected String toScript(final String script) throws IOException {
}

protected MessageDump doTransformMessage(MessageDump msg, String script) throws ScriptException{
engine.put("msg", msg);
bindings.put("msg", msg);
for (Map.Entry<String, Object> entry : context.entrySet() ) {
engine.put(entry.getKey(), entry.getValue());
bindings.put(entry.getKey(), entry.getValue());
}
engine.eval(script);
return msg;
Expand Down
2 changes: 2 additions & 0 deletions src/test/java/co/nordlander/a/BaseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ public abstract class BaseTest {

@Before
public void setupJMS() throws Exception {
System.setProperty("polyglot.engine.WarnInterpreterOnly", "false");

cf = getConnectionFactory();
connection = cf.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Expand Down

0 comments on commit a9dfcba

Please sign in to comment.