List of usage examples for jdk.nashorn.api.scripting JSObject call
public Object call(final Object thiz, final Object... args);
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, () -> {//from w w w . ja v a 2s. c o 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 w w w . ja v a 2s .c o m*/ 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.changes.ChangeValue.java
@Override public JSObject getPublished() { if (published == null) { JSObject publisher = Scripts.getSpace().getPublisher(this.getClass().getName()); if (publisher == null || !publisher.isFunction()) { throw new NoPublisherException(); }/*from ww w . ja v a 2 s .c o m*/ published = (JSObject) publisher.call(null, new Object[] { this }); } return published; }
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 . j a va2 s .c o 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.RemoteServerModulesProxy.java
@Override public Object callServerModuleMethod(String aModuleName, String aMethodName, Scripts.Space aSpace, JSObject onSuccess, JSObject onFailure, Object... aArguments) throws Exception { if (onSuccess != null) { executeServerModuleMethod(aModuleName, aMethodName, aSpace, (Object aResult) -> { onSuccess.call(null, new Object[] { aResult }); }, (Exception ex) -> { if (onFailure != null) { onFailure.call(null,/*from w w w. ja v a2s. c o m*/ new Object[] { ex instanceof JsObjectException ? ((JsObjectException) ex).getData() : ex.getMessage() }); } }, aArguments); return null; } else { return executeServerModuleMethod(aModuleName, aMethodName, aSpace, null, null, aArguments); } }
From source file:com.eas.server.LocalServerModulesProxy.java
@Override public Object callServerModuleMethod(String aModuleName, String aMethodName, Scripts.Space aSpace, JSObject onSuccess, JSObject onFailure, Object... aArguments) throws Exception { if (Scripts.getContext() != null) { Scripts.getContext().incAsyncsCount(); }/*from w ww. j a v a2 s . c o m*/ assert Scripts.getSpace() == aSpace; serverCore.executeMethod(aModuleName, aMethodName, aArguments, false, onSuccess != null ? (Object aResult) -> { onSuccess.call(null, new Object[] { aSpace.toJs(aResult) }); } : null, (Exception ex) -> { if (onFailure != null) { onFailure.call(null, new Object[] { ex instanceof JsObjectException ? ((JsObjectException) ex).getData() : ex.toString() }); } else { Logger.getLogger(LocalServerModulesProxy.class.getName()).log(Level.SEVERE, ex.toString()); } }); return null;// Only asynchronous form is allowed. }
From source file:com.hcspider.platypusjs.asynchttp.AsyncHTTPCallbacks.java
public static BiConsumer<Object, Throwable> asConsumer(JSObject aOnSuccess, JSObject aOnFailure) { return (Object aResult, Throwable aReason) -> { if (aReason != null) { aOnFailure.call(null, aReason); } else {/* w ww.j a v a2s . c om*/ aOnSuccess.call(null, aResult); } }; }
From source file:net.desertconsulting.mocharest.js.Deferred.java
License:Apache License
/** * Runs right handlers when this {@link Deferred} object is either resolved * or rejected./*from w ww . ja v a 2 s . co m*/ * * @param res result */ private void runHandlers(Object res) { Object result = null; JSObject handler = null; if (resolved) { result = res != null ? res : resolvedResult; handler = doneHandler; } else if (rejected) { result = res != null ? res : rejectedResult; handler = failHandler; } Function<Object, Consumer<Deferred>> consumerGenerator = (r) -> { Consumer<Deferred> consumer = null; if (resolved) { consumer = (p) -> { p.resolve(r); }; } else if (rejected) { consumer = (p) -> { p.reject(r); }; } return consumer; }; if (handler != null) { Object rv; try { rv = handler.call(this, result); if (res == null) { Object parm; if (rv != null && !(rv instanceof Undefined)) { parm = rv; } else { parm = result; } if (parm instanceof Deferred) { Deferred childPromise = (Deferred) parm; if (childPromise.children.isEmpty() && !children.isEmpty()) { childPromise.children.addAll(children); } else if (!childPromise.children.isEmpty()) { childPromise.children.get(childPromise.children.size() - 1).children.addAll(children); } childPromise.runHandlers(null); } else { Consumer<Deferred> childrenConsumer = consumerGenerator.apply(parm); if (childrenConsumer != null) { children.stream().forEach(childrenConsumer); } } } } catch (Exception ex) { resolved = false; rejected = true; runHandlers(ex); } } else if (resolved || rejected) { Consumer<Deferred> childrenConsumer = consumerGenerator.apply(result); if (childrenConsumer != null) { children.stream().forEach(childrenConsumer); } } }
From source file:org.zanata.util.CommonMarkRenderer.java
License:Open Source License
public String renderToHtmlUnsafe(String commonMark) { try {//from w w w . ja v a 2s . com Bindings bindings = threadBindings.get(); JSObject mdRender = (JSObject) bindings.get("mdRender"); return (String) mdRender.call(bindings, commonMark); } catch (Exception e) { throw propagate(e); } }
From source file:wilton.support.nashorn.WiltonNashornGateway.java
License:Apache License
@Override public String runScript(String callbackScriptJson) throws Exception { ScriptContext context = WiltonNashornEnvironment.threadScriptContext(); JSObject jsObject = (JSObject) context.getAttribute("WILTON_run", ScriptContext.ENGINE_SCOPE); if (null != jsObject) { Object result = jsObject.call(null, callbackScriptJson); return result.toString(); } else {/*from w w w . j av a 2 s . co m*/ throw new WiltonException( "Cannot access 'WILTON_run' function in thread-local Nashorn scope," + " call data: [" + callbackScriptJson + "], current thread: [" + Thread.currentThread().getName() + "]"); } }