You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Alexey Varlamov (JIRA)" <ji...@apache.org> on 2007/05/18 08:25:16 UTC

[jira] Updated: (HARMONY-3895) [drlvm][kernel] Compatibility: Field.getXXX(null) exception throwing order differs on Harmony and RI

     [ https://issues.apache.org/jira/browse/HARMONY-3895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexey Varlamov updated HARMONY-3895:
-------------------------------------

             Component/s:     (was: Classlib)
                          DRLVM
    Estimated Complexity: Novice
                 Summary: [drlvm][kernel] Compatibility: Field.getXXX(null) exception throwing order differs on Harmony and RI  (was: [classlib][luni] Compatibility: Field.getXXX(null) exception throwing order differs on Harmony and RI)

Changed component as reflection classes are kernel and provided by VM.

> [drlvm][kernel] Compatibility: Field.getXXX(null) exception throwing order differs on Harmony and RI
> ----------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3895
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3895
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>            Reporter: Elena Sayapina
>            Priority: Minor
>         Attachments: getFieldTest.java
>
>
> Methods Field.getXXX(Object obj) throw NullPointerException on Harmony if obj is null and field is private, but throw IllegalAccessException on RI.
> Please, consider the following code:
> public class getFieldTest {
> 	static int i  = 0;
> 	static boolean bool  = false;
> 	static byte b  = 0;
> 	static short s  = 0;
> 	static long l  = 0l;
> 	static float f  = 0.0f;
> 	static double d  = 0.0d;
> 	static char c = '0';
> 	static Object o = null;
>     
>      public static void main(String[] args) {
>          try {
>              i = new SomeClass().getClass().getDeclaredField("i").getInt(null);
>              System.out.println("TEST1 FAILED: no exceptions");
>          } catch (IllegalAccessException iae) {
>                   System.out.println("TEST1 PASSED: " + iae);
>          } catch (Throwable t){
>                   System.out.println("TEST1 FAILED: " + t);
>          }
>             
>          try {
>              bool = new SomeClass().getClass().getDeclaredField("bool").getBoolean(null);
>              System.out.println("TEST2 FAILED: no exceptions");
>          } catch (IllegalAccessException iae) {
>                 System.out.println("TEST2 PASSED: " + iae);
>         } catch (Throwable t){
>                 System.out.println("TEST2 FAILED: " + t);
>         }
>          
>         try {
>             b =  new SomeClass().getClass().getDeclaredField("b").getByte(null);
>             System.out.println("TEST3 FAILED: no exceptions");
>         } catch (IllegalAccessException iae) {
>             System.out.println("TEST3 PASSED: " + iae);
>         } catch (Throwable t){
>              System.out.println("TEST3 FAILED: " + t);
>         }
>         
>         try {
>             s =  new SomeClass().getClass().getDeclaredField("s").getShort(null);
>             System.out.println("TEST4 FAILED: no exceptions");
>         } catch (IllegalAccessException iae) {
>             System.out.println("TEST4 PASSED: " + iae);
>         } catch (Throwable t){
>              System.out.println("TEST4 FAILED: " + t);
>         }
>         
>         try {
>             l =  new SomeClass().getClass().getDeclaredField("l").getLong(null);
>             System.out.println("TEST5 FAILED: no exceptions");
>         } catch (IllegalAccessException iae) {
>             System.out.println("TEST5 PASSED: " + iae);
>         } catch (Throwable t){
>              System.out.println("TEST5 FAILED: " + t);
>         }
>         
>         try {
>             f =  new SomeClass().getClass().getDeclaredField("f").getFloat(null);
>             System.out.println("TEST6 FAILED: no exceptions");
>         } catch (IllegalAccessException iae) {
>             System.out.println("TEST6 PASSED: " + iae);
>         } catch (Throwable t){
>              System.out.println("TEST6 FAILED: " + t);
>         }
>         
>         try {
>            d =  new SomeClass().getClass().getDeclaredField("d").getDouble(null);
>             System.out.println("TEST7 FAILED: no exceptions");
>         } catch (IllegalAccessException iae) {
>             System.out.println("TEST7 PASSED: " + iae);
>         } catch (Throwable t){
>              System.out.println("TEST7 FAILED: " + t);
>         }
>         
>         try {
>            c =  new SomeClass().getClass().getDeclaredField("c").getChar(null);
>             System.out.println("TEST8 FAILED: no exceptions");
>         } catch (IllegalAccessException iae) {
>             System.out.println("TEST8 PASSED: " + iae);
>         } catch (Throwable t){
>              System.out.println("TEST8 FAILED: " + t);
>         }
>         
>         try {
>            o = new SomeClass().getClass().getDeclaredField("o").get(null);
>             System.out.println("TEST9 FAILED: no exceptions");
>         } catch (IllegalAccessException iae) {
>             System.out.println("TEST9 PASSED: " + iae);
>         } catch (Throwable t){
>             System.out.println("TEST9 FAILED: " + t);
>         }
>       }
> }
> class SomeClass {
>     private int i  = 1;
>     private boolean bool  = true;
>     private byte b  = 1;
>     private short s  = 1;
>     private long l  = 1l;
>     private float f  = 1.0f;
>     private double d  = 1.0d;
>     private char c = '1';
>     private Object o = new Object();
> }
> Output on Harmony-r538805:
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors,
> as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r538805, (May 17 2007), Windows/ia32/msvc 1310, release build
> http://incubator.apache.org/harmony
> TEST1 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> TEST2 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> TEST3 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> TEST4 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> TEST5 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> TEST6 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> TEST7 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> TEST8 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> TEST9 FAILED: java.lang.NullPointerException: The specified object is null but the method is not static
> Output on HotSpot:
> java version "1.5.0_11"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
> Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode)
> TEST1 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> TEST2 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> TEST3 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> TEST4 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> TEST5 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> TEST6 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> TEST7 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> TEST8 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> TEST9 PASSED: java.lang.IllegalAccessException: Class getFieldTest can not access a member of class SomeClass with modifiers "private"
> Please, use attached getFieldTest.java for the test reproducing.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.