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

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

Introduction

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

Prototype

public final boolean isArray() 

Source Link

Document

Check if this ScriptObject is an array

Usage

From source file:com.pivotal.cf.mobile.ats.json.ScriptObjectSerializer.java

License:Open Source License

@Override
public void serialize(ScriptObject value, JsonGenerator jgen, SerializerProvider provider)
        throws IOException, JsonGenerationException {

    if (value instanceof NativeDate) {
        if (dateSerializer == null) {
            dateSerializer = (StdDelegatingSerializer) new StdDelegatingSerializer(ScriptObject.class,
                    new StdConverter<ScriptObject, String>() {
                        @Override
                        public String convert(ScriptObject value) {
                            return NativeDate.toJSON(value, null).toString();
                        }//from w ww. ja v  a2  s .  c  o m
                    }).createContextual(provider, null);
        }
        dateSerializer.serialize(value, jgen, provider);
    } else if (value instanceof ScriptFunction) {
        if (functionSerializer == null) {
            functionSerializer = (StdDelegatingSerializer) new StdDelegatingSerializer(ScriptObject.class,
                    new StdConverter<ScriptObject, Object>() {
                        @Override
                        public Object convert(ScriptObject value) {
                            return null;
                        }
                    }).createContextual(provider, null);
        }
        functionSerializer.serialize(value, jgen, provider);
    } else if (value.isArray()) {
        if (arraySerializer == null) {
            arraySerializer = (StdDelegatingSerializer) new StdDelegatingSerializer(ScriptObject.class,
                    new StdConverter<ScriptObject, Collection<Object>>() {
                        @Override
                        public Collection<Object> convert(ScriptObject value) {
                            return value.values();
                        }
                    }).createContextual(provider, null);
        }
        arraySerializer.serialize(value, jgen, provider);
    } else {
        if (objectSerializer == null) {
            objectSerializer = (StdDelegatingSerializer) new StdDelegatingSerializer(ScriptObject.class,
                    new StdConverter<ScriptObject, Map<String, Object>>() {
                        @Override
                        public Map<String, Object> convert(ScriptObject value) {
                            Map<String, Object> convertedMap = new LinkedHashMap<String, Object>();
                            value.propertyIterator().forEachRemaining(k -> convertedMap.put(k, value.get(k)));
                            return convertedMap;
                        }
                    }).createContextual(provider, null);
        }
        objectSerializer.serialize(value, jgen, provider);
    }
}

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

License:Open Source License

@Override
public synchronized void writeFullObjectToArray(Object value) {
    beginIfNeeded();/*from   w  w w  . ja v  a  2 s.  co  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: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]);
        }//from  w ww .ja  va 2s  .  com
        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:io.stallion.utils.json.ScriptObjectSerializer.java

License:Open Source License

@Override
public void serialize(ScriptObject value, JsonGenerator jgen, SerializerProvider provider)
        throws IOException, JsonProcessingException {
    if (value.isArray()) {
        jgen.writeStartArray();/*  w w  w.  j  a  v  a 2 s  .  c om*/
        int i = -1;
        for (;;) {
            if (value.has(++i)) {
                jgen.writeObject(value.get(i));
            } else {
                break;
            }
        }
        jgen.writeEndArray();
    } else {
        jgen.writeStartObject();
        for (Object key : value.keySet()) {
            jgen.writeObjectField(key.toString(), value.get(key));
        }
        jgen.writeEndObject();
    }
}