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;
}
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);
}
}
Aggregations