public static void Init(Context cx, Scriptable scope, bool @sealed)
{
ClassLoader loader = cx.GetApplicationClassLoader();
Rhino.NativeJavaTopPackage top = new Rhino.NativeJavaTopPackage(loader);
top.SetPrototype(GetObjectPrototype(scope));
top.SetParentScope(scope);
for (int i = 0; i != commonPackages.Length; i++)
{
NativeJavaPackage parent = top;
for (int j = 0; j != commonPackages[i].Length; j++)
{
parent = parent.ForcePackage(commonPackages[i][j], scope);
}
}
// getClass implementation
IdFunctionObject getClass = new IdFunctionObject(top, FTAG, Id_getClass, "getClass", 1, scope);
// We want to get a real alias, and not a distinct JavaPackage
// with the same packageName, so that we share classes and top
// that are underneath.
string[] topNames = ScriptRuntime.GetTopPackageNames();
NativeJavaPackage[] topPackages = new NativeJavaPackage[topNames.Length];
for (int i_1 = 0; i_1 < topNames.Length; i_1++)
{
topPackages[i_1] = (NativeJavaPackage)top.Get(topNames[i_1], top);
}
// It's safe to downcast here since initStandardObjects takes
// a ScriptableObject.
ScriptableObject global = (ScriptableObject)scope;
if (@sealed)
{
getClass.SealObject();
}
getClass.ExportAsScopeProperty();
global.DefineProperty("Packages", top, ScriptableObject.DONTENUM);
for (int i_2 = 0; i_2 < topNames.Length; i_2++)
{
global.DefineProperty(topNames[i_2], topPackages[i_2], ScriptableObject.DONTENUM);
}
}