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

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

Introduction

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

Prototype

public Collection<Object> values() 

Source Link

Document

Return the values of the properties in the ScriptObject (java.util.Map-like method to help ScriptObjectMirror implementation)

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();
                        }/*  w  w  w. java 2s  . com*/
                    }).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);
    }
}