Hi Chris,

I see it now, thanks.

Regards, Peter

On 06/25/2013 12:14 PM, Chris Hegarty wrote:
Known issue, Mandy has a fix in progress [1].

-Chris.

[1] http://mail.openjdk.java.net/pipermail/jdk7u-dev/2013-June/006791.html

On 06/25/2013 11:06 AM, Peter Levart wrote:
Hi Mandy,

I noticed the @CallerSensitive annotation and machinery behind it has
been back-ported to JDK7. That was when one of my apps using
sun.reflect.Reflection.getCallerClass(int) failed. The native method
taking "int" was deprecated, but it also changed the behavior. If I run
the following program:

import sun.reflect.Reflection;

public class GetCallerClassTest {

     static class Tester {
         static void test(int frames) {
             System.out.println(frames + ": " +
Reflection.getCallerClass(frames));
         }
     }

     public static void main(String[] args) {
         Tester.test(0);
         Tester.test(1);
         Tester.test(2);
         Tester.test(3);
     }
}


with JDK7u21, I get the following output:

0: class sun.reflect.Reflection
1: class GetCallerClassTest$Tester
2: class GetCallerClassTest
3: null


with JDK7u25, I get the following output:

0: class sun.reflect.Reflection
1: class sun.reflect.Reflection
2: class GetCallerClassTest$Tester
3: class GetCallerClassTest


It seems that with 7u25 the result is "shifted"  for one calling frame.
Is that behavior change intentional to encourage people to "get off that
wagon"?

Regards, Peter


Reply via email to