Search in sources :

Example 61 with SimpleBindings

use of javax.script.SimpleBindings in project yyl_example by Relucent.

the class BindingsScript method main.

public static void main(String[] args) {
    try {
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
        String script = "print('hello')";
        Bindings bindings = new SimpleBindings();
        if (engine instanceof Compilable) {
            System.out.println("Compiling....");
            Compilable compEngine = (Compilable) engine;
            CompiledScript cs = compEngine.compile(script);
            cs.eval(bindings);
        } else {
            engine.eval(script, bindings);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : CompiledScript(javax.script.CompiledScript) SimpleBindings(javax.script.SimpleBindings) Compilable(javax.script.Compilable) ScriptEngineManager(javax.script.ScriptEngineManager) SimpleBindings(javax.script.SimpleBindings) Bindings(javax.script.Bindings) ScriptEngine(javax.script.ScriptEngine)

Example 62 with SimpleBindings

use of javax.script.SimpleBindings in project sling by apache.

the class Module method runScript.

/**
     *
     * @return @throws ScriptException
     */
public Object runScript() throws ScriptException {
    log.debug("run script with id {}", get("id"));
    ScriptObjectMirror function = factory.getModuleCache().get((String) get(CONTEXT_FIELD_FILENAME));
    Resource moduleResource = (Resource) get(CONTEXT_FIELD_MODULE_RESOURCE);
    Resource resource = (Resource) get(CONTEXT_FIELD_RESOURCE);
    if (function == null) {
        if (moduleScript.isJsFile()) {
            function = Module.this.decorateScript(//readScript(moduleResource)//  
            readScript(moduleResource));
        }
        if (moduleScript.isJsonFile()) {
            String jsonfile = readScript(moduleResource);
            function = decorateScript("module.exports = " + jsonfile, false);
        }
        if (moduleScript.isResourceFile()) {
            Iterator<Resource> resChildren = moduleResource.listChildren();
            ArrayList<Resource> children = new ArrayList<Resource>();
            resChildren.forEachRemaining(children::add);
            put("children", children);
            /*ValueMap map = moduleResource.adaptTo(ValueMap.class);

                 Invocable invocable = (Invocable) factory.getNashornEngine();
                 Object jsonprop = null;
                 try {
                 jsonprop = invocable.invokeMethod(factory.getNashornEngine().eval("JSON"), "stringify", map);
                 } catch (NoSuchMethodException ex) {
                 throw new ScriptException(ex);
                 }
                 */
            SimpleResource simpleResource = moduleResource.adaptTo(SimpleResource.class);
            put("simpleResource", simpleResource);
            /*   String source = "exports.properties =  " + jsonprop + ";"
                 + "exports.path = currentNode.resource.path;"
                 + "exports.simpleResource = this.simpleResource;"
                 + "exports.children = this.children;";*/
            String source = "module.exports = this.simpleResource;";
            function = decorateScript(source, false);
        }
        if (!moduleScript.isResourceFile()) {
            factory.getModuleCache().put(moduleScript.getResource().getPath(), function);
        }
    } else {
        log.debug("module " + get(CONTEXT_FIELD_ID) + " received from cache");
    }
    if (moduleScript.isTextFile()) {
        log.debug("is textfile loaidng file");
        String source = StringEscapeUtils.escapeEcmaScript(readScript(moduleResource));
        log.debug("sourcE: ");
        source = "module.exports = \"" + source + "\";";
        log.debug(source);
        function = Module.this.decorateScript(source);
        factory.getModuleCache().put(moduleScript.getResource().getPath(), function);
    }
    JSObject process = (JSObject) factory.getNashornEngine().eval("Object");
    process.setMember("domain", log);
    if (function != null) {
        SimpleBindings currentNode = new SimpleBindings();
        if (resource != null) {
            currentNode.put("resource", resource);
            currentNode.put("properties", resource.adaptTo(ValueMap.class));
        } else {
            log.debug("module id {} resource is null", get(CONTEXT_FIELD_ID));
        }
        // changed require to be generated within the wrapper
        // TODO: need to be refactored
        function.call(this, get(CONTEXT_FIELD_EXPORTS), this, this, get(CONTEXT_FIELD_FILENAME), ((Resource) get(CONTEXT_FIELD_MODULE_RESOURCE)).getParent().getPath(), currentNode, (ConsoleLog) get(CONTEXT_FIELD_CONSOLE), null, (SlingScriptHelper) get(CONTEXT_FIELD_SLING), resource.adaptTo(SimpleResource.class));
    } else {
        log.warn("function not called because it is null");
    }
    put(CONTEXT_FIELD_EXPORTS, get(CONTEXT_FIELD_EXPORTS));
    return get(CONTEXT_FIELD_EXPORTS);
}
Also used : ScriptObjectMirror(jdk.nashorn.api.scripting.ScriptObjectMirror) SimpleBindings(javax.script.SimpleBindings) ValueMap(org.apache.sling.api.resource.ValueMap) SimpleResource(org.apache.sling.scripting.esx.plugins.SimpleResource) Resource(org.apache.sling.api.resource.Resource) ArrayList(java.util.ArrayList) SimpleResource(org.apache.sling.scripting.esx.plugins.SimpleResource) JSObject(jdk.nashorn.api.scripting.JSObject)

Example 63 with SimpleBindings

use of javax.script.SimpleBindings in project sling by apache.

the class ProxyAsyncScriptableFactory method registerProxies.

public void registerProxies(Bindings bindings) {
    slyBindingsValuesProvider.initialise(bindings);
    Bindings bindingsCopy = new SimpleBindings();
    for (String factoryName : slyBindingsValuesProvider.getScriptPaths().keySet()) {
        ShadowScriptableObject shadowScriptableObject = new ShadowScriptableObject(factoryName, bindingsCopy);
        bindings.put(factoryName, shadowScriptableObject);
    }
    bindingsCopy.putAll(bindings);
}
Also used : SimpleBindings(javax.script.SimpleBindings) Bindings(javax.script.Bindings) SimpleBindings(javax.script.SimpleBindings)

Example 64 with SimpleBindings

use of javax.script.SimpleBindings in project sling by apache.

the class SlyBindingsValuesProvider method createBindings.

private Bindings createBindings(Bindings global) {
    Bindings bindings = new SimpleBindings();
    bindings.putAll(global);
    TimingBindingsValuesProvider.INSTANCE.addBindings(bindings);
    return bindings;
}
Also used : SimpleBindings(javax.script.SimpleBindings) Bindings(javax.script.Bindings) SlingBindings(org.apache.sling.api.scripting.SlingBindings) SimpleBindings(javax.script.SimpleBindings)

Example 65 with SimpleBindings

use of javax.script.SimpleBindings in project sling by apache.

the class SlyBindingsValuesProvider method loadFactory.

private Function loadFactory(ResourceResolver resolver, JsEnvironment jsEnvironment, String path, Bindings bindings) {
    Resource resource = resolver.getResource(path);
    if (resource == null) {
        throw new SightlyException("Sly namespace loader could not find the following script: " + path);
    }
    AsyncContainer container = jsEnvironment.runResource(resource, createBindings(bindings), new SimpleBindings());
    Object obj = container.getResult();
    if (!(obj instanceof Function)) {
        throw new SightlyException("Script " + path + " was expected to return a function.");
    }
    return (Function) obj;
}
Also used : Function(org.mozilla.javascript.Function) TimingFunction(org.apache.sling.scripting.sightly.js.impl.async.TimingFunction) SightlyException(org.apache.sling.scripting.sightly.SightlyException) SimpleBindings(javax.script.SimpleBindings) AsyncContainer(org.apache.sling.scripting.sightly.js.impl.async.AsyncContainer) Resource(org.apache.sling.api.resource.Resource) HybridObject(org.apache.sling.scripting.sightly.js.impl.rhino.HybridObject) ScriptableObject(org.mozilla.javascript.ScriptableObject)

Aggregations

SimpleBindings (javax.script.SimpleBindings)102 Bindings (javax.script.Bindings)65 ScriptEngine (javax.script.ScriptEngine)23 Test (org.junit.Test)22 ScriptContext (javax.script.ScriptContext)17 ScriptException (javax.script.ScriptException)17 ScriptEngineManager (javax.script.ScriptEngineManager)16 SimpleScriptContext (javax.script.SimpleScriptContext)15 Test (org.testng.annotations.Test)11 CompiledScript (javax.script.CompiledScript)10 PrintWriter (java.io.PrintWriter)9 HashMap (java.util.HashMap)8 Map (java.util.Map)8 SlingBindings (org.apache.sling.api.scripting.SlingBindings)7 File (java.io.File)6 StringWriter (java.io.StringWriter)5 ArrayList (java.util.ArrayList)4 XMLEventReader (javax.xml.stream.XMLEventReader)4 XMLEventWriter (javax.xml.stream.XMLEventWriter)4 XMLInputFactory (javax.xml.stream.XMLInputFactory)4