JBoss development,
A new message was posted in the thread "JBREFLECT - Exception processing non-public
annotation":
http://community.jboss.org/message/523364#523364
Author : Ales Justin
Profile :
http://community.jboss.org/people/alesj
Message:
--------------------------------------------------------------
I added this patch.
Index: src/main/java/org/jboss/reflect/plugins/introspection/ReflectMethodInfoImpl.java
===================================================================
--- src/main/java/org/jboss/reflect/plugins/introspection/ReflectMethodInfoImpl.java
(revision 94787)
+++ src/main/java/org/jboss/reflect/plugins/introspection/ReflectMethodInfoImpl.java
Mon Feb 01 15:03:48 CET 2010
@@ -101,12 +101,17 @@
*/
public void setMethod(Method method)
{
+ boolean isDeclaringClassPublic = true;
if (method != null)
+ {
accessCheck(Modifier.isPublic(method.getModifiers()));
+ isDeclaringClassPublic = isDeclaringClassPublic(method);
+ accessCheck(isDeclaringClassPublic);
+ }
this.method = method;
- if (isPublic() == false && method != null)
+ if (method != null && (isPublic() == false || isDeclaringClassPublic ==
false))
setAccessible();
}
@@ -120,13 +125,25 @@
accessCheck();
return method;
}
-
+
/**
+ * Is declaring class public.
+ *
+ * @param method the method
+ * @return if declaring class is public return true, else false
+ */
+ protected static boolean isDeclaringClassPublic(Method method)
+ {
+ Class<?> owner = method.getDeclaringClass();
+ return Modifier.isPublic(owner.getModifiers());
+ }
+
+ /**
* Check access permission.
*/
protected final void accessCheck() // final because we don't want subclasses to
disable it
{
- accessCheck(isPublic());
+ accessCheck(isPublic() && (method == null ||
isDeclaringClassPublic(method)));
}
/**
--------------------------------------------------------------
To reply to this message visit the message page:
http://community.jboss.org/message/523364#523364