Search in sources :

Example 26 with PackageExamples

use of examples.PackageExamples in project openj9 by eclipse.

the class Unreflect_InvokeTracker method test_Unreflect_Public_CrossPackage.

/**
 **************************************************************************************************
 * unreflect tests.
 * Combinations :Cross package - public [static] and private [static] , virtual [overridden] methods
 * *************************************************************************************************
 */
/**
 * Test to unreflect a public virtual method belonging to a different package than the Lookup class.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
@SuppressWarnings({ "rawtypes", "unchecked" })
public void test_Unreflect_Public_CrossPackage() throws Throwable {
    Class clazz = Class.forName("examples.PackageExamples");
    Method m = clazz.getDeclaredMethod("addPublic", int.class, int.class);
    MethodHandle mh = MethodHandles.lookup().unreflect(m);
    PackageExamples g = new PackageExamples();
    int out = (int) mh.invokeExact(g, 1, 2);
    AssertJUnit.assertEquals(3, out);
}
Also used : Method(java.lang.reflect.Method) PackageExamples(examples.PackageExamples) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Example 27 with PackageExamples

use of examples.PackageExamples in project openj9 by eclipse.

the class Unreflect_InvokeTracker method test_Unreflect_SetterGetter_Public_CrossPackage.

/**
 ****************************************************************************
 * unreflectGetter unreflectSetter tests.
 * Combinations : cross package - public [static] and private [static] fields
 *****************************************************************************
 */
/**
 * unreflectSetter/getter test using a public virtual method belonging to a different package than the Lookup class.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_Unreflect_SetterGetter_Public_CrossPackage() throws Throwable {
    Field nonStaticPublicField = PackageExamples.class.getDeclaredField("nonStaticPublicField");
    PackageExamples g = new PackageExamples();
    MethodHandle mhSetter = MethodHandles.lookup().unreflectSetter(nonStaticPublicField);
    mhSetter.invokeExact(g, 100);
    MethodHandle mhGetter = MethodHandles.lookup().unreflectGetter(nonStaticPublicField);
    int out = (int) mhGetter.invokeExact(g);
    AssertJUnit.assertEquals(100, out);
}
Also used : Field(java.lang.reflect.Field) PackageExamples(examples.PackageExamples) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Example 28 with PackageExamples

use of examples.PackageExamples in project openj9 by eclipse.

the class Find_InvokeTracker method test_GetterSetter_Public_CrossPackage.

/**
 ******************************************************************************
 * findSetter, findGetter, findStaticSetter, findStaticGetter tests.
 * COMBINATIONS: Cross package - public, private, public static, private static,
 * protected, super-class, sub-class fields
 * *****************************************************************************
 */
/*public fields ( cross package )*/
/**
 * findSetter, findGetter tests using public fields belonging to a different class under a
 * different package than the lookup class.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_GetterSetter_Public_CrossPackage() throws Throwable {
    Lookup publicLookup = MethodHandles.lookup();
    MethodHandle mhSetter = publicLookup.findSetter(PackageExamples.class, "nonStaticPublicField", int.class);
    MethodHandle mhGetter = publicLookup.findGetter(PackageExamples.class, "nonStaticPublicField", int.class);
    PackageExamples g = new PackageExamples();
    mhSetter.invokeExact(g, 5);
    int o = (int) mhGetter.invoke(g);
    AssertJUnit.assertEquals(o, 5);
}
Also used : Lookup(java.lang.invoke.MethodHandles.Lookup) PackageExamples(examples.PackageExamples) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Example 29 with PackageExamples

use of examples.PackageExamples in project openj9 by eclipse.

the class Find_InvokeTracker method test_FindVirtual_Public_CrossPackage_Overridden_SubclassLookup.

/**
 * findVirtual test with a public overridden method in a super-class of the lookup class that is on a different package than the lookup class.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_CrossPackage_Overridden_SubclassLookup() throws Throwable {
    MethodHandle example = CrossPackageExampleSubclass.getLookup().findVirtual(PackageExamples.class, "addPublic", MethodType.methodType(int.class, int.class, int.class));
    PackageExamples g = new CrossPackageExampleSubclass();
    int s = (int) example.invoke(g, 1, 2);
    AssertJUnit.assertEquals(5, s);
}
Also used : PackageExamples(examples.PackageExamples) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Example 30 with PackageExamples

use of examples.PackageExamples in project openj9 by eclipse.

the class Find_InvokeTracker method test_FindVirtual_Public_CrossPackage.

/*public methods ( cross package )*/
/**
 * findVirtual test with a public method in a class that belongs to a different package than the lookup class.
 * @throws Throwable
 */
@Test(groups = { "level.extended" })
public void test_FindVirtual_Public_CrossPackage() throws Throwable {
    MethodHandle example = MethodHandles.lookup().findVirtual(PackageExamples.class, "addPublic", MethodType.methodType(int.class, int.class, int.class));
    PackageExamples g = new PackageExamples();
    int s = (int) example.invokeExact(g, 1, 2);
    AssertJUnit.assertEquals(3, s);
}
Also used : PackageExamples(examples.PackageExamples) MethodHandle(java.lang.invoke.MethodHandle) Test(org.testng.annotations.Test)

Aggregations

PackageExamples (examples.PackageExamples)46 Test (org.testng.annotations.Test)46 MethodHandle (java.lang.invoke.MethodHandle)41 CrossPackageSingleMethodInterfaceExample (examples.CrossPackageSingleMethodInterfaceExample)8 Lookup (java.lang.invoke.MethodHandles.Lookup)7 Method (java.lang.reflect.Method)6 Constructor (java.lang.reflect.Constructor)2 Field (java.lang.reflect.Field)2 SamePackageInnerClass (com.ibm.j9.jsr292.SamePackageExample.SamePackageInnerClass)1 CrossPackageInnerClass (examples.PackageExamples.CrossPackageInnerClass)1 ArrayList (java.util.ArrayList)1