private ClassLoader getClassLoader(final ObjectName name) { if(clr == null){ return null; } // Restrict to getClassLoader permission only Permissions permissions = new Permissions(); permissions.add(new MBeanPermission("*", null, name, "getClassLoader")); ProtectionDomain protectionDomain = new ProtectionDomain(null, permissions); ProtectionDomain[] domains = {protectionDomain}; AccessControlContext ctx = new AccessControlContext(domains); ClassLoader loader = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() { public ClassLoader run() { return clr.getClassLoader(name); } }, ctx); return loader; }
private ClassLoader getClassLoader(final ObjectName name) throws InstanceNotFoundException { try { return AccessController.doPrivileged( new PrivilegedExceptionAction<ClassLoader>() { public ClassLoader run() throws InstanceNotFoundException { return mbeanServer.getClassLoader(name); } }, withPermissions(new MBeanPermission("*", "getClassLoader")) ); } catch (PrivilegedActionException pe) { throw (InstanceNotFoundException) extractException(pe); } }
private ClassLoader getClassLoaderFor(final ObjectName name) throws InstanceNotFoundException { try { return (ClassLoader) AccessController.doPrivileged( new PrivilegedExceptionAction<Object>() { public Object run() throws InstanceNotFoundException { return mbeanServer.getClassLoaderFor(name); } }, withPermissions(new MBeanPermission("*", "getClassLoaderFor")) ); } catch (PrivilegedActionException pe) { throw (InstanceNotFoundException) extractException(pe); } }
private void test(String path, boolean invert) { try { BufferedReader br = new BufferedReader(new FileReader(path)); String line = ""; while ((line = br.readLine()) != null) { MBeanPermission p1 = new MBeanPermission(line, "getAttribute"); String line2 = br.readLine(); if (line2 == null) { break; } MBeanPermission p2 = new MBeanPermission(line2, "getAttribute"); if (invert) { assertFalse("\"" + line + "\".implies(\"" + line2 + "\")", p1.implies(p2)); } else { assertTrue("\"" + line + "\".implies(\"" + line2 + "\")", p1.implies(p2)); } } } catch (Exception ex) { fail(ex); } }
/** * Test for the constructor MBeanPermission(java.lang.String, * java.lang.String, javax.management.ObjectName, java.lang.String) * * @throws NullPointerException * @throws Exception * @see javax.management.MBeanPermission#MBeanPermission(java.lang.String, * java.lang.String, javax.management.ObjectName, java.lang.String) */ public final void testMBeanPermissionStringStringObjectNameString() throws Exception { String name = "org.apache.harmony.test.func.api.javax.management:type=Hello"; ObjectName oname = new ObjectName(name); MBeanPermission p = new MBeanPermission(name, "Hello", oname, "getAttribute"); assertEquals(name + "#Hello[" + oname.getCanonicalName() + "]", p .getName()); new MBeanPermission("-", "-", oname, "getAttribute"); new MBeanPermission(null, null, null, "getAttribute"); try { new MBeanPermission(null, null, null, "get Attribute"); new MBeanPermission(null, null, null, ""); new MBeanPermission(null, null, null, null); fail("IllegalArgumentException not thrown!"); } catch (IllegalArgumentException ex) { } }
/** * Test for the method equals(java.lang.Object) * * @see javax.management.MBeanPermission#equals(java.lang.Object) */ public final void testEquals() { assertTrue(new MBeanPermission("com.example", "addNotificationListener, getAttribute") .equals(new MBeanPermission("com.example", "addNotificationListener, getAttribute"))); assertFalse(new MBeanPermission("com.example", "addNotificationListener, getAttribute") .equals(new MBeanPermission("com.example", "addNotificationListener"))); assertFalse(new MBeanPermission("com.example", "addNotificationListener, getAttribute") .equals(new MBeanPermission("com", "addNotificationListener, getAttribute"))); }
private static void checkMBeanPermission(String classname, String member, ObjectName objectName, String actions) { SecurityManager sm = System.getSecurityManager(); if (sm != null) { Permission perm = new MBeanPermission(classname, member, objectName, actions); sm.checkPermission(perm); } }
public final ClassLoader getClassLoader(ObjectName name) { ClassLoader instance = loadersWithNames.get(name); if (instance != null) { SecurityManager sm = System.getSecurityManager(); if (sm != null) { Permission perm = new MBeanPermission(instance.getClass().getName(), null, name, "getClassLoader"); sm.checkPermission(perm); } } return instance; }
private static void checkMBeanPermission(String classname, String member, ObjectName objectName, String actions) throws SecurityException { SecurityManager sm = System.getSecurityManager(); if (sm != null) { Permission perm = new MBeanPermission(classname, member, objectName, actions); sm.checkPermission(perm); } }
static void checkMBeanPermission( final MBeanServer mbs, final ObjectName name, final String actions) throws InstanceNotFoundException, SecurityException { SecurityManager sm = System.getSecurityManager(); if (sm != null) { AccessControlContext acc = AccessController.getContext(); ObjectInstance oi; try { oi = AccessController.doPrivileged( new PrivilegedExceptionAction<ObjectInstance>() { public ObjectInstance run() throws InstanceNotFoundException { return mbs.getObjectInstance(name); } }); } catch (PrivilegedActionException e) { throw (InstanceNotFoundException) extractException(e); } String classname = oi.getClassName(); MBeanPermission perm = new MBeanPermission( classname, null, name, actions); sm.checkPermission(perm, acc); } }
public boolean implies(ProtectionDomain domain, Permission permission) { if (!(permission instanceof MBeanPermission)) return true; MBeanPermission jmxp = (MBeanPermission) permission; if (jmxp.getActions().contains("removeNotificationListener")) { System.out.println("DENIED"); return false; } return true; }