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

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

Introduction

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

Prototype

public Object getMember(final String name);

Source Link

Document

Retrieves a named member of this JavaScript object.

Usage

From source file:com.adobe.demo.mcdemo.RouterManager.java

public static void processRequest(String method, String path, HttpRequest request, HttpResponse response) {
    try {//from w w w.  j av a 2 s  .com
        for (Map.Entry<String, JSObject> me : routers.entrySet()) {
            JSObject router = me.getValue();
            String prefixPath = (String) router.getMember("prefixPath");
            if (path.startsWith(prefixPath)) {
                LogHelper.log("Prefix fine for router " + prefixPath);
                JSObject processCall = (JSObject) router.getMember("processCall");
                boolean res = (boolean) processCall.call(router, method, path, request, response);
                if (res == true) {
                    return;
                }
            }
        }

        String assetPath = "/public" + path;
        InputStream is = ResourceManager.getInstance().getResourceInputStream(assetPath);
        if (is != null) {
            try {
                byte[] bytes = IOHelper.readInputStreamToBytes(is);
                String contentType = null;
                if (path.endsWith(".svg")) {
                    contentType = "image/svg+xml";
                }
                if (path.endsWith(".css")) {
                    //   contentType = "text/css";
                }
                if (path.endsWith(".css")) {
                    //   contentType = "application/javascript";
                }
                if (path.endsWith(".png")) {
                    contentType = "image/png";
                }
                if (path.endsWith(".jpg")) {
                    contentType = "image/jpeg";
                }
                if (path.endsWith(".json")) {
                    //  contentType = "application/json";
                }
                if (path.endsWith(".html")) {
                    //  contentType = "text/html";
                }
                response.sendResponse(contentType, bytes);
                return;
            } catch (Exception ex) {
                LogHelper.logError(ex);
            }
        } else {
            LogHelper.log("Asset not found in public " + assetPath);
        }
    } catch (Exception ex) {
        LogHelper.logError(ex);
    }
    response.sendNotFound(path);
}

From source file:com.eas.client.application.ScriptedTests.java

protected void start(String aTestModuleName, long aTimeout) throws InterruptedException {
    Object success = new Object();
    Object failure = new Object();
    long started = System.currentTimeMillis();
    AtomicReference<Object> completion = new AtomicReference();
    withFacade(completion, () -> {//  w  ww . j  a v  a 2 s  . co  m
        try {
            ScriptedResource.require(new String[] { aTestModuleName }, null, new AbstractJSObject() {
                @Override
                public Object call(final Object thiz, final Object... args) {
                    JSObject testModule = Scripts.getSpace().lookup(aTestModuleName);
                    JSObject testInstance = (JSObject) testModule.newObject();
                    JSObject execute = (JSObject) testInstance.getMember("execute");
                    try {
                        execute.call(testInstance, new Object[] { new SystemJSCallback() {
                            @Override
                            public Object call(final Object thiz, final Object... args) {
                                completion.set(success);
                                return null;
                            }
                        }, new SystemJSCallback() {
                            @Override
                            public Object call(final Object thiz, final Object... args) {
                                completion.set(args.length > 0 ? args[0] : failure);
                                return null;
                            }
                        } });
                    } catch (ECMAException ex) {
                        completion.set(ex);
                    }
                    return null;
                }

            }, new AbstractJSObject() {
                @Override
                public Object call(final Object thiz, final Object... args) {
                    completion.set(args[0]);
                    return null;
                }
            });
        } catch (Exception ex) {
            Logger.getLogger(ScriptedTests.class.getName()).log(Level.SEVERE, null, ex);
            completion.set(ex);
        }
    });
    while (completion.get() == null && System.currentTimeMillis() < started + aTimeout) {
        Thread.sleep(10);
    }
    Object lastChance = completion.get();
    if (lastChance != success) {
        String failedText = aTestModuleName + " failed due to ";
        if (lastChance == null) {
            fail(failedText + "a timeout");
        } else if (lastChance == failure) {
            fail(failedText + "an unknown problem");
        } else if (lastChance instanceof Throwable) {
            fail(failedText + lastChance.toString());
        } else if (lastChance instanceof JSObject) {
            fail(failedText + Scripts.getSpace().toJson(lastChance));
        } else {
            fail(failedText + lastChance.toString());
        }
    }
}

From source file:com.eas.client.application.ScriptedTests.java

private void withFacade(AtomicReference<Object> aCompletion, Runnable withFacade) {
    Scripts.getSpace().process(() -> {
        try {//from  www  .  ja v  a  2 s . c  om
            if (Scripts.getSpace().getDefined().containsKey("facade")) {
                withFacade.run();
            } else {
                ScriptedResource.require(new String[] { "facade" }, null, new AbstractJSObject() {
                    @Override
                    public Object call(final Object thiz, final Object... args) {
                        JSObject facade = Scripts.getSpace().lookup("facade");
                        JSObject cacheBust = (JSObject) facade.getMember("cacheBust");
                        cacheBust.call(facade, new Object[] { true });
                        JSObject export = (JSObject) facade.getMember("export");
                        export.call(facade, new Object[] { Scripts.getSpace().getGlobal() });
                        withFacade.run();
                        return null;
                    }
                }, new AbstractJSObject() {
                    @Override
                    public Object call(final Object thiz, final Object... args) {
                        aCompletion.set(args[0]);
                        return null;
                    }
                });
            }
        } catch (Exception ex) {
            aCompletion.set(ex);
        }
    });
}

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 ww  w  .  j av  a2 s.  com
                    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.queries.LocalQueriesProxy.java

protected SqlQuery queryFromModule(String aModuleName, Scripts.Space aSpace) throws Exception {
    SqlQuery query = new ScriptedQuery(core, aModuleName);
    JSObject schemaContainer = createModule(aModuleName, aSpace);
    if (schemaContainer != null) {
        Fields fields = new Fields();
        query.setFields(fields);//from w  ww .j  av  a 2 s.  co  m
        Object oSchema = schemaContainer.hasMember("schema") ? schemaContainer.getMember("schema") : null;
        if (oSchema instanceof JSObject) {
            readScriptFields(aModuleName, (JSObject) oSchema, fields, aSpace);
            Parameters params;
            Object oParams = schemaContainer.hasMember("params") ? schemaContainer.getMember("params") : null;
            if (oParams instanceof JSObject) {
                params = new Parameters();
                readScriptFields(aModuleName, (JSObject) oParams, params, aSpace);
                params.toCollection().stream().forEach((p) -> {
                    query.putParameter(p.getName(), p.getTypeInfo(), null);
                });
            }
            return query;
        } else {
            throw new IllegalStateException(" datasource module: " + aModuleName + " doesn't contain a schema");
        }
    } else {
        throw new IllegalStateException(" datasource module: " + aModuleName + " is not found");
    }
}

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

@Override
public JSObject execute(Scripts.Space aSpace, Consumer<JSObject> onSuccess, Consumer<Exception> onFailure)
        throws Exception {
    assert Scripts.getSpace() == aSpace : "Scripts.Space TLS assumption failed";
    if (onSuccess != null) {
        ScriptedResource._require(new String[] { entityName }, null, aSpace, new HashSet<>(), (Void v) -> {
            JSObject source = aSpace.createModule(entityName);
            if (source.hasMember("fetch")) {
                Object oFetch = source.getMember("fetch");
                if (oFetch instanceof JSObject) {
                    JSObject jsFetch = (JSObject) oFetch;
                    if (jsFetch.isFunction()) {
                        JSObject jsParams = aSpace.makeObj();
                        for (int i = 0; i < params.getParametersCount(); i++) {
                            Parameter p = params.get(i + 1);
                            jsParams.setMember(p.getName(), aSpace.toJs(p.getValue()));
                        }/*w w w.ja  va2s  . co m*/
                        final ExecutionChecker exChecker = new ExecutionChecker();
                        Object oRowset = jsFetch.call(source,
                                aSpace.toJs(new Object[] { jsParams, new AbstractJSObject() {

                                    @Override
                                    public Object call(final Object thiz, final Object... args) {
                                        if (exChecker.isExecutionNeeded()) {
                                            try {
                                                JSObject jsRowset = args.length > 0
                                                        ? (JSObject) aSpace.toJava(args[0])
                                                        : null;
                                                try {
                                                    onSuccess.accept(jsRowset);
                                                } catch (Exception ex) {
                                                    Logger.getLogger(ScriptedQuery.class.getName())
                                                            .log(Level.SEVERE, null, ex);
                                                }
                                            } catch (Exception ex) {
                                                if (onFailure != null) {
                                                    onFailure.accept(ex);
                                                }
                                            }
                                        }
                                        return null;
                                    }
                                }, new AbstractJSObject() {

                                    @Override
                                    public Object call(final Object thiz, final Object... args) {
                                        if (exChecker.isExecutionNeeded()) {
                                            if (onFailure != null) {
                                                if (args.length > 0) {
                                                    if (args[0] instanceof Exception) {
                                                        onFailure.accept((Exception) args[0]);
                                                    } else {
                                                        onFailure.accept(new Exception(
                                                                String.valueOf(aSpace.toJava(args[0]))));
                                                    }
                                                } else {
                                                    onFailure.accept(new Exception(
                                                            "No error information from fetch method"));
                                                }
                                            }
                                        }
                                        return null;
                                    }
                                } }));
                        if (!JSType.nullOrUndefined(oRowset)) {
                            onSuccess.accept((JSObject) aSpace.toJava(oRowset));
                            exChecker.setExecutionNeeded(false);
                        }
                    }
                }
            }
        }, onFailure);
        return null;
    } else {
        JSObject source = aSpace.createModule(entityName);
        if (source.hasMember("fetch")) {
            Object oFetch = source.getMember("fetch");
            if (oFetch instanceof JSObject) {
                JSObject jsFetch = (JSObject) oFetch;
                if (jsFetch.isFunction()) {
                    JSObject jsParams = aSpace.makeObj();
                    Object oRowset = jsFetch.call(source, aSpace.toJs(new Object[] { jsParams }));
                    if (!JSType.nullOrUndefined(oRowset)) {
                        return (JSObject) aSpace.toJava(oRowset);
                    }
                }
            }
        }
        return 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);
                        }//w  w w.ja v  a2 s .  c  om
                    }, 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);
    }// w  w w .  j a  va  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);//from   www  .  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  v  a2s.com
        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);
    }
}