Example usage for jdk.nashorn.internal.runtime ScriptObject getOwnKeys

List of usage examples for jdk.nashorn.internal.runtime ScriptObject getOwnKeys

Introduction

In this page you can find the example usage for jdk.nashorn.internal.runtime ScriptObject getOwnKeys.

Prototype

public final String[] getOwnKeys(final boolean all) 

Source Link

Document

return an array of own property keys associated with the object.

Usage

From source file:com.threecrickets.jvm.json.nashorn.ScriptObjectEncoder.java

License:Mozilla Public License

public void encode(Object object, JsonContext context) throws IOException {
    ScriptObject scriptObject = (ScriptObject) object;

    context.out.append('{');

    String[] keys = scriptObject.getOwnKeys(true);
    int length = keys.length;
    if (length > 0) {
        context.newline();/*from  w  w  w .j av a  2 s.  co m*/

        for (int i = 0; i < length; i++) {
            String key = keys[i];
            Object value = scriptObject.get(key);

            context.indentNested();
            context.quoted(key);
            context.colon();
            context.nest().encode(value);

            if (i < length - 1)
                context.comma();
        }

        context.newline();
        context.indent();
    }

    context.out.append('}');
}

From source file:io.lightlink.utils.Utils.java

License:Open Source License

public static Object tryConvertToJavaCollections(Object value) {
    if (value instanceof Object[]) {
        value = Arrays.asList((Object[]) value);
    } else if (value instanceof int[]) {
        List<Object> res = new ArrayList<Object>();
        for (int i = 0; i < ((int[]) value).length; i++) {
            res.add(((int[]) value)[i]);
        }/* w ww.j  a  v a  2  s . co m*/
        return res;
    } else if (value instanceof double[]) {
        List<Object> res = new ArrayList<Object>();
        for (int i = 0; i < ((double[]) value).length; i++) {
            res.add(((double[]) value)[i]);
        }
        return res;
    } else if (value instanceof float[]) {
        List<Object> res = new ArrayList<Object>();
        for (int i = 0; i < ((float[]) value).length; i++) {
            res.add(((float[]) value)[i]);
        }
        return res;
    } else if (value instanceof ScriptObjectMirror
            && "Date".equalsIgnoreCase(((ScriptObjectMirror) value).getClassName())) {
        Double time = (Double) ((ScriptObjectMirror) value).callMember("getTime");
        return new Date(time.longValue());

    } else if (value instanceof ScriptObject) {
        ScriptObject scriptObject = (ScriptObject) value;
        if (scriptObject.isArray()) {
            String[] ownKeys = scriptObject.getOwnKeys(false);
            List<Object> res = new ArrayList<Object>();
            for (String key : ownKeys) {
                Object propertyValue = scriptObject.get(key);
                propertyValue = tryConvertToJavaCollections(propertyValue);
                res.add(propertyValue);
            }
            return res;

        } else {
            String[] ownKeys = scriptObject.getOwnKeys(true);
            Map<String, Object> res = new LinkedHashMap<String, Object>();
            for (String key : ownKeys) {
                Object propertyValue = scriptObject.get(key);
                propertyValue = tryConvertToJavaCollections(propertyValue);
                res.put(key, propertyValue);
            }
            return res;
        }
    } else if (value instanceof ScriptObjectMirror) {
        ScriptObjectMirror ScriptObjectMirror = (ScriptObjectMirror) value;
        if (ScriptObjectMirror.isArray()) {
            String[] ownKeys = ScriptObjectMirror.getOwnKeys(false);
            List<Object> res = new ArrayList<Object>();
            for (String key : ownKeys) {
                Object propertyValue = ScriptObjectMirror.get(key);
                propertyValue = tryConvertToJavaCollections(propertyValue);
                res.add(propertyValue);
            }
            return res;
        } else {
            String[] ownKeys = ScriptObjectMirror.getOwnKeys(true);
            Map<String, Object> res = new LinkedHashMap<String, Object>();
            for (String key : ownKeys) {
                Object propertyValue = ScriptObjectMirror.get(key);
                propertyValue = tryConvertToJavaCollections(propertyValue);
                res.put(key, propertyValue);
            }
            return res;
        }
    }
    return value;
}

From source file:org.bson.jvm.nashorn.ScriptObjectCodec.java

License:Apache License

public void encode(BsonWriter writer, Object object, EncoderContext encoderContext) {
    ScriptObject scriptObject = (ScriptObject) object;

    writer.writeStartDocument();/*from  w w w  .ja va 2s.  co  m*/
    for (String key : scriptObject.getOwnKeys(true)) {
        Object value = scriptObject.get(key);
        writer.writeName(key);
        BsonUtil.writeChild(value, writer, encoderContext, codecRegistry);
    }
    writer.writeEndDocument();
}

From source file:org.siphon.common.js.JsTypeUtil.java

License:Open Source License

private static Object jsObjectToJava(ScriptObject object) throws UnsupportedConversionException {
    if (object.containsKey("_d2js_type")) {
        String type = object.get("_d2js_type").toString();
        Object value = object.get("value");
        return jsObjectToJava(type, value);
    }/*  w ww  .  j a v a2  s . c  o m*/

    if (object instanceof NativeDate) {
        return jsObjectToJava((NativeDate) object);
    }

    if (object instanceof NativeArray) {
        return jsObjectToJava((NativeArray) object);
    }

    if (object instanceof NativeRegExp) {
        return jsObjectToJava((NativeRegExp) object);
    }

    if (object instanceof ScriptFunction) {
        return jsObjectToJava((ScriptFunction) object);
    }

    if (object instanceof NativeString) {
        return jsObjectToJava((NativeString) object);
    }

    Map<String, Object> result = new HashMap<>();
    String[] names = object.getOwnKeys(false);
    for (int i = 0; i < names.length; i++) {
        String name = names[i];
        Object value = object.get(name);
        result.put(name, jsObjectToJava(value));
    }
    return result;
}

From source file:org.siphon.jsmongo.MongoExecutor.java

License:Open Source License

public Document jsObjectToDocument(ScriptObject object) throws SqlExecutorException {
    Document document = new Document();
    String[] names = object.getOwnKeys(false);
    for (int i = 0; i < names.length; i++) {
        String name = names[i];//from  w  ww.  jav  a2 s.c o m
        Object value = object.get(name);
        document.append(name, jsValueToBson(value));
    }

    return document;
}

From source file:org.siphon.jsmongo.MongoExecutor.java

License:Open Source License

private BsonDocument jsObjectToBsonDocument(ScriptObject object) throws SqlExecutorException {
    BsonDocument document = new BsonDocument();
    String[] names = object.getOwnKeys(false);
    for (int i = 0; i < names.length; i++) {
        String name = names[i];/*from w ww  .  j  a va2s .  co m*/
        Object value = object.get(name);
        document.append(name, jsValueToBson(value));
    }

    return document;
}

From source file:org.xbib.elasticsearch.script.nashorn.NashornUnwrapper.java

License:Apache License

/**
 * Convert an object from a script wrapper value to a serializable value valid outside
 * of the Nashorn script processor context.
 *
 * This includes converting Array objects to Lists of valid objects.
 *
 * @param value the value to convert from script wrapper object to external object value
 * @return unwrapped and converted value
 *//*from   w w w. ja  v a2 s.  c o m*/
public static Object unwrapValue(Object value) {
    if (value == null) {
        return null;
    }
    if (value instanceof NativeArray) {
        NativeArray nativeArray = (NativeArray) value;
        ArrayData data = nativeArray.getArray();
        int length = (int) data.length();
        ArrayList<Object> list = new ArrayList<Object>(length);
        for (int i = 0; i < length; i++) {
            list.add(unwrapValue(data.getObject(i)));
        }
        return list;
    } else if (value instanceof Map) {
        Map map = (Map) value;
        Map<Object, Object> result = new LinkedHashMap<Object, Object>();
        for (Object key : map.keySet()) {
            result.put(key, unwrapValue(map.get(key)));
        }
        return result;
    } else if (value instanceof ScriptObject) {
        ScriptObject object = (ScriptObject) value;
        Map<Object, Object> result = new LinkedHashMap<Object, Object>();
        for (Object key : object.getOwnKeys(true)) {
            result.put(key, unwrapValue(object.get(key)));
        }
        return result;
    } else if (value instanceof Undefined) {
        return null;
    } else if (value instanceof ConsString) {
        return value.toString();
    } else {
        return value;
    }
}