ContextAction ca = new ContextAction() {
public Object run(Context cx) {
try {
cx.setOptimizationLevel(-1);
// Run the built-in library script
Script libraryScript = loadScript(new ClassPathResource(
"library.js", ScriptStorage.class), "~library.js");
cx.initStandardObjects(library);
libraryScript.exec(cx, library);
ScriptableObject.defineClass(library, HostObject.class);
// Force instantiation of lazily loaded objects
for (int i = 0; i < lazilyNames.length; i++) {
ScriptableObject.getProperty(library, lazilyNames[i]);
}
if(libraryScripts != null) {
int i = 0;
for (Iterator iter = libraryScripts.iterator(); iter.hasNext(); ++i) {
Object scriptSpec = iter.next();
Script s;
String path;
if(scriptSpec instanceof String) {
path = (String)scriptSpec;
s = getScript(path);
}
else if(scriptSpec instanceof Resource) {
Resource r = (Resource)scriptSpec;
path = r.getDescription();
s = loadScript(r, path);
}
else if(scriptSpec instanceof Script) {
s = (Script)scriptSpec;
path = "~libraryScript[" + i + "].js";
createFunctionStubs(path, s);
}
else {
throw new IllegalArgumentException(
"libraryScripts[" + i + "] is " +
scriptSpec.getClass().getName());
}
s.exec(cx, library);
}
}
if(libraryCustomizer != null) {
libraryCustomizer.customizeLibrary(cx, library);