You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Alexei Fedotov (JIRA)" <ji...@apache.org> on 2006/10/06 21:22:22 UTC
[jira] Commented: (HARMONY-1309) [luni][tests] incorrect test for
reflection access control
[ 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]<testcase classname="tests.api.java.lang.reflect.FieldTest"
> 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