package jnius; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class NativeInvocationHandler implements InvocationHandler { public NativeInvocationHandler(long ptr) { this.ptr = ptr; } public Object invoke(Object proxy, Method method, Object[] args) { /** if ( method.getName() == "toString" ) { System.out.println("+ java:invoke toString."); return ""; } /**/ System.out.print("+ java:invoke(, "); // don't call it, or recursive lookup/proxy will go! //System.out.print(proxy); //System.out.print(", "); System.out.print(method); System.out.print(", "); System.out.print(args); System.out.println(")"); /** if ( args != null ) { for ( int i = 0; i < args.length; i++ ) { System.out.print(" - arg"); System.out.print(i); System.out.print(","); System.out.print(args[i].getClass()); System.out.print(": "); System.out.println(args[i]); } } **/ //System.out.println(method.getParameterTypes()); //System.out.print("+ java:call native invoke0() >>>"); Object ret = invoke0(proxy, method, args); //System.out.println("+ java:call native invoke0() <<<"); System.out.print("+ java:invoke returned: "); System.out.println(ret); return ret; } native Object invoke0(Object proxy, Method method, Object[] args); private long ptr; }