38 import java.security.Permission;
39 import java.security.PermissionCollection;
40 import java.security.Permissions;
41 import java.security.Policy;
42 import java.security.ProtectionDomain;
43 import java.util.Arrays;
44 import java.util.EnumSet;
45 import java.util.List;
46
47 public class GetCallerClassTest {
48 private final StackWalker walker;
49 private final boolean expectUOE;
50
51 public GetCallerClassTest(StackWalker sw, boolean expect) {
52 this.walker = sw;
53 this.expectUOE = expect;
54 }
55 public static void main(String... args) throws Exception {
56 if (args.length > 0 && args[0].equals("sm")) {
57 PermissionCollection perms = new Permissions();
58 perms.add(new StackFramePermission("retainClassReference"));
59 Policy.setPolicy(new Policy() {
60 @Override
61 public boolean implies(ProtectionDomain domain, Permission p) {
62 return perms.implies(p);
63 }
64 });
65 System.setSecurityManager(new SecurityManager());
66 }
67 new GetCallerClassTest(StackWalker.getInstance(), true).test();
68 new GetCallerClassTest(StackWalker.getInstance(RETAIN_CLASS_REFERENCE), false).test();
69 new GetCallerClassTest(StackWalker.getInstance(EnumSet.of(RETAIN_CLASS_REFERENCE,
70 SHOW_HIDDEN_FRAMES)), false).test();
71 }
72
73 public void test() {
74 new TopLevelCaller().run();
75 new LambdaTest().run();
76 new Nested().createNestedCaller().run();
77 new InnerClassCaller().run();
78 new ReflectionTest().run();
|
38 import java.security.Permission;
39 import java.security.PermissionCollection;
40 import java.security.Permissions;
41 import java.security.Policy;
42 import java.security.ProtectionDomain;
43 import java.util.Arrays;
44 import java.util.EnumSet;
45 import java.util.List;
46
47 public class GetCallerClassTest {
48 private final StackWalker walker;
49 private final boolean expectUOE;
50
51 public GetCallerClassTest(StackWalker sw, boolean expect) {
52 this.walker = sw;
53 this.expectUOE = expect;
54 }
55 public static void main(String... args) throws Exception {
56 if (args.length > 0 && args[0].equals("sm")) {
57 PermissionCollection perms = new Permissions();
58 perms.add(new RuntimePermission("getStackWalkerWithClassReference"));
59 Policy.setPolicy(new Policy() {
60 @Override
61 public boolean implies(ProtectionDomain domain, Permission p) {
62 return perms.implies(p);
63 }
64 });
65 System.setSecurityManager(new SecurityManager());
66 }
67 new GetCallerClassTest(StackWalker.getInstance(), true).test();
68 new GetCallerClassTest(StackWalker.getInstance(RETAIN_CLASS_REFERENCE), false).test();
69 new GetCallerClassTest(StackWalker.getInstance(EnumSet.of(RETAIN_CLASS_REFERENCE,
70 SHOW_HIDDEN_FRAMES)), false).test();
71 }
72
73 public void test() {
74 new TopLevelCaller().run();
75 new LambdaTest().run();
76 new Nested().createNestedCaller().run();
77 new InnerClassCaller().run();
78 new ReflectionTest().run();
|