Search in sources :

Example 1 with CrossPackageInnerClass

use of examples.PackageExamples.CrossPackageInnerClass in project openj9 by eclipse.

the class Find_InvokeTracker method test_FindVirtual_Public_CrossPackage_Overridden_InnerClass_Nested_Level2.

/**
 * findVirtual test using a public overridden method belonging to a second level inner class
 * which is a child of a first level inner class under the same outer class. The lookup class
 * is a first level inner class in a different package.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_CrossPackage_Overridden_InnerClass_Nested_Level2() throws Throwable {
    PackageExamples pe = new PackageExamples();
    CrossPackageInnerClass cp_inner1 = pe.new CrossPackageInnerClass();
    Lookup publicLookup = cp_inner1.getLookup();
    MethodHandle example = publicLookup.findVirtual(SamePackageExample.SamePackageInnerClass2.SamePackageInnerClass2_Nested_Level2_SubOf_Inner1.class, "addPublicInner", MethodType.methodType(int.class, int.class, int.class));
    SamePackageExample.SamePackageInnerClass g = ((new SamePackageExample()).new SamePackageInnerClass2()).new SamePackageInnerClass2_Nested_Level2_SubOf_Inner1();
    int s = (int) example.invoke(g, 1, 2);
    AssertJUnit.assertEquals(23, s);
}
Also used : Lookup(java.lang.invoke.MethodHandles.Lookup) SamePackageInnerClass(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass) PackageExamples(examples.PackageExamples) CrossPackageInnerClass(examples.PackageExamples.CrossPackageInnerClass) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Aggregations

SamePackageInnerClass (com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass)1 PackageExamples (examples.PackageExamples)1 CrossPackageInnerClass (examples.PackageExamples.CrossPackageInnerClass)1 MethodHandle (java.lang.invoke.MethodHandle)1 Lookup (java.lang.invoke.MethodHandles.Lookup)1 Test (org.testng.annotations.Test)1