List of usage examples for jdk.nashorn.api.scripting JSObject getMember
public Object getMember(final String name);
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); } }