List of usage examples for jdk.nashorn.api.scripting ScriptObjectMirror containsKey
@Override public boolean containsKey(final Object key)
From source file:hmi.flipper.behaviourselection.template.value.AbstractValue.java
License:BSD License
private Object js2Object(Object jsResult) { if (jsResult instanceof ScriptObjectMirror) { ScriptObjectMirror jsObject = (ScriptObjectMirror) jsResult; if (jsObject.size() > 0 && jsObject.containsKey("0")) { List list = new DefaultList(); for (int i = 0; i < jsObject.size(); i++) { Object toAdd = js2Object(jsObject.get("" + i)); if (toAdd == null) { break; // not a integer valued list }// w w w . j a v a 2 s. c o m if (toAdd instanceof Double) { list.addItemEnd((Double) toAdd); } else if (toAdd instanceof Integer) { list.addItemEnd((Integer) toAdd); } else if (toAdd instanceof List) { list.addItemEnd((List) toAdd); } else if (toAdd instanceof Record) { list.addItemEnd((Record) toAdd); } else { list.addItemEnd(toAdd.toString()); } } if (list.size() == ((ScriptObjectMirror) jsObject).size()) { return list; } } Record record = new DefaultRecord(); for (Entry<String, Object> ent : jsObject.entrySet()) { record.set(ent.getKey(), js2Object(ent.getValue())); } return record; } else if (jsResult instanceof Long || jsResult instanceof Double || jsResult instanceof Float) { if (jsResult instanceof Long) { return ((Long) jsResult).doubleValue(); } else if (jsResult instanceof Float) { return ((Long) jsResult).floatValue(); } else { return ((Double) jsResult); } } else if (jsResult instanceof Integer) { return (Integer) jsResult; } else if (jsResult instanceof String) { return (String) jsResult; } System.err.println("Could not parse JavaScript result to eligible DefaultRecord type! Type was: " + jsResult.getClass()); return jsResult.toString(); }
From source file:org.eclairjs.nashorn.Utils.java
License:Apache License
public static Object jsToJava(Object o) { if (o != null && !(o instanceof Undefined)) { logger.debug("jsToJava" + o.getClass().getName()); } else {/*from w ww . ja va 2s .c om*/ return o; } if (o instanceof jdk.nashorn.internal.objects.NativeArray) { Object array[] = ((NativeArray) o).asObjectArray(); ArrayList al = new ArrayList(); for (int i = 0; i < array.length; i++) { al.add(jsToJava(array[i])); } return al.toArray(); } if (o.getClass().isPrimitive()) return o; String packageName = o.getClass().getCanonicalName(); switch (packageName) { case "java.lang.String": case "java.lang.Integer": case "java.lang.Float": case "java.lang.Double": case "java.lang.Boolean": case "java.lang.Long": case "org.json.simple.JSONObject": case "java.lang.Object[]": case "java.lang.String[]": case "scala.Tuple2": case "scala.Tuple3": case "scala.Tuple4": return o; } if (packageName.startsWith("org.apache.spark")) return o; if (o instanceof WrappedClass) return ((WrappedClass) o).getJavaObject(); if (o instanceof ScriptObjectMirror) { ScriptObjectMirror m = (ScriptObjectMirror) o; if (m.hasMember("getJavaObject")) { return m.callMember("getJavaObject"); } if (m.isArray()) { try { if (m.containsKey("0")) { Object v = m.get("0"); if (v instanceof Double) { double[] doubleArray = (double[]) ScriptUtils.convert(m, double[].class); return doubleArray; } else if (v instanceof Integer) { int[] intArray = (int[]) ScriptUtils.convert(m, int[].class); return intArray; } else { Object[] objectArray = (Object[]) ScriptUtils.convert(m, Object[].class); return objectArray; } } } catch (ClassCastException e) { /* If the array contains ScriptObjectMirror the above conversions throws exception so we have to convert the contents of the array as well. */ ArrayList list = new ArrayList(); for (Object item : m.values()) { list.add(jsToJava(item)); } Object x = list.toArray(); return x; } } else { // throw new RuntimeException("js2java IMPLEMENT"+o); Object obj = ScriptObjectMirror.wrapAsJSONCompatible(o, null); String j = JSONValue.toJSONString(obj); return JSONValue.parse(j); } } else if (o instanceof jdk.nashorn.internal.runtime.ScriptObject) { ScriptObjectMirror jsObj = ScriptUtils.wrap((jdk.nashorn.internal.runtime.ScriptObject) o); if (jsObj.hasMember("getJavaObject")) { return jsObj.callMember("getJavaObject"); } } else if (o instanceof java.util.ArrayList) { ArrayList list = (ArrayList) o; int size = list.size(); for (int i = 0; i < size; i++) list.set(i, jsToJava(list.get(i))); return list; } else if (o instanceof StaticClass) { return o; } logger.warn("js2java NOT HANDLED " + packageName); return o; // Just return the Java object, it might user created like java.net.Socket //new RuntimeException().printStackTrace(); //throw new RuntimeException("js2java NOT HANDLED "+packageName); }
From source file:org.eclairjs.nashorn.wrap.sql.SparkSession.java
License:Apache License
static Row scriptObjectToRow(Object obj, List<Tuple2<String, DataType>> fieldsNames) { ScriptObjectMirror jsObject = null; WrappedClass wrappedClass = null;//from w w w .j a v a 2 s. c o m if (obj instanceof jdk.nashorn.internal.runtime.ScriptObject) jsObject = ScriptUtils.wrap((jdk.nashorn.internal.runtime.ScriptObject) obj); else if (obj instanceof ScriptObjectMirror) jsObject = (ScriptObjectMirror) obj; else if (obj instanceof WrappedClass) { wrappedClass = (WrappedClass) obj; } else throw new RuntimeException("not a script object"); List<Object> values = new ArrayList<>(); for (Tuple2<String, DataType> tuple : fieldsNames) { Object value = null; String name = tuple._1(); if (jsObject != null) { if (jsObject.containsKey(name)) { value = jsObject.get(name); // if it is getter function, call to get value value = castDataType(value, tuple._2()); } } else { String memberName = "get" + Character.toUpperCase(name.charAt(0)) + name.substring(1); if (wrappedClass.hasMember(memberName)) { WrappedFunction func = (WrappedFunction) wrappedClass.getMember(memberName); value = func.call(obj); // if it is getter function, call to get value value = castDataType(value, tuple._2()); } } values.add(value); } return RowFactory.create(values.toArray()); }
From source file:org.musetest.javascript.factory.JavascriptStepResource.java
License:Open Source License
private StepDescriptor createStepDescriptor(final ScriptObjectMirror result, MuseProject project) { return new DefaultStepDescriptor(JavascriptStep.class, project) { @Override/*from ww w . jav a 2 s .c o m*/ public String getType() { return getId(); } @Override public String getName() { if (result.containsKey("name")) return result.getMember("name").toString(); return super.getName(); } @Override public String getGroupName() { if (result.containsKey("group")) return result.getMember("group").toString(); return super.getGroupName(); } @Override public String getIconDescriptor() { if (result.containsKey("icon")) return result.getMember("icon").toString(); return super.getIconDescriptor(); } @Override public String getShortDescription() { if (result.containsKey("shortDescription")) return result.getMember("shortDescription").toString(); return super.getShortDescription(); } @Override public String getLongDescription() { if (result.containsKey("longDescription")) return result.getMember("longDescription").toString(); return super.getLongDescription(); } }; }
From source file:org.openremote.manager.rules.RulesetDeployment.java
License:Open Source License
/** * Marshal the JavaScript rules array into {@link Rule} instances. *///w w w. j ava 2 s. c o m protected void registerRulesJavascript(ScriptObjectMirror scriptRules) { if (scriptRules == null || !scriptRules.isArray()) { throw new IllegalArgumentException("No 'rules' array defined in ruleset"); } Collection<Object> rulesObjects = scriptRules.values(); for (Object rulesObject : rulesObjects) { ScriptObjectMirror rule = (ScriptObjectMirror) rulesObject; String name; if (!rule.containsKey("name")) { throw new IllegalArgumentException("Missing 'name' in rule definition"); } try { name = (String) rule.getMember("name"); } catch (ClassCastException ex) { throw new IllegalArgumentException("Defined 'name' of rule is not a string"); } String description; try { description = rule.containsKey("description") ? (String) rule.getMember("description") : null; } catch (ClassCastException ex) { throw new IllegalArgumentException("Defined 'description' is not a string in rule: " + name); } int priority; try { priority = rule.containsKey("priority") ? (int) rule.getMember("priority") : DEFAULT_RULE_PRIORITY; } catch (ClassCastException ex) { throw new IllegalArgumentException("Defined 'priority' is not a number in rule: " + name); } if (!rule.containsKey("when")) { throw new IllegalArgumentException("Missing 'when' function in rule: " + name); } Condition when; try { ScriptObjectMirror whenMirror = (ScriptObjectMirror) rule.getMember("when"); if (!whenMirror.isFunction()) { throw new IllegalArgumentException("Defined 'when' is not a function in rule: " + name); } when = whenMirror.to(Condition.class); } catch (ClassCastException ex) { throw new IllegalArgumentException("Defined 'when' is not a function in rule: " + name); } Action then; try { ScriptObjectMirror thenMirror = (ScriptObjectMirror) rule.getMember("then"); if (!thenMirror.isFunction()) { throw new IllegalArgumentException("Defined 'then' is not a function in rule: " + name); } then = thenMirror.to(Action.class); } catch (ClassCastException ex) { throw new IllegalArgumentException("Defined 'then' is not a function in rule: " + name); } RulesEngine.LOG.info("Registering rule: " + name); rules.register(new RuleBuilder().name(name).description(description).priority(priority).when(when) .then(then).build()); } }
From source file:org.siphon.common.js.JsEngineUtil.java
License:Open Source License
public static Object eval(ScriptEngine jsEngine, String srcFile, boolean onlyOnce, boolean preservePathInStack) throws Exception { ScriptObjectMirror importedFiles = (ScriptObjectMirror) jsEngine.get("IMPORTED_FILES"); if (importedFiles.containsKey(srcFile)) { if (onlyOnce) return null; } else {//from ww w.j av a 2s.c om importedFiles.put(srcFile, true); } ScriptObjectMirror stk = (ScriptObjectMirror) jsEngine.get("IMPORTS_PATH_STACK"); // NativeArray.pushObject(stk.to(NativeArray.class), srcFile); //stk.callMember("push", srcFile); try { String code = FileUtils.readFileToString(new File(srcFile), "utf-8"); return eval(jsEngine, srcFile, code); } catch (ScriptException | FileNotFoundException e) { throw e; } finally { if (!preservePathInStack) NativeArray.pop(stk.to(NativeArray.class)); } }
From source file:org.siphon.common.js.JsEngineUtil.java
License:Open Source License
public static Object eval(ScriptEngine jsEngine, String srcFile, String aliasPath, String script, boolean onlyOnce, boolean preservePathInStack) throws NoSuchMethodException, ScriptException { ScriptObjectMirror importedFiles = (ScriptObjectMirror) jsEngine.get("IMPORTED_FILES"); if (importedFiles.containsKey(srcFile)) { if (onlyOnce) return null; } else {/*from ww w .ja v a2 s .c om*/ importedFiles.put(srcFile, true); } ScriptObjectMirror stk = (ScriptObjectMirror) jsEngine.get("IMPORTS_PATH_STACK"); //NativeArray.pushObject((Object)(stk.to(NativeArray.class)), (Object)srcFile); stk.callMember("push", srcFile); try { return eval(jsEngine, aliasPath, script); } catch (ScriptException e) { throw e; } finally { if (!preservePathInStack) NativeArray.pop(stk.to(NativeArray.class)); } }
From source file:org.siphon.common.js.JsTypeUtil.java
License:Open Source License
private static Object jsObjectToJava(ScriptObjectMirror object) throws UnsupportedConversionException { if (!object.containsKey("_d2js_type")) { if (object.isArray()) { return jsObjectToJava(object.to(NativeArray.class)); }//from w w w. ja va 2s.c om Object sealed = object.to(Object.class); if (sealed instanceof ScriptObject) { return jsObjectToJava((ScriptObject) sealed); } else { return jsObjectToJava(sealed); } } else { String type = object.get("_d2js_type").toString(); Object value = object.get("value"); return jsObjectToJava(type, value); } }
From source file:org.siphon.d2js.D2jsRunner.java
License:Open Source License
public void completeTask(Task task, Exception exception) throws Exception { ScriptObjectMirror cb = null; if (exception == null) { cb = (ScriptObjectMirror) task.end(); } else {/*from w ww . j ava 2 s . com*/ cb = (ScriptObjectMirror) task.end(exception, engine); } if (cb != null && cb.containsKey("callback")) { ((Invocable) engine).invokeMethod(cb, "callback", cb); } }
From source file:org.siphon.d2js.jshttp.ServerUnitManager.java
License:Open Source License
public void onFileChanged(WatchEvent<Path> ev, Path file) { Kind<Path> kind = ev.kind(); String filename = file.toString(); try {/* w ww .jav a 2 s . c om*/ if (kind == StandardWatchEventKinds.ENTRY_DELETE) { if (allD2js.containsKey(filename)) { if (logger.isDebugEnabled()) { logger.debug(filename + " dropped"); } ScriptObjectMirror d2js = allD2js.get(filename); if (d2js.containsKey("releaseD2js")) { d2js.callMember("releaseD2js"); } allD2js.remove(filename); //TODO call releaseD2js? } } else if (kind == StandardWatchEventKinds.ENTRY_MODIFY) { if (allD2js.containsKey(filename)) { if (logger.isDebugEnabled()) { logger.debug(filename + " changed"); } ScriptObjectMirror d2js = allD2js.get(filename); if (d2js.containsKey("releaseD2js")) { d2js.callMember("releaseD2js"); } allD2js.remove(filename); } } } catch (Exception e) { logger.error("file synchronize failed on " + filename + " changed ", e); } }