Search in sources :

Example 11 with SamePackageInnerClass

use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.

the class Find_InvokeTracker method test_FindVirtual_Public_SamePackage_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 (the lookup class) under the same outer class.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_SamePackage_Overridden_InnerClass_Nested_Level2() throws Throwable {
    SamePackageExample spe = new SamePackageExample();
    SamePackageInnerClass spe_inner1 = spe.new SamePackageInnerClass();
    Lookup publicLookup = spe_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) SamePackageInnerClass(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Example 12 with SamePackageInnerClass

use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.

the class Find_InvokeTracker method test_FindVirtual_Public_SamePackage_InnerClass_Level2.

/**
 * findVirtual test using public method of an inner classes (level 2 deep) where the
 * lookup class is a different class under the same package.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_SamePackage_InnerClass_Level2() throws Throwable {
    Lookup publicLookup = MethodHandles.lookup();
    MethodHandle example = publicLookup.findVirtual(SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2.class, "addPublicInner_Level2", MethodType.methodType(int.class, int.class, int.class));
    SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2 g = ((new SamePackageExample()).new SamePackageInnerClass()).new SamePackageInnerClass_Nested_Level2();
    int o = (int) example.invokeExact(g, 5, 0);
    AssertJUnit.assertEquals(5, o);
}
Also used : Lookup(java.lang.invoke.MethodHandles.Lookup) SamePackageInnerClass_Nested_Level2(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2) SamePackageInnerClass_Nested_Level2(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2) SamePackageInnerClass(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Example 13 with SamePackageInnerClass

use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.

the class Find_InvokeTracker method test_GetterSetter_Public_CrossPackage_InnerClass_Level2.

/**
 * findSetter, findGetter test using fields of an inner classes (level 2 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_Level2() throws Throwable {
    Lookup publicLookup = PackageExamples.getLookup();
    MethodHandle mhSetter = publicLookup.findSetter(SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2.class, "nonStaticPublicField_Inner2", int.class);
    MethodHandle mhGetter = publicLookup.findGetter(SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2.class, "nonStaticPublicField_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);
}
Also used : Lookup(java.lang.invoke.MethodHandles.Lookup) SamePackageInnerClass_Nested_Level2(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2) SamePackageInnerClass_Nested_Level2(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2) SamePackageInnerClass(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Example 14 with SamePackageInnerClass

use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.

the class Find_InvokeTracker method test_FindVirtual_Public_CrossPackage_InnerClass.

/**
 * findVirtual test using a public method of an inner class belonging to a different package as the lookup class.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_CrossPackage_InnerClass() throws Throwable {
    MethodHandle example = PackageExamples.getLookup().findVirtual(SamePackageExample.SamePackageInnerClass.class, "addPublicInner", MethodType.methodType(int.class, int.class, int.class));
    SamePackageExample.SamePackageInnerClass g = (new SamePackageExample()).new SamePackageInnerClass();
    int s = (int) example.invokeExact(g, 1, 2);
    AssertJUnit.assertEquals(3, s);
}
Also used : SamePackageInnerClass(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass) SamePackageInnerClass(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Example 15 with SamePackageInnerClass

use of com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass in project openj9 by eclipse.

the class Find_InvokeTracker method test_GetterSetter_Public_SamePackage_InnerClasses_Parallel_Level1.

/**
 * findSetter, findGetter test using fields of a first level inner class
 * where the lookup class is another first level inner class.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_GetterSetter_Public_SamePackage_InnerClasses_Parallel_Level1() throws Throwable {
    SamePackageExample spe = new SamePackageExample();
    SamePackageInnerClass spe_inner1 = spe.new SamePackageInnerClass();
    Lookup publicLookup = spe_inner1.getLookup();
    MethodHandle mhSetter = publicLookup.findSetter(SamePackageExample.SamePackageInnerClass2.class, "nonStaticPublicField_Inner12", int.class);
    MethodHandle mhGetter = publicLookup.findGetter(SamePackageExample.SamePackageInnerClass2.class, "nonStaticPublicField_Inner12", int.class);
    SamePackageExample.SamePackageInnerClass2 g = (new SamePackageExample()).new SamePackageInnerClass2();
    mhSetter.invokeExact(g, 5);
    int o = (int) mhGetter.invokeExact(g);
    AssertJUnit.assertEquals(o, 5);
}
Also used : Lookup(java.lang.invoke.MethodHandles.Lookup) SamePackageInnerClass(com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Aggregations

SamePackageInnerClass (com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass)16 Test (org.testng.annotations.Test)16 MethodHandle (java.lang.invoke.MethodHandle)14 Lookup (java.lang.invoke.MethodHandles.Lookup)13 SamePackageInnerClass_Nested_Level2 (com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass.SamePackageInnerClass_Nested_Level2)7 MethodHandles.publicLookup (java.lang.invoke.MethodHandles.publicLookup)1