[ http://issues.apache.org/jira/browse/HARMONY-1309?page=comments#action_12440586 ] Alexei Fedotov commented on HARMONY-1309: ----------------------------------------- [drlvm][unit] Blocks http://wiki.apache.org/harmony/Unit_Tests_Pass_on_DRLVM This is a low risk test fix. > [luni][tests] incorrect test for reflection access control > ---------------------------------------------------------- > > Key: HARMONY-1309 > URL: http://issues.apache.org/jira/browse/HARMONY-1309 > Project: Harmony > Issue Type: Bug > Components: Classlib > Reporter: Alexey Varlamov > Priority: Minor > Attachments: test-refl-acc.patch > > > There is a test[1] in classlib, which verifies that reflection access > from enclosing class to a private member of a nested class results in > IllegalAccessException. > However, this is against the language specification (para 6.6.1 of the JLS3): > "if the member or constructor is declared private, then access is > permitted if and only if it occurs within the body of the top level class (7.6) > that encloses the declaration of the member or constructor." > Moreover, the following test reveals inconsistency between standard > access control and reflective one: > --------------------------------- > class NestedAccessTest { > static class A { > private static int x = 123; > } > public static void main(String... s) throws Throwable{ > System.out.println(A.x); > System.out.println(A.class.getDeclaredField("x").get(null)); > } > } > -------------------------------- > >java -showversion NestedAccessTest > java version "1.5.0_06" > Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05) > Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode) > 123 > Exception in thread "main" java.lang.IllegalAccessException: Class > NestedAccessTest can not access a member of class NestedAccessTest$A > with modifiers "private static" > at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:65) > at java.lang.reflect.Field.doSecurityCheck(Field.java:954) > at java.lang.reflect.Field.getFieldAccessor(Field.java:895) > at java.lang.reflect.Field.get(Field.java:357) > at NestedAccessTest.main(NestedAccessTest.java:7) > ---------------------------------- > Besides, this is an acknowledged bug of RI [2], and is ranked TOP#6. > [1] name="test_getLjava_lang_Object"/> > [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4071957 -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira