List of usage examples for jdk.nashorn.api.scripting JSObject isArray
public boolean isArray();
From source file:com.eas.client.reports.JSDynaBean.java
public static Object wrap(Object aValue, int aTimezoneOffset) { aValue = Scripts.getSpace().toJava(aValue); if (aValue instanceof Date) { return convertDateToExcelDate((Date) aValue, aTimezoneOffset); } else if (aValue instanceof Number || aValue instanceof Boolean || aValue instanceof CharSequence || aValue == null) {//from w ww. java 2 s .c o m return aValue; } else if (aValue instanceof JSObject) { JSObject jsValue = (JSObject) aValue; if (jsValue.isArray() || Scripts.getSpace().isArrayDeep(jsValue)) { return new JSDynaList(jsValue, aTimezoneOffset); } else if (!jsValue.isFunction()) { return new JSDynaBean(jsValue, aTimezoneOffset); } else { return null; } } else { return aValue; } }
From source file:com.eas.client.threetier.json.QueryJSONReader.java
public static PlatypusQuery read(JSObject o) { PlatypusQuery query = new PlatypusQuery(null); String title = JSType.toString(o.getMember(TITLE_PROP_NAME)); query.setTitle(title);/*from w ww . ja va2 s . c o m*/ String entityName = JSType.toString(o.getMember(APP_ELEMENT_PROP_NAME)); query.setEntityName(entityName); // parameters JSObject jsParameters = (JSObject) o.getMember(PARAMETERS_PROP_NAME); assert jsParameters != null && jsParameters.isArray(); Parameters params = new Parameters(); FieldsJSONReader.readFields(jsParameters, params); for (int i = 0; i < params.getParametersCount(); i++) { Parameter p = params.get(i + 1); query.putParameter(p.getName(), p.getType(), p.getValue()); } // fields JSObject jsFields = (JSObject) o.getMember(FIELDS_PROP_NAME); assert jsFields != null && jsFields.isArray(); Fields fields = new Fields(); FieldsJSONReader.readFields(jsFields, fields); query.setFields(fields); return query; }
From source file:de.axelfaust.alfresco.nashorn.repo.utils.SpecialModuleHandler.java
License:Open Source License
/** * {@inheritDoc}/* w w w . j a va 2s.com*/ */ @Override public Object getMember(final String name) { LOGGER.debug("Handling getMember {} on {}", name, this.delegate.isFunction() ? this.delegate.getMember("name") : new NativeLogMessageArgumentWrapper(this.delegate)); // can't handle callerProvided for getMember final AtomicReference<Object> resultRef = new AtomicReference<>(); if (this.callerTagged) { LOGGER.debug("Tagging callerUrl {}", this.callerUrl); this.withTaggedCallerFn.withTaggedCaller(() -> { resultRef.set(this.delegate.getMember(name)); }, this.callerUrl); } else { resultRef.set(this.delegate.getMember(name)); } Object result = resultRef.get(); LOGGER.debug("getMember {} yielded {}", name, result instanceof JSObject ? (((JSObject) result).isFunction() ? ((JSObject) result).getMember("name") : new NativeLogMessageArgumentWrapper((JSObject) result)) : result); if (result instanceof JSObject) { final JSObject scriptResult = (JSObject) result; if (scriptResult.isFunction() || (!scriptResult.isArray() && !ScriptObjectMirror.isUndefined(scriptResult))) { LOGGER.debug("Wrapping function result {} of getMember in special module handler", scriptResult.isFunction() ? scriptResult.getMember("name") : new NativeLogMessageArgumentWrapper(scriptResult)); result = new SpecialModuleHandler(scriptResult, this.callerProvided, this.callerTagged, this.callerUrl, this.withTaggedCallerFn); if (scriptResult.isFunction()) { ((SpecialModuleHandler) result).setThis(this.delegate, this); } } } return result; }
From source file:de.axelfaust.alfresco.nashorn.repo.utils.SpecialModuleHandler.java
License:Open Source License
/** * {@inheritDoc}//from w w w. j av a 2 s. c om */ @Override public Object getSlot(final int slot) { LOGGER.debug("Handling getSlot {} on {}", slot, this.delegate.isFunction() ? this.delegate.getMember("name") : new NativeLogMessageArgumentWrapper(this.delegate)); // can't handle callerProvided for getSlot final AtomicReference<Object> resultRef = new AtomicReference<>(); if (this.callerTagged) { LOGGER.debug("Tagging callerUrl {}", this.callerUrl); this.withTaggedCallerFn.withTaggedCaller(() -> { resultRef.set(this.delegate.getSlot(slot)); }, this.callerUrl); } else { resultRef.set(this.delegate.getSlot(slot)); } Object result = resultRef.get(); LOGGER.debug("getSlot {} yielded {}", slot, result instanceof JSObject ? (((JSObject) result).isFunction() ? ((JSObject) result).getMember("name") : new NativeLogMessageArgumentWrapper((JSObject) result)) : result); if (result instanceof JSObject) { final JSObject scriptResult = (JSObject) result; if (scriptResult.isFunction() || (!scriptResult.isArray() && !ScriptObjectMirror.isUndefined(scriptResult))) { LOGGER.debug("Wrapping function result {} of getSlot in special module handler", scriptResult.isFunction() ? scriptResult.getMember("name") : new NativeLogMessageArgumentWrapper(scriptResult)); result = new SpecialModuleHandler(scriptResult, this.callerProvided, this.callerTagged, this.callerUrl, this.withTaggedCallerFn); if (scriptResult.isFunction()) { ((SpecialModuleHandler) result).setThis(this.delegate, this); } } } return result; }
From source file:de.axelfaust.alfresco.nashorn.repo.utils.SpecialModuleHandler.java
License:Open Source License
/** * {@inheritDoc}//from w ww . j a v a 2 s.c om */ @Override public Collection<Object> values() { LOGGER.debug("Handling values on {}", this.delegate.isFunction() ? this.delegate.getMember("name") : new NativeLogMessageArgumentWrapper(this.delegate)); // can't handle callerProvided for values final AtomicReference<Collection<Object>> resultRef = new AtomicReference<>(); if (this.callerTagged) { LOGGER.debug("Tagging callerUrl {}", this.callerUrl); this.withTaggedCallerFn.withTaggedCaller(() -> { resultRef.set(this.delegate.values()); }, this.callerUrl); } else { resultRef.set(this.delegate.values()); } final Collection<Object> result = resultRef.get(); LOGGER.debug("values yielded {}", result); final List<Object> resultList = new ArrayList<>(); for (final Object resultElement : result) { if (resultElement instanceof JSObject) { final JSObject scriptResult = (JSObject) resultElement; if (scriptResult.isFunction() || (!scriptResult.isArray() && !ScriptObjectMirror.isUndefined(scriptResult))) { LOGGER.debug("Wrapping function result {} of values in special module handler", scriptResult.isFunction() ? scriptResult.getMember("name") : new NativeLogMessageArgumentWrapper(scriptResult)); final Object resultElementMod = new SpecialModuleHandler(scriptResult, this.callerProvided, this.callerTagged, this.callerUrl, this.withTaggedCallerFn); if (scriptResult.isFunction()) { ((SpecialModuleHandler) resultElementMod).setThis(this.delegate, this); } resultList.add(resultElementMod); } else { resultList.add(resultElement); } } else { resultList.add(resultElement); } } return resultList; }
From source file:game.engine.game.JavascriptConsole.java
License:Open Source License
/** * /*from w w w. j a va 2s.co m*/ */ private void dump(Object o, StringBuilder builder) { // handle known types if (o == null) { builder.append("null"); return; } else if (o instanceof String) { builder.append('"').append(o).append('"'); return; } // try to wrap JS values and dump them, or fall back to toString() o = jdk.nashorn.api.scripting.ScriptUtils.wrap(o); if (o instanceof JSObject) { JSObject object = (JSObject) o; if (object.isArray()) { builder.append('['); boolean first = true; for (Object element : object.values()) { if (first) { first = false; } else { builder.append(", "); } dump(element, builder); } builder.append("]"); } else if (object.isFunction()) { builder.append("function"); } else { builder.append('{'); boolean first = true; for (Object key : object.keySet()) { if (first) { first = false; } else { builder.append(", "); } dump(key, builder); builder.append(": "); dump(object.getMember(key.toString()), builder); } builder.append("}"); } } else { builder.append(o); } }
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 va 2s. com*/ 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.stallion.utils.json.JSObjectSerializer.java
License:Open Source License
@Override public void serialize(JSObject value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { if (value.isArray()) { jgen.writeStartArray();/*from w w w . j ava 2s.c o m*/ int i = -1; for (;;) { if (value.hasSlot(++i)) { jgen.writeObject(value.getSlot(i)); } else { break; } } jgen.writeEndArray(); } else { jgen.writeStartObject(); for (String key : value.keySet()) { jgen.writeObjectField(key, value.getMember(key)); } jgen.writeEndObject(); } }