Example usage for jdk.nashorn.api.scripting JSObject isArray

List of usage examples for jdk.nashorn.api.scripting JSObject isArray

Introduction

In this page you can find the example usage for jdk.nashorn.api.scripting JSObject isArray.

Prototype

public boolean isArray();

Source Link

Document

Is this an array object?

Usage

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();
    }
}