Search in sources :

Example 16 with Script

use of org.mozilla.javascript.Script in project jaggery by wso2.

the class CacheManager method getScriptObject.

private Script getScriptObject(Object[] compiled, ScriptCachingContext sctx) throws ScriptException {
    String className = (String) compiled[0];
    byte[] classBytes = (byte[]) compiled[1];
    ClassLoader rhinoLoader = getClass().getClassLoader();
    GeneratedClassLoader loader;
    try {
        loader = SecurityController.createLoader(rhinoLoader, sctx.getSecurityDomain());
        Class cl = loader.defineClass(className, classBytes);
        loader.linkClass(cl);
        return (Script) cl.newInstance();
    } catch (SecurityException e) {
        throw new ScriptException(e);
    } catch (IllegalArgumentException e) {
        throw new ScriptException(e);
    } catch (InstantiationException e) {
        throw new ScriptException(e);
    } catch (IllegalAccessException e) {
        throw new ScriptException(e);
    }
}
Also used : Script(org.mozilla.javascript.Script) ScriptException(org.jaggeryjs.scriptengine.exceptions.ScriptException) GeneratedClassLoader(org.mozilla.javascript.GeneratedClassLoader) GeneratedClassLoader(org.mozilla.javascript.GeneratedClassLoader)

Example 17 with Script

use of org.mozilla.javascript.Script in project sling by apache.

the class RhinoJavaScriptEngine method compile.

public CompiledScript compile(Reader scriptReader) throws ScriptException {
    final String scriptName = getScriptName(scriptReader);
    CachedScript cachedScript = scriptCache.getScript(scriptName);
    if (cachedScript != null) {
        LOGGER.debug("Detected cached script for {}.", scriptName);
        return cachedScript.getCompiledScript();
    } else {
        scriptReader = wrapReaderIfEspScript(scriptReader, scriptName);
        try {
            final Context rhinoContext = Context.enter();
            rhinoContext.setOptimizationLevel(optimizationLevel());
            if (!ScriptRuntime.hasTopCall(rhinoContext)) {
                // setup the context for use
                WrapFactory wrapFactory = ((RhinoJavaScriptEngineFactory) getFactory()).getWrapFactory();
                rhinoContext.setWrapFactory(wrapFactory);
            }
            final int lineNumber = 1;
            final Object securityDomain = null;
            final Script script = rhinoContext.compileReader(scriptReader, scriptName, lineNumber, securityDomain);
            final SlingCompiledScript slingCompiledScript = new SlingCompiledScript(script, this);
            cachedScript = new CachedScript() {

                @Override
                public String getScriptPath() {
                    return scriptName;
                }

                @Override
                public CompiledScript getCompiledScript() {
                    return slingCompiledScript;
                }
            };
            // SLING-4935 avoid caching scripts for which we cannot determine a name
            if (!scriptName.equals(NO_SCRIPT_NAME)) {
                scriptCache.putScript(cachedScript);
            }
            LOGGER.debug("Added {} script to Script Cache.", scriptName);
            return slingCompiledScript;
        } catch (IOException e) {
            final ScriptException se = new ScriptException("Failure running script " + scriptName + ": " + e.getMessage());
            se.initCause(e);
            throw se;
        } finally {
            Context.exit();
        }
    }
}
Also used : Context(org.mozilla.javascript.Context) ScriptContext(javax.script.ScriptContext) CompiledScript(javax.script.CompiledScript) CachedScript(org.apache.sling.scripting.api.CachedScript) Script(org.mozilla.javascript.Script) CompiledScript(javax.script.CompiledScript) WrapFactory(org.mozilla.javascript.WrapFactory) CachedScript(org.apache.sling.scripting.api.CachedScript) IOException(java.io.IOException) ScriptException(javax.script.ScriptException) JavaScriptException(org.mozilla.javascript.JavaScriptException) ScriptableObject(org.mozilla.javascript.ScriptableObject)

Aggregations

Script (org.mozilla.javascript.Script)17 Context (org.mozilla.javascript.Context)12 ScriptableObject (org.mozilla.javascript.ScriptableObject)5 IOException (java.io.IOException)3 InputStreamReader (java.io.InputStreamReader)3 ContinuationPending (org.mozilla.javascript.ContinuationPending)3 RhinoException (org.mozilla.javascript.RhinoException)3 Scriptable (org.mozilla.javascript.Scriptable)3 CompiledScript (javax.script.CompiledScript)2 ScriptContext (javax.script.ScriptContext)2 ScriptException (javax.script.ScriptException)2 ScriptException (org.jaggeryjs.scriptengine.exceptions.ScriptException)2 ContextAction (org.mozilla.javascript.ContextAction)2 GeneratedClassLoader (org.mozilla.javascript.GeneratedClassLoader)2 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)1 BufferedReader (java.io.BufferedReader)1 PrintStream (java.io.PrintStream)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 UndeclaredThrowableException (java.lang.reflect.UndeclaredThrowableException)1 MalformedURLException (java.net.MalformedURLException)1