Search in sources :

Example 1 with GeneratedClassLoader

use of org.mozilla.javascript.GeneratedClassLoader in project hackpad by dropbox.

the class Main method loadCompiledScript.

private static Script loadCompiledScript(Context cx, String path, byte[] data, Object securityDomain) {
    if (data == null) {
        exitCode = EXITCODE_FILE_NOT_FOUND;
        return null;
    }
    // XXX: For now extract class name of compiled Script from path
    // instead of parsing class bytes
    int nameStart = path.lastIndexOf('/');
    if (nameStart < 0) {
        nameStart = 0;
    } else {
        ++nameStart;
    }
    int nameEnd = path.lastIndexOf('.');
    if (nameEnd < nameStart) {
        // '.' does not exist in path (nameEnd < 0)
        // or it comes before nameStart
        nameEnd = path.length();
    }
    String name = path.substring(nameStart, nameEnd);
    try {
        GeneratedClassLoader loader = SecurityController.createLoader(cx.getApplicationClassLoader(), securityDomain);
        Class<?> clazz = loader.defineClass(name, data);
        loader.linkClass(clazz);
        if (!Script.class.isAssignableFrom(clazz)) {
            throw Context.reportRuntimeError("msg.must.implement.Script");
        }
        return (Script) clazz.newInstance();
    } catch (RhinoException rex) {
        ToolErrorReporter.reportException(cx.getErrorReporter(), rex);
        exitCode = EXITCODE_RUNTIME_ERROR;
    } catch (IllegalAccessException iaex) {
        exitCode = EXITCODE_RUNTIME_ERROR;
        Context.reportError(iaex.toString());
    } catch (InstantiationException inex) {
        exitCode = EXITCODE_RUNTIME_ERROR;
        Context.reportError(inex.toString());
    }
    return null;
}
Also used : Script(org.mozilla.javascript.Script) GeneratedClassLoader(org.mozilla.javascript.GeneratedClassLoader) RhinoException(org.mozilla.javascript.RhinoException)

Example 2 with GeneratedClassLoader

use of org.mozilla.javascript.GeneratedClassLoader 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)

Aggregations

GeneratedClassLoader (org.mozilla.javascript.GeneratedClassLoader)2 Script (org.mozilla.javascript.Script)2 ScriptException (org.jaggeryjs.scriptengine.exceptions.ScriptException)1 RhinoException (org.mozilla.javascript.RhinoException)1