public static void createJavaProxyClasses(final Ruby runtime, final RubyModule Java) { JavaProxyClass.createJavaProxyClassClass(runtime, Java); ProxyMethodImpl.createJavaProxyMethodClass(runtime, Java); JavaProxyConstructor.createJavaProxyConstructorClass(runtime, Java); }
public static Object newProxyInstance(Ruby runtime, Class superClass, Class[] interfaces, Class[] constructorParameters, Object[] constructorArgs, JavaProxyInvocationHandler handler) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException { JavaProxyClass proxyClass = newProxyClass(runtime, superClass, interfaces); JavaProxyConstructor constructor = proxyClass.getConstructor( constructorParameters == null ? EMPTY_CLASS_ARRAY : constructorParameters ); return constructor.newInstance(constructorArgs, handler); }
public static Object newProxyInstance(Ruby runtime, Class superClass, Class[] interfaces, Class[] constructorParameters, Object[] constructorArgs, JavaProxyInvocationHandler handler) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException { JavaProxyClass jpc = getProxyClass(runtime, superClass, interfaces); JavaProxyConstructor cons = jpc.getConstructor(constructorParameters == null ? new Class[0] : constructorParameters); return cons.newInstance(constructorArgs, handler); }
private IRubyObject tryProxyInvocation(ThreadContext context, Object javaInvokee) { JavaProxyClass jpc = ((InternalJavaProxy) javaInvokee).___getProxyClass(); JavaProxyMethod jpm; if ((jpm = jpc.getMethod(method.getName(), parameterTypes)) != null && jpm.hasSuperImplementation()) { return invokeDirectSuperWithExceptionHandling(context, jpm.getSuperMethod(), javaInvokee); } else { return invokeDirectWithExceptionHandling(context, method, javaInvokee); } }
public JavaObject newInstance(final IRubyObject self, Object[] args) throws RaiseException { final Ruby runtime = getRuntime(); JavaProxyInvocationHandler handler = new MethodInvocationHandler(runtime, self); try { return JavaObject.wrap(runtime, newInstance(args, handler)); } catch (Throwable ex) { throw mapInstantiationException(runtime, ex); } }
protected String nameOnInspection() { return getDeclaringClass().nameOnInspection() + "/" + getName(); }
protected String nameOnInspection() { return getDeclaringClass().nameOnInspection(); }
public JavaProxyConstructor[] getConstructors() { JavaProxyConstructor[] constructors = this.constructors; if ( constructors != null ) return constructors; final Ruby runtime = getRuntime(); final Constructor[] ctors = proxyClass.getConstructors(); constructors = new JavaProxyConstructor[ ctors.length ]; for ( int i = 0; i < ctors.length; i++ ) { constructors[i] = new JavaProxyConstructor(runtime, this, ctors[i]); } return this.constructors = constructors; }
private static String[] interfaceNamesForProxyClass(final Class[] interfaces) { String[] interfaceNames = new String[interfaces.length + 1]; for (int i = 0; i < interfaces.length; i++) { interfaceNames[i] = toInternalClassName(interfaces[i]); } // all proxies implement our InternalJavaProxy interface : interfaceNames[interfaces.length] = toInternalClassName(InternalJavaProxy.class); return interfaceNames; }
private static void addInterfaces( final Set<Class> allClasses, final Map<MethodKey, MethodData> methods, final Class[] ifaces, final Set<String> names) { for ( int i = 0; i < ifaces.length; i++ ) { addInterface(allClasses, methods, ifaces[i], names); } }
private IRubyObject tryProxyInvocation(ThreadContext context, Object javaInvokee, Object arg0, Object arg1, Object arg2, Object arg3) { JavaProxyClass jpc = ((InternalJavaProxy) javaInvokee).___getProxyClass(); JavaProxyMethod jpm; if ((jpm = jpc.getMethod(method.getName(), parameterTypes)) != null && jpm.hasSuperImplementation()) { return invokeDirectSuperWithExceptionHandling(context, jpm.getSuperMethod(), javaInvokee, arg0, arg1, arg2, arg3); } else { return invokeDirectWithExceptionHandling(context, method, javaInvokee, arg0, arg1, arg2, arg3); } }
public static void createJavaProxyClasses(final Ruby runtime, final RubyModule Java) { JavaProxyClass.createJavaProxyClassClass(runtime, Java); ProxyMethodImpl.createJavaProxyMethodClass(runtime, Java); JavaProxyConstructor.createJavaProxyConstructorClass(runtime, Java); }
public static Object newProxyInstance(Ruby runtime, Class superClass, Class[] interfaces, Class[] constructorParameters, Object[] constructorArgs, JavaProxyInvocationHandler handler) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException { JavaProxyClass jpc = getProxyClass(runtime, superClass, interfaces); JavaProxyConstructor cons = jpc.getConstructor(constructorParameters == null ? new Class[0] : constructorParameters); return cons.newInstance(constructorArgs, handler); }
public JavaObject newInstance(final IRubyObject self, Object[] args) throws RaiseException { final Ruby runtime = getRuntime(); JavaProxyInvocationHandler handler = new MethodInvocationHandler(runtime, self); try { return JavaObject.wrap(runtime, newInstance(args, handler)); } catch (Throwable ex) { throw mapInstantiationException(runtime, ex); } }
protected String nameOnInspection() { return getDeclaringClass().nameOnInspection() + "/" + getName(); }
public static Object newProxyInstance(Ruby runtime, Class superClass, Class[] interfaces, Class[] constructorParameters, Object[] constructorArgs, JavaProxyInvocationHandler handler) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException { JavaProxyClass proxyClass = newProxyClass(runtime, superClass, interfaces); JavaProxyConstructor constructor = proxyClass.getConstructor( constructorParameters == null ? EMPTY_CLASS_ARRAY : constructorParameters ); return constructor.newInstance(constructorArgs, handler); }
protected String nameOnInspection() { return getDeclaringClass().nameOnInspection(); }
private String[] interfaceNamesForProxyClass(final Class[] interfaces) { String[] interfaceNames = new String[interfaces.length + 1]; for (int i = 0; i < interfaces.length; i++) { interfaceNames[i] = toInternalClassName(interfaces[i]); } interfaceNames[interfaces.length] = toInternalClassName(InternalJavaProxy.class); return interfaceNames; }
private IRubyObject tryProxyInvocation(ThreadContext context, Object javaInvokee, Object arg0, Object arg1, Object arg2, Object arg3) { JavaProxyClass jpc = ((InternalJavaProxy) javaInvokee).___getProxyClass(); JavaProxyMethod jpm; if ((jpm = jpc.getMethod(method.getName(), parameterTypes)) != null && jpm.hasSuperImplementation()) { return invokeDirectSuperWithExceptionHandling(context, jpm.getSuperMethod(), javaInvokee, arg0, arg1, arg2, arg3); } else { return invokeDirectWithExceptionHandling(context, method, javaInvokee, arg0, arg1, arg2, arg3); } }
private static String[] interfaceNamesForProxyClass(final Class[] interfaces) { String[] interfaceNames = new String[interfaces.length + 1]; for (int i = 0; i < interfaces.length; i++) { interfaceNames[i] = toInternalClassName(interfaces[i]); } // all proxies implement our InternalJavaProxy interface : interfaceNames[interfaces.length] = toInternalClassName(InternalJavaProxy.class); return interfaceNames; }