Example usage for jdk.nashorn.internal.objects NativeArray asObjectArray

List of usage examples for jdk.nashorn.internal.objects NativeArray asObjectArray

Introduction

In this page you can find the example usage for jdk.nashorn.internal.objects NativeArray asObjectArray.

Prototype

public Object[] asObjectArray() 

Source Link

Document

Return the array contents upcasted as an ObjectArray, regardless of representation

Usage

From source file:io.lightlink.output.JSONResponseStream.java

License:Open Source License

@Override
public synchronized void writeFullObjectToArray(Object value) {
    beginIfNeeded();//from w  w  w  .  j a  va  2s.  c o m

    comma();

    if (value != null && value instanceof jdk.nashorn.internal.runtime.ScriptObject) {
        ScriptObject so = (ScriptObject) value;
        if (so.isArray()) {
            writeArrayStart();
            int length = ((Number) so.get("length")).intValue();
            for (int i = 0; i < length; i++) {
                writeFullObjectToArray(genericDateConvert(so.get(i)));
            }
            writeArrayEnd();
        } else {
            writeObjectStart();
            for (Object key : so.keySet()) {
                writeProperty("" + key, genericDateConvert(so.get(key)));
            }
            writeObjectEnd();
        }
        return;

    } else if (value != null && value instanceof jdk.nashorn.api.scripting.JSObject) {
        JSObject jsObject = (JSObject) value;
        if (jsObject.isArray()) {
            writeArrayStart();
            int length = ((Number) jsObject.getMember("length")).intValue();
            for (int i = 0; i < length; i++) {
                writeFullObjectToArray(genericDateConvert(jsObject.getSlot(i)));
            }
            writeArrayEnd();
        } else {
            writeObjectStart();
            for (String key : jsObject.keySet()) {
                writeProperty(key, genericDateConvert(jsObject.getMember(key)));
            }
            writeObjectEnd();
        }
        return;
    } else if (value != null && value instanceof jdk.nashorn.internal.objects.NativeArray) {
        NativeArray array = (NativeArray) value;
        value = array.asObjectArray();
    }

    List list = new ArrayList();
    value = handlePrimitiveArrays(value, list);
    if (value instanceof Map) {
        writeObjectStart();
        Map<Object, Object> map = (Map<Object, Object>) value;
        if (value instanceof BeanMap) {
            for (Map.Entry<Object, Object> entry : map.entrySet()) {
                if (!"class".equals(entry.getKey())) {
                    writeProperty(entry.getKey() + "", entry.getValue());
                }
            }
        } else {
            for (Map.Entry<Object, Object> entry : map.entrySet()) {
                writeProperty(entry.getKey() + "", entry.getValue());
            }
        }
        writeObjectEnd();
    } else if (value instanceof List) {
        writeArrayStart();
        for (Object o : (List) value) {
            writeFullObjectToArray(o);
        }
        writePropertyArrayEnd();
    } else if (value instanceof InputStream) {
        writeInputStream((InputStream) value);
    } else if (value instanceof Reader) {
        writeFromReader((Reader) value);
    } else if (value instanceof Object[]) {
        writeArrayStart();
        for (Object o : (Object[]) value) {
            writeFullObjectToArray(o);
        }
        writeArrayEnd();
    } else if (value instanceof Date) {
        String dateFormat;
        if (getRunnerContext() != null && getRunnerContext().getTypesFacade().getCustomDatePattern() != null) {
            TypesFacade tf = getRunnerContext().getTypesFacade();
            dateFormat = tf.getCustomDatePattern();
        } else
            dateFormat = DateConverter.UNIVERSAL_DATE_FORMAT;

        writeString(new SimpleDateFormat(dateFormat).format(value));

    } else if (value == null) {

        writeUnquoted("null");

    } else if (value instanceof Number || value instanceof Boolean) {

        writeUnquoted(value);

    } else {

        writeString(value.toString());

    }

    commaNeeded = true;

}

From source file:net.orzo.lib.DataStructures.java

License:Apache License

/**
 * From a JavaScript array it creates a new one with unique occurrence of
 * items./*from w w  w.  j a  v a  2  s  . c o  m*/
 *
 * @param jsArray
 *            a JavaScript or Java array
 * @param key
 *            a JavaScript function to access values to be considered; null
 *            is also possible (in such case, the value itself is used)
 * @return a JavaScript array with unique items
 */
public Object uniq(Object jsArray, ScriptFunction key) {
    Set<Object> set = new HashSet<>();
    Collection<?> origData;

    if (jsArray.getClass().isArray()) {
        origData = Arrays.asList(jsArray);

    } else {
        NativeArray tmp = (NativeArray) ScriptUtils.unwrap(jsArray);
        origData = Arrays.asList(tmp.asObjectArray());
    }

    try {
        if (key == null) {
            set.addAll(origData);

        } else {
            for (Object item : origData) {
                MethodHandle mh = key.getBoundInvokeHandle(item);
                set.add(mh.invoke(item));
            }
        }
        return set; // TODO wrapping???

    } catch (Throwable ex) {
        throw new LibException(ex);
    }
}