public static JavaProxyClass getProxyClass(Ruby runtime, Class superClass, Class[] interfaces) throws InvocationTargetException { return getProxyClass(runtime,superClass,interfaces,null); }
public static JavaProxyClass getProxyClass(Ruby runtime, Class superClass, Class[] interfaces) throws InvocationTargetException { return getProxyClass(runtime,superClass,interfaces,null); }
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 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); }
@JRubyMethod(meta = true) public static RubyObject get_with_class(final IRubyObject self, IRubyObject obj) { final Ruby runtime = self.getRuntime(); if (!(obj instanceof RubyClass)) { throw runtime.newTypeError(obj, runtime.getClassClass()); } return getProxyClass(runtime, (RubyClass) obj); }
@JRubyMethod(meta = true) public static RubyObject get_with_class(final IRubyObject self, IRubyObject obj) { final Ruby runtime = self.getRuntime(); if (!(obj instanceof RubyClass)) { throw runtime.newTypeError(obj, runtime.getClassClass()); } return getProxyClass(runtime, (RubyClass) obj); }
private static JavaProxyClass getProxyClass(final IRubyObject self) { final RubyClass metaClass = self.getMetaClass(); IRubyObject proxyClass = metaClass.getInstanceVariable("@java_proxy_class"); if (proxyClass == null || proxyClass.isNil()) { // lazy (proxy) class generation ... on JavaSubClass.new proxyClass = JavaProxyClass.getProxyClass(self.getRuntime(), metaClass); metaClass.setInstanceVariable("@java_proxy_class", proxyClass); } return (JavaProxyClass) proxyClass; }
private static JavaProxyClass getProxyClass(final IRubyObject self) { final RubyClass metaClass = self.getMetaClass(); IRubyObject proxyClass = metaClass.getInstanceVariable("@java_proxy_class"); if (proxyClass == null || proxyClass.isNil()) { // lazy (proxy) class generation ... on JavaSubClass.new proxyClass = JavaProxyClass.getProxyClass(self.getRuntime(), metaClass); metaClass.setInstanceVariable("@java_proxy_class", proxyClass); } return (JavaProxyClass) proxyClass; }
@JRubyMethod(meta = true) public static RubyObject get(IRubyObject self, IRubyObject obj) { final Ruby runtime = self.getRuntime(); if ( ! ( obj instanceof JavaClass ) ) { throw runtime.newTypeError(obj, runtime.getJavaSupport().getJavaClassClass()); } final JavaClass type = (JavaClass) obj; try { return getProxyClass(runtime, type.javaClass(), EMPTY_CLASS_ARRAY); } catch (InvocationTargetException|Error e) { RaiseException ex = runtime.newArgumentError("unable to create proxy class for " + type.getValue()); ex.initCause(e); throw ex; } }
@JRubyMethod(meta = true) public static RubyObject get(IRubyObject self, IRubyObject obj) { final Ruby runtime = self.getRuntime(); if ( ! ( obj instanceof JavaClass ) ) { throw runtime.newTypeError(obj, runtime.getJavaSupport().getJavaClassClass()); } final JavaClass type = (JavaClass) obj; try { return getProxyClass(runtime, type.javaClass(), EMPTY_CLASS_ARRAY); } catch (InvocationTargetException|Error e) { RaiseException ex = runtime.newArgumentError("unable to create proxy class for " + type.getValue()); ex.initCause(e); throw ex; } }
return getProxyClass(recv.getRuntime(), javaClass.javaClass(), interfaces, names); } catch (Error e) { RaiseException ex = recv.getRuntime().newArgumentError("unable to create proxy class for " + javaClass.getValue() + " : " + e.getMessage());
return getProxyClass(recv.getRuntime(), javaClass.javaClass(), interfaces, names); } catch (Error e) { RaiseException ex = recv.getRuntime().newArgumentError("unable to create proxy class for " + javaClass.getValue() + " : " + e.getMessage());
@JRubyMethod(meta = true) public static RubyObject get(IRubyObject recv, IRubyObject obj) { if (!(obj instanceof JavaClass)) { throw recv.getRuntime().newTypeError(obj, recv.getRuntime().getJavaSupport().getJavaClassClass()); } JavaClass type = (JavaClass)obj; try { return getProxyClass(recv.getRuntime(), (Class) type.getValue(), new Class[0]); } catch (Error e) { RaiseException ex = recv.getRuntime().newArgumentError("unable to create proxy class for " + type.getValue()); ex.initCause(e); throw ex; } catch (InvocationTargetException e) { RaiseException ex = recv.getRuntime().newArgumentError("unable to create proxy class for " + type.getValue()); ex.initCause(e); throw ex; } }
@JRubyMethod(meta = true) public static RubyObject get(IRubyObject recv, IRubyObject obj) { if (!(obj instanceof JavaClass)) { throw recv.getRuntime().newTypeError(obj, recv.getRuntime().getJavaSupport().getJavaClassClass()); } JavaClass type = (JavaClass)obj; try { return getProxyClass(recv.getRuntime(), (Class) type.getValue(), new Class[0]); } catch (Error e) { RaiseException ex = recv.getRuntime().newArgumentError("unable to create proxy class for " + type.getValue()); ex.initCause(e); throw ex; } catch (InvocationTargetException e) { RaiseException ex = recv.getRuntime().newArgumentError("unable to create proxy class for " + type.getValue()); ex.initCause(e); throw ex; } }