MBeanServer server = MBeanServerFactory.newMBeanServer();
// Needed to create an MLet, which is a ClassLoader
addPermission(new RuntimePermission("createClassLoader"));
ObjectName name = new ObjectName(server.getDefaultDomain(), "mbean", "mlet");
MLet mlet = new MLet();
addPermission(new MBeanPermission(mlet.getClass().getName(), "registerMBean"));
server.registerMBean(mlet, name);
try
{
server.getClassLoader(null);
fail();
}
catch (SecurityException ignored)
{
}
// Dummy class
addPermission(new MBeanPermission("foo[" + name.getCanonicalName() + "]", "getClassLoader"));
try
{
server.getClassLoader(name);
fail();
}
catch (SecurityException ignored)
{
}
addPermission(new MBeanPermission(mlet.getClass().getName() + "[" + name.getCanonicalName() + "]", "getClassLoader"));
ClassLoader result = server.getClassLoader(name);
assertSame(result, mlet);
}