test/java/lang/invoke/ProtectedMemberDifferentPackage/p1/T2.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/test/java/lang/invoke/ProtectedMemberDifferentPackage/p1/T2.java Fri Jan 31 03:42:47 2014
--- new/test/java/lang/invoke/ProtectedMemberDifferentPackage/p1/T2.java Fri Jan 31 03:42:46 2014
*** 21,30 ****
--- 21,79 ----
* questions.
*
*/
package p1;
+ import p2.T3;
+
+ import java.lang.invoke.MethodHandle;
+ import java.lang.invoke.MethodHandles;
+ import java.lang.invoke.MethodHandles.Lookup;
+ import java.lang.invoke.MethodType;
+ import java.util.concurrent.Callable;
+
class T1 {
! protected void m() { System.out.println("T1.m");}
! protected void m1() {}
+ protected static void m2() {}
}
- public class T2 extends T1 {}
+ public static void main(String[] args) throws Throwable {
+ Lookup LOOKUP = T3.lookup();
+ Class<IllegalAccessException> IAE = IllegalAccessException.class;
+
+ assertFailure(IAE, () -> LOOKUP.findVirtual(T1.class, "m1", MethodType.methodType(void.class)));
+ assertFailure(IAE, () -> LOOKUP.findStatic(T1.class, "m2", MethodType.methodType(void.class)));
+
+ assertSuccess(() -> LOOKUP.findVirtual(T2.class, "m1", MethodType.methodType(void.class)));
+ assertSuccess(() -> LOOKUP.findVirtual(T3.class, "m1", MethodType.methodType(void.class)));
+
+ assertSuccess(() -> LOOKUP.findStatic(T2.class, "m2", MethodType.methodType(void.class)));
+ assertSuccess(() -> LOOKUP.findStatic(T3.class, "m2", MethodType.methodType(void.class)));
+
+ assertFailure(IAE, () -> LOOKUP.unreflect(T1.class.getDeclaredMethod("m1")));
+ assertFailure(IAE, () -> LOOKUP.unreflect(T1.class.getDeclaredMethod("m2")));
+
+ System.out.println("TEST PASSED");
+ }
+
+ public static void assertFailure(Class<? extends Throwable> expectedError, Callable r) {
+ try {
+ r.call();
+ } catch(Throwable e) {
+ if (expectedError.isAssignableFrom(e.getClass())) {
+ return; // expected error
+ } else {
+ throw new Error("Unexpected error type: "+e.getClass()+"; expected type: "+expectedError, e);
+ }
+ }
+ throw new Error("No error");
+ }
+
+ public static void assertSuccess(Callable r) {
+ try {
+ r.call();
+ } catch(Throwable e) {
+ throw new Error("Unexpected error", e);
+ }
+ }
+ }
test/java/lang/invoke/ProtectedMemberDifferentPackage/p1/T2.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File