use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.
the class Find_InvokeTracker method test_GetterSetter_Public_SamePackage_InnerClass_Level1.
/**
* findSetter, findGetter test using fields of an inner classes (level 1 deep) where the
* lookup class is the top outer class.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_GetterSetter_Public_SamePackage_InnerClass_Level1() throws Throwable {
Lookup publicLookup = MethodHandles.lookup();
MethodHandle mhSetter = publicLookup.findSetter(SamePackageExample.SamePackageInnerClass.class, "nonStaticPublicField_Inner1", int.class);
MethodHandle mhGetter = publicLookup.findGetter(SamePackageExample.SamePackageInnerClass.class, "nonStaticPublicField_Inner1", int.class);
SamePackageExample.SamePackageInnerClass g = (new SamePackageExample()).new SamePackageInnerClass();
mhSetter.invokeExact(g, 5);
int o = (int) mhGetter.invokeExact(g);
AssertJUnit.assertEquals(o, 5);
}
use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.
the class Find_InvokeTracker method test_FindSpecial_Public_SamePackage_Overridden_InnerClass_Nested_Level2.
/**
* findSpecial test using a public overridden method belonging to a second level inner class
* which is a child of a first level inner class (the lookup class) under the same outer class.
* The resultant method handle is bound to LookupAPITests_Find (this class).
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_FindSpecial_Public_SamePackage_Overridden_InnerClass_Nested_Level2() throws Throwable {
SamePackageExample spe = new SamePackageExample();
SamePackageInnerClass spe_inner1 = spe.new SamePackageInnerClass();
Lookup publicLookup = spe_inner1.getLookup();
boolean iaeThrown = false;
try {
publicLookup.findSpecial(SamePackageExample.SamePackageInnerClass2.SamePackageInnerClass2_Nested_Level2_SubOf_Inner1.class, "addPublicInner", MethodType.methodType(int.class, int.class, int.class), LookupAPITests_Find.class);
} catch (IllegalAccessException e) {
iaeThrown = true;
}
assert (iaeThrown);
}
use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.
the class LookupInTests method testLookup_PublicInnerClassLookup_ParallelInnerClasses_Level2.
/**
* Validates access restrictions stored in a new Lookup object created from an old Lookup object
* where the new lookup class is an second level inner class that shares the same top level outer class as the old lookup class which is
* another second level inner class. Basically we validate that a nested class C.D.E can access private members within another
* nested class C.B.F
* @throws Throwable
*/
@Test(groups = { "level.sanity" })
public void testLookup_PublicInnerClassLookup_ParallelInnerClasses_Level2() throws Throwable {
SamePackageExample spe = new SamePackageExample();
SamePackageInnerClass spei_level1 = spe.new SamePackageInnerClass();
SamePackageInnerClass_Nested_Level2 spei_level2 = spei_level1.new SamePackageInnerClass_Nested_Level2();
Lookup lookup = spei_level2.getLookup();
Lookup inObj = lookup.in(SamePackageInnerClass2_Nested_Level2.class);
assertClassAndMode(inObj, SamePackageInnerClass2_Nested_Level2.class, FULL_ACCESS_MODE);
}
use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.
the class Find_InvokeTracker method test_GetterSetter_Protected_SamePackage_InnerClass_Level2.
/**
* findSetter, findGetter test using protected fields of an inner classes (level 2 deep)
* where the lookup class is the top level outer class.
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_GetterSetter_Protected_SamePackage_InnerClass_Level2() throws Throwable {
Lookup publicLookup = MethodHandles.lookup();
MethodHandle mhSetter = publicLookup.findSetter(SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2.class, "nonStaticProtectedField_Inner2", int.class);
MethodHandle mhGetter = publicLookup.findGetter(SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2.class, "nonStaticProtectedField_Inner2", int.class);
SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2 g = ((new SamePackageExample()).new SamePackageInnerClass()).new SamePackageInnerClass_Nested_Level2();
mhSetter.invokeExact(g, 5);
int o = (int) mhGetter.invokeExact(g);
AssertJUnit.assertEquals(o, 5);
}
use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.
the class Find_InvokeTracker method test_GetterSetter_Public_CrossPackage_InnerClass_Level1.
/**
* findSetter, findGetter test using fields of an inner classes (level 1 deep) where the
* lookup class is the top outer class belonging to a different package .
* @throws Throwable
*/
@Test(groups = { "level.extended" })
public void test_GetterSetter_Public_CrossPackage_InnerClass_Level1() throws Throwable {
Lookup publicLookup = PackageExamples.getLookup();
MethodHandle mhSetter = publicLookup.findSetter(SamePackageExample.SamePackageInnerClass.class, "nonStaticPublicField_Inner1", int.class);
MethodHandle mhGetter = publicLookup.findGetter(SamePackageExample.SamePackageInnerClass.class, "nonStaticPublicField_Inner1", int.class);
SamePackageExample.SamePackageInnerClass g = (new SamePackageExample()).new SamePackageInnerClass();
mhSetter.invokeExact(g, 5);
int o = (int) mhGetter.invokeExact(g);
AssertJUnit.assertEquals(o, 5);
}
Aggregations