List of usage examples for jdk.nashorn.internal.runtime ScriptObject isArray
public final boolean isArray()
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(); } }