8008611: Better handling of annotations in JMX

Reviewed-by: skoivu, dholmes, jfdenise
This commit is contained in:
Erik Gahlin 2013-03-21 13:56:28 +01:00
parent 30245ce543
commit 62fb07baaa

View File

@ -378,13 +378,19 @@ public class Introspector {
for (Annotation a : annots) {
Class<? extends Annotation> c = a.annotationType();
Method[] elements = c.getMethods();
boolean packageAccess = false;
for (Method element : elements) {
DescriptorKey key = element.getAnnotation(DescriptorKey.class);
if (key != null) {
String name = key.value();
Object value;
try {
value = element.invoke(a);
// Avoid checking access more than once per annotation
if (!packageAccess) {
ReflectUtil.checkPackageAccess(c);
packageAccess = true;
}
value = MethodUtil.invoke(element, a, null);
} catch (RuntimeException e) {
// we don't expect this - except for possibly
// security exceptions?