Example usage for jdk.nashorn.api.scripting ScriptObjectMirror containsKey

List of usage examples for jdk.nashorn.api.scripting ScriptObjectMirror containsKey

Introduction

In this page you can find the example usage for jdk.nashorn.api.scripting ScriptObjectMirror containsKey.

Prototype

@Override
    public boolean containsKey(final Object key) 

Source Link

Usage

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);
    }
}