private boolean functionExists(String functionName) { Object som = exports.getMember(functionName); return som != null && !som.toString().equals("undefined"); }
@Override public ScriptValue getMember( final String key ) { return this.factory.newValue( this.value.getMember( key ) ); }
import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import jdk.nashorn.api.scripting.ScriptObjectMirror; public class Test { public static void main(String[] args) throws Exception { String script = "var f = {\n" + " value: 0,\n" + " add: function(n) {\n" + " this.value += n;\n" + " return this.value;\n" + " }\n" + "};\n" + "f; // return object to Java\n"; ScriptEngine engine = new ScriptEngineManager().getEngineByName("js"); ScriptObjectMirror obj = (ScriptObjectMirror)engine.eval(script); System.out.println("obj.value = " + obj.getMember("value")); System.out.println("obj.add(5): " + obj.callMember("add", 5)); System.out.println("obj.add(-3): " + obj.callMember("add", -3)); System.out.println("obj.value = " + obj.getMember("value")); } }
public VertxGenConverterMap(Map<String, Object> other) { for (Map.Entry<String, Object> entry: other.entrySet()) { if (entry.getValue() == null) { put(entry.getKey(), null); } else { if (!(entry.getValue() instanceof ScriptObjectMirror)) { throw new IllegalArgumentException("Array does not contain objects"); } ScriptObjectMirror mirror = (ScriptObjectMirror)entry.getValue(); if (mirror.hasMember("_jdel")) { put(entry.getKey(), mirror.getMember("_jdel")); } else { throw new IllegalArgumentException("Object in array is not @VertxGen object"); } } } } }
public VertxGenConverterList(List other) { for (Object entry: other) { if (entry == null) { add(null); } else { if (!(entry instanceof ScriptObjectMirror)) { throw new IllegalArgumentException("Array does not contain objects"); } ScriptObjectMirror mirror = (ScriptObjectMirror)entry; if (mirror.hasMember("_jdel")) { add(mirror.getMember("_jdel")); } else { throw new IllegalArgumentException("Object in array is not @VertxGen object"); } } } } }
public VertxGenConverterSet(List other) { for (Object entry: other) { if (entry == null) { add(null); } else { if (!(entry instanceof ScriptObjectMirror)) { throw new IllegalArgumentException("Array does not contain objects"); } ScriptObjectMirror mirror = (ScriptObjectMirror)entry; if (mirror.hasMember("_jdel")) { add(mirror.getMember("_jdel")); } else { throw new IllegalArgumentException("Object in array is not @VertxGen object"); } } } } }