Search in sources :

Example 1 with Support_Proxy_I1

use of tests.support.Support_Proxy_I1 in project robovm by robovm.

the class ProxyTest method test_newProxyInstanceLjava_lang_ClassLoader$Ljava_lang_ClassLjava_lang_reflect_InvocationHandler.

/**
     * java.lang.reflect.Proxy#newProxyInstance(java.lang.ClassLoader,
     *        java.lang.Class[], java.lang.reflect.InvocationHandler)
     */
public void test_newProxyInstanceLjava_lang_ClassLoader$Ljava_lang_ClassLjava_lang_reflect_InvocationHandler() {
    Object p = Proxy.newProxyInstance(Support_Proxy_I1.class.getClassLoader(), new Class[] { Support_Proxy_I1.class, Support_Proxy_I2.class }, new InvocationHandler() {

        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            if (method.getName().equals("equals"))
                return new Boolean(proxy == args[0]);
            if (method.getName().equals("array"))
                return new int[] { (int) ((long[]) args[0])[1], -1 };
            if (method.getName().equals("string")) {
                if ("".equals(args[0]))
                    throw new Support_Proxy_SubException();
                if ("clone".equals(args[0]))
                    throw new Support_Proxy_ParentException();
                if ("error".equals(args[0]))
                    throw new ArrayStoreException();
                if ("any".equals(args[0]))
                    throw new IllegalAccessException();
            }
            return null;
        }
    });
    Support_Proxy_I1 proxy = (Support_Proxy_I1) p;
    assertTrue("Failed identity test ", proxy.equals(proxy));
    assertTrue("Failed not equals test ", !proxy.equals(""));
    int[] result = (int[]) proxy.array(new long[] { 100L, -200L });
    assertEquals("Failed primitive type conversion test ", -200, result[0]);
    boolean worked = false;
    try {
        proxy.string("");
    } catch (Support_Proxy_SubException e) {
        worked = true;
    } catch (Support_Proxy_ParentException e) {
    // is never thrown
    }
    assertTrue("Problem converting exception ", worked);
    worked = false;
    try {
        proxy.string("clone");
    } catch (Support_Proxy_ParentException e) {
    // is never thrown
    } catch (UndeclaredThrowableException e) {
        worked = true;
    }
    assertTrue("Problem converting exception ", worked);
    worked = false;
    try {
        proxy.string("error");
    } catch (Support_Proxy_ParentException e) {
    // is never thrown
    } catch (UndeclaredThrowableException e) {
    } catch (RuntimeException e) {
        worked = e.getClass() == ArrayStoreException.class;
    }
    assertTrue("Problem converting exception ", worked);
    worked = false;
    try {
        proxy.string("any");
    } catch (Support_Proxy_ParentException e) {
    // is never thrown
    } catch (UndeclaredThrowableException e) {
        worked = true;
    }
    assertTrue("Problem converting exception ", worked);
    Broken1 proxyObject = null;
    try {
        proxyObject = (Broken1) Proxy.newProxyInstance(Broken1.class.getClassLoader(), new Class[] { Broken1.class }, new Broken1Invoke());
    } catch (Throwable e) {
        fail("Failed to create proxy for class: " + Broken1.class + " - " + e);
    }
    float brokenResult = proxyObject.method(2.1f, 5.8f);
    assertTrue("Invalid invoke result", brokenResult == 5.8f);
}
Also used : Support_Proxy_SubException(tests.support.Support_Proxy_SubException) Method(java.lang.reflect.Method) InvocationHandler(java.lang.reflect.InvocationHandler) Support_Proxy_I1(tests.support.Support_Proxy_I1) UndeclaredThrowableException(java.lang.reflect.UndeclaredThrowableException) Support_Proxy_ParentException(tests.support.Support_Proxy_ParentException)

Example 2 with Support_Proxy_I1

use of tests.support.Support_Proxy_I1 in project j2objc by google.

the class ProxyTest method test_isProxyClassLjava_lang_Class.

/**
     * java.lang.reflect.Proxy#isProxyClass(java.lang.Class)
     */
public void test_isProxyClassLjava_lang_Class() {
    Class proxy = Proxy.getProxyClass(Support_Proxy_I1.class.getClassLoader(), new Class[] { Support_Proxy_I1.class });
    class Fake extends Proxy {

        Fake() {
            super(null);
        }
    }
    Proxy fake = new Proxy(new InvocationHandler() {

        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            return null;
        }
    }) {
    };
    assertTrue("Does not believe its a Proxy class ", Proxy.isProxyClass(proxy));
    assertTrue("Proxy subclasses do not count ", !Proxy.isProxyClass(Fake.class));
    assertTrue("Is not a runtime generated Proxy class ", !Proxy.isProxyClass(fake.getClass()));
    boolean thrown = false;
    try {
        Proxy.isProxyClass(null);
    } catch (NullPointerException ex) {
        thrown = true;
    }
    assertTrue("NPE not thrown.", thrown);
}
Also used : Proxy(java.lang.reflect.Proxy) Support_Proxy_I1(tests.support.Support_Proxy_I1) Method(java.lang.reflect.Method) InvocationHandler(java.lang.reflect.InvocationHandler)

Example 3 with Support_Proxy_I1

use of tests.support.Support_Proxy_I1 in project j2objc by google.

the class ProxyTest method test_newProxyInstanceLjava_lang_ClassLoader$Ljava_lang_ClassLjava_lang_reflect_InvocationHandler.

/**
     * java.lang.reflect.Proxy#newProxyInstance(java.lang.ClassLoader,
     *        java.lang.Class[], java.lang.reflect.InvocationHandler)
     */
public void test_newProxyInstanceLjava_lang_ClassLoader$Ljava_lang_ClassLjava_lang_reflect_InvocationHandler() {
    Object p = Proxy.newProxyInstance(Support_Proxy_I1.class.getClassLoader(), new Class[] { Support_Proxy_I1.class, Support_Proxy_I2.class }, new InvocationHandler() {

        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            if (method.getName().equals("equals"))
                return new Boolean(proxy == args[0]);
            if (method.getName().equals("array"))
                return new int[] { (int) ((long[]) args[0])[1], -1 };
            if (method.getName().equals("string")) {
                if ("".equals(args[0]))
                    throw new Support_Proxy_SubException();
                if ("clone".equals(args[0]))
                    throw new Support_Proxy_ParentException();
                if ("error".equals(args[0]))
                    throw new ArrayStoreException();
                if ("any".equals(args[0]))
                    throw new IllegalAccessException();
            }
            return null;
        }
    });
    Support_Proxy_I1 proxy = (Support_Proxy_I1) p;
    assertTrue("Failed identity test ", proxy.equals(proxy));
    assertTrue("Failed not equals test ", !proxy.equals(""));
    int[] result = (int[]) proxy.array(new long[] { 100L, -200L });
    assertEquals("Failed primitive type conversion test ", -200, result[0]);
    Broken1 proxyObject = null;
    try {
        proxyObject = (Broken1) Proxy.newProxyInstance(Broken1.class.getClassLoader(), new Class[] { Broken1.class }, new Broken1Invoke());
    } catch (Throwable e) {
        fail("Failed to create proxy for class: " + Broken1.class + " - " + e);
    }
    float brokenResult = proxyObject.method(2.1f, 5.8f);
    assertTrue("Invalid invoke result", brokenResult == 5.8f);
}
Also used : Support_Proxy_SubException(tests.support.Support_Proxy_SubException) Method(java.lang.reflect.Method) InvocationHandler(java.lang.reflect.InvocationHandler) Support_Proxy_I1(tests.support.Support_Proxy_I1) Support_Proxy_ParentException(tests.support.Support_Proxy_ParentException)

Example 4 with Support_Proxy_I1

use of tests.support.Support_Proxy_I1 in project j2objc by google.

the class ProxyTest method test_getInvocationHandlerLjava_lang_Object.

/**
     * java.lang.reflect.Proxy#getInvocationHandler(java.lang.Object)
     */
public void test_getInvocationHandlerLjava_lang_Object() {
    InvocationHandler handler = new InvocationHandler() {

        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            return null;
        }
    };
    Object p = Proxy.newProxyInstance(Support_Proxy_I1.class.getClassLoader(), new Class[] { Support_Proxy_I1.class }, handler);
    assertTrue("Did not return invocation handler ", Proxy.getInvocationHandler(p) == handler);
    boolean aborted = false;
    try {
        Proxy.getInvocationHandler("");
    } catch (IllegalArgumentException e) {
        aborted = true;
    }
    assertTrue("Did not detect non proxy object ", aborted);
}
Also used : Support_Proxy_I1(tests.support.Support_Proxy_I1) Method(java.lang.reflect.Method) InvocationHandler(java.lang.reflect.InvocationHandler)

Example 5 with Support_Proxy_I1

use of tests.support.Support_Proxy_I1 in project robovm by robovm.

the class ProxyTest method test_isProxyClassLjava_lang_Class.

/**
     * java.lang.reflect.Proxy#isProxyClass(java.lang.Class)
     */
public void test_isProxyClassLjava_lang_Class() {
    Class proxy = Proxy.getProxyClass(Support_Proxy_I1.class.getClassLoader(), new Class[] { Support_Proxy_I1.class });
    class Fake extends Proxy {

        Fake() {
            super(null);
        }
    }
    Proxy fake = new Proxy(new InvocationHandler() {

        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            return null;
        }
    }) {
    };
    assertTrue("Does not believe its a Proxy class ", Proxy.isProxyClass(proxy));
    assertTrue("Proxy subclasses do not count ", !Proxy.isProxyClass(Fake.class));
    assertTrue("Is not a runtime generated Proxy class ", !Proxy.isProxyClass(fake.getClass()));
    boolean thrown = false;
    try {
        Proxy.isProxyClass(null);
    } catch (NullPointerException ex) {
        thrown = true;
    }
    assertTrue("NPE not thrown.", thrown);
}
Also used : Proxy(java.lang.reflect.Proxy) Support_Proxy_I1(tests.support.Support_Proxy_I1) Method(java.lang.reflect.Method) InvocationHandler(java.lang.reflect.InvocationHandler)

Aggregations

InvocationHandler (java.lang.reflect.InvocationHandler)6 Method (java.lang.reflect.Method)6 Support_Proxy_I1 (tests.support.Support_Proxy_I1)6 Proxy (java.lang.reflect.Proxy)2 Support_Proxy_ParentException (tests.support.Support_Proxy_ParentException)2 Support_Proxy_SubException (tests.support.Support_Proxy_SubException)2 UndeclaredThrowableException (java.lang.reflect.UndeclaredThrowableException)1