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

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

Introduction

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

Prototype

public Object getSlot(final int index);

Source Link

Document

Retrieves an indexed member of this JavaScript object.

Usage

From source file:com.eas.client.queries.LocalQueriesProxy.java

private void readScriptFields(String aQueryName, JSObject sSchema, Fields fields, Scripts.Space aSpace) {
    Object oLength = sSchema.getMember("length");
    if (oLength instanceof Number) {
        int length = ((Number) oLength).intValue();
        for (int i = 0; i < length; i++) {
            Object oElement = sSchema.getSlot(i);
            if (oElement instanceof JSObject) {
                JSObject sElement = (JSObject) oElement;
                Object oFieldName = aSpace
                        .toJava(sElement.hasMember("name") ? sElement.getMember("name") : null);
                if (oFieldName instanceof String && !((String) oFieldName).isEmpty()) {
                    String sFieldName = (String) oFieldName;
                    Field field = fields instanceof Parameters ? new Parameter() : new Field();
                    field.setTypeInfo(DataTypeInfo.OTHER);
                    fields.add(field);/*from   w  w  w  .  ja  v  a  2  s  .c  o m*/
                    field.setName(sFieldName);
                    field.setOriginalName(sFieldName);
                    Object oEntity = aSpace
                            .toJava(sElement.hasMember("entity") ? sElement.getMember("entity") : null);
                    if (oEntity instanceof String && !((String) oEntity).isEmpty()) {
                        field.setTableName((String) oEntity);
                    } else {
                        field.setTableName(aQueryName);
                    }
                    Object oDescription = aSpace.toJava(
                            sElement.hasMember("description") ? sElement.getMember("description") : null);
                    if (oDescription instanceof String && !((String) oDescription).isEmpty()) {
                        field.setDescription((String) oDescription);
                    }
                    Object oType = sElement.getMember("type");
                    if (oType instanceof JSObject && ((JSObject) oType).isFunction()) {
                        Object ofName = aSpace.toJava(((JSObject) oType).getMember("name"));
                        if (ofName instanceof String) {
                            String fName = (String) ofName;
                            if (String.class.getSimpleName().equals(fName)) {
                                field.setTypeInfo(DataTypeInfo.VARCHAR.copy());
                            } else if (Number.class.getSimpleName().equals(fName)) {
                                field.setTypeInfo(DataTypeInfo.DECIMAL.copy());
                            } else if (Boolean.class.getSimpleName().equals(fName)) {
                                field.setTypeInfo(DataTypeInfo.BOOLEAN.copy());
                            } else if (Date.class.getSimpleName().equals(fName)) {
                                field.setTypeInfo(DataTypeInfo.TIMESTAMP.copy());
                            }
                        }
                    }
                    Object oRequired = aSpace
                            .toJava(sElement.hasMember("required") ? sElement.getMember("required") : null);
                    if (oRequired instanceof Boolean) {
                        boolean bRequired = (Boolean) oRequired;
                        field.setNullable(!bRequired);
                    }
                    Object oKey = aSpace.toJava(sElement.hasMember("key") ? sElement.getMember("key") : null);
                    if (oKey instanceof Boolean) {
                        boolean bKey = (Boolean) oKey;
                        field.setPk(bKey);
                        field.setNullable(false);
                    }
                    Object oRef = sElement.hasMember("ref") ? sElement.getMember("ref") : null;
                    if (oRef instanceof JSObject) {
                        JSObject sRef = (JSObject) oRef;
                        Object oProperty = aSpace
                                .toJava(sRef.hasMember("property") ? sRef.getMember("property") : null);
                        if (oProperty instanceof String) {
                            String sProperty = (String) oProperty;
                            if (!sProperty.isEmpty()) {
                                Object oRefEntity = sRef.hasMember("entity") ? sRef.getMember("entity") : null;
                                String sRefEntity;
                                if (oRefEntity instanceof String && !((String) oRefEntity).isEmpty()) {
                                    sRefEntity = (String) oRefEntity;
                                } else {
                                    sRefEntity = aQueryName;
                                }
                                field.setFk(new ForeignKeySpec(null, aQueryName, field.getName(), null,
                                        ForeignKeySpec.ForeignKeyRule.CASCADE,
                                        ForeignKeySpec.ForeignKeyRule.CASCADE, false, null, sRefEntity,
                                        sProperty, null));
                            }
                        }
                    }
                }
            }
        }
    }
}

From source file:com.eas.client.RemoteModulesProxy.java

@Override
public ModuleStructure getModule(String aName, Scripts.Space aSpace, Consumer<ModuleStructure> onSuccess,
        Consumer<Exception> onFailure) throws Exception {
    if (onSuccess != null) {
        requestModuleStructure(aName, aSpace, (ModuleStructureRequest.Response structureResp) -> {
            try {
                ModuleStructure structure = new ModuleStructure();
                JSObject jsStructure = (JSObject) aSpace.parseJson(structureResp.getJson());
                readCommons(jsStructure, structure);
                JSObject jsParts = (JSObject) jsStructure.getMember(STRUCTURE_PROP_NAME);
                int partsLength = JSType.toInteger(jsParts.getMember(LENGTH_PROP_NAME));
                for (int i = 0; i < partsLength; i++) {
                    String resourceName = JSType.toString(jsParts.getSlot(i));
                    getResource(resourceName, aSpace, (File aSynced) -> {
                        structure.getParts().addFile(aSynced);
                        if (structure.getParts().getFiles().size() == partsLength) {
                            id2files.put(aName, structure.getParts()
                                    .findFileByExtension(PlatypusFiles.JAVASCRIPT_EXTENSION));
                            onSuccess.accept(structure);
                        }//from  w ww .j  ava 2  s.co  m
                    }, onFailure);
                }
            } catch (Exception ex) {
                if (onFailure != null) {
                    onFailure.accept(ex);
                }
            }
        }, onFailure);
        return null;
    } else {
        ModuleStructureRequest.Response structureResp = requestModuleStructure(aName, null, null, null);
        ModuleStructure structure = new ModuleStructure();
        JSObject jsStructure = (JSObject) aSpace.parseJson(structureResp.getJson());
        readCommons(jsStructure, structure);
        JSObject jsParts = (JSObject) jsStructure.getMember(STRUCTURE_PROP_NAME);
        int partsLength = JSType.toInteger(jsParts.getMember(LENGTH_PROP_NAME));
        for (int i = 0; i < partsLength; i++) {
            String resourceName = JSType.toString(jsParts.getSlot(i));
            File synced = getResource(resourceName, aSpace, null, null);
            structure.getParts().addFile(synced);
        }
        id2files.put(aName, structure.getParts().findFileByExtension(PlatypusFiles.JAVASCRIPT_EXTENSION));
        return structure;
    }
}

From source file:com.eas.client.RemoteModulesProxy.java

private void readCommons(JSObject jsStructure, ModuleStructure structure) {
    JSObject jsClientDependencies = (JSObject) jsStructure.getMember(CLIENT_DEPENDENCIES_PROP_NAME);
    int clientDepsLength = JSType.toInteger(jsClientDependencies.getMember(LENGTH_PROP_NAME));
    for (int i = 0; i < clientDepsLength; i++) {
        String dep = JSType.toString(jsClientDependencies.getSlot(i));
        structure.getClientDependencies().add(dep);
    }/*from w w w  .  jav  a  2  s.co m*/
    JSObject jsQueryDependencies = (JSObject) jsStructure.getMember(QUERY_DEPENDENCIES_PROP_NAME);
    int queryDepsLength = JSType.toInteger(jsQueryDependencies.getMember(LENGTH_PROP_NAME));
    for (int i = 0; i < queryDepsLength; i++) {
        String dep = JSType.toString(jsQueryDependencies.getSlot(i));
        structure.getQueryDependencies().add(dep);
    }
    JSObject jsServerDependencies = (JSObject) jsStructure.getMember(SERVER_DEPENDENCIES_PROP_NAME);
    int serverDepsLength = JSType.toInteger(jsServerDependencies.getMember(LENGTH_PROP_NAME));
    for (int i = 0; i < serverDepsLength; i++) {
        String dep = JSType.toString(jsServerDependencies.getSlot(i));
        structure.getServerDependencies().add(dep);
    }
}

From source file:com.eas.client.RemoteServerModulesProxy.java

private ServerModuleInfo readInfo(String aModuleName, JSObject jsProxy) {
    Set<String> functions = new HashSet<>();
    JSObject jsFunctions = (JSObject) jsProxy.getMember(CREATE_MODULE_RESPONSE_FUNCTIONS_PROP);
    int length = JSType.toInteger(jsFunctions.getMember(LENGTH_PROP_NAME));
    for (int i = 0; i < length; i++) {
        String fName = JSType.toString(jsFunctions.getSlot(i));
        functions.add(fName);//  w ww. j  a  va  2  s.  c  om
    }
    boolean permitted = JSType.toBoolean(jsProxy.getMember(CREATE_MODULE_RESPONSE_IS_PERMITTED_PROP));
    return new ServerModuleInfo(aModuleName, functions, permitted);
}

From source file:com.eas.client.threetier.json.FieldsJSONReader.java

public static void readFields(JSObject pa, Fields aFields) {
    int length = JSType.toInteger(pa.getMember("length"));
    for (int i = 0; i < length; i++) {
        JSObject po = (JSObject) pa.getSlot(i);
        assert po != null;
        String name = JSType.toString(po.getMember(NAME_PROP_NAME));
        String desc = JSType.toString(po.getMember(DESCRIPTION_PROP_NAME));

        String type = po.hasMember(TYPE_PROP_NAME) && po.getMember(TYPE_PROP_NAME) != null
                ? JSType.toString(po.getMember(TYPE_PROP_NAME))
                : null;/*from ww w .  j  a  va  2  s. c om*/
        boolean pk = JSType.toBoolean(po.getMember(PK_PROP_NAME));
        boolean nullable = JSType.toBoolean(po.getMember(NULLABLE_PROP_NAME));
        Field f = aFields instanceof Parameters ? new Parameter(name) : new Field(name);
        f.setDescription(desc);
        f.setType(type);
        f.setPk(pk);
        f.setNullable(nullable);
        aFields.add(f);
    }
}

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

License:Open Source License

@Override
public synchronized void writeFullObjectToArray(Object value) {
    beginIfNeeded();//from   www . j  a v  a2  s.  c om

    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();//w w w  .ja v a 2 s.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();
    }
}