Author: mbenson
Date: Sun Dec  7 19:59:27 2014
New Revision: 1643714

URL: http://svn.apache.org/r1643714
Log:
no requirement that validated types have public access modifiers; therefore we 
will set accessible on anything that needs it, which is anything not 
public-and-declared-by-public

Modified:
    
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java

Modified: 
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
URL: 
http://svn.apache.org/viewvc/bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java?rev=1643714&r1=1643713&r2=1643714&view=diff
==============================================================================
--- 
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
 (original)
+++ 
bval/branches/bval-11/bval-core/src/main/java/org/apache/bval/util/reflection/Reflection.java
 Sun Dec  7 19:59:27 2014
@@ -201,28 +201,13 @@ public class Reflection {
             return false;
         }
         final Member m = (Member) o;
-        if (Modifier.isPublic(m.getModifiers())) {
-            /*
-             * For objects with public accessibility, we do nothing and return 
with one exception.
-             * 
-             * Following explanation copied from Apache Commons [lang] 
MemberUtils:
-             * When a {@code public} class has a default access superclass 
with {@code public} members,
-             * these members are accessible. Calling them from compiled code 
works fine.
-             * Unfortunately, on some JVMs, using reflection to invoke these 
members
-             * seems to (wrongly) prevent access even when the modifier is 
{@code public}.
-             * Calling {@code setAccessible(true)} solves the problem but will 
only work from
-             * sufficiently privileged code.
-             */
-            if (!isPackageAccess(m.getDeclaringClass().getModifiers())) {
-                return false;
-            }
+
+        // For public members whose declaring classes are public, we need do 
nothing:
+        if (Modifier.isPublic(m.getModifiers()) && 
Modifier.isPublic(m.getDeclaringClass().getModifiers())) {
+            return false;
         }
         o.setAccessible(accessible);
         return true;
     }
 
-    private static boolean isPackageAccess(final int modifiers) {
-        return (modifiers & (Modifier.PRIVATE | Modifier.PROTECTED | 
Modifier.PUBLIC)) == 0;
-    }
-
 }


Reply via email to