public Object invoke(Object proxy, JavaProxyMethod proxyMethod, Object[] nargs) throws Throwable { final RubyClass metaClass = self.getMetaClass(); final String name = proxyMethod.getName(); final DynamicMethod method = metaClass.searchMethod(name); final IRubyObject result = invokeRuby(method, proxyMethod, metaClass, name, nargs); final Class<?> returnType = proxyMethod.getReturnType(); return returnType == void.class ? null : result.toJava( returnType ); }
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 Object invoke(Object proxy, JavaProxyMethod m, Object[] nargs) throws Throwable { String name = m.getName(); DynamicMethod method = self.getMetaClass().searchMethod(name); int v = method.getArity().getValue(); IRubyObject[] newArgs = new IRubyObject[nargs.length]; for (int i = nargs.length; --i >= 0; ) { newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); } if (v < 0 || v == (newArgs.length)) { return method.call(runtime.getCurrentContext(), self, self.getMetaClass(), name, newArgs).toJava(m.getReturnType()); } else if (m.hasSuperImplementation()) { RubyClass superClass = self.getMetaClass().getSuperClass(); return Helpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK).toJava(m.getReturnType()); } else { throw runtime.newArgumentError(newArgs.length, v); } } };
public Object invoke(Object proxy, JavaProxyMethod method, Object[] nargs) throws Throwable { final int length = nargs == null ? 0 : nargs.length; final IRubyObject[] rubyArgs = new IRubyObject[length + 2]; rubyArgs[0] = JavaObject.wrap(runtime, proxy); rubyArgs[1] = method; for ( int i = 0; i < length; i++ ) { rubyArgs[i + 2] = JavaUtil.convertJavaToRuby(runtime, nargs[i]); } IRubyObject procResult = proc.call(runtime.getCurrentContext(), rubyArgs); return procResult.toJava( method.getReturnType() ); }
private IRubyObject invokeRuby(final DynamicMethod method, final JavaProxyMethod proxyMethod, final RubyClass metaClass, final String name, final Object[] nargs) { final IRubyObject[] newArgs = new IRubyObject[nargs.length]; for ( int i = nargs.length; --i >= 0; ) { newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); } final int arity = method.getArity().getValue(); if ( arity < 0 || arity == newArgs.length ) { final ThreadContext context = runtime.getCurrentContext(); return method.call(context, self, metaClass, name, newArgs); } if ( proxyMethod.hasSuperImplementation() ) { final ThreadContext context = runtime.getCurrentContext(); final RubyClass superClass = metaClass.getSuperClass(); return Helpers.invokeAs(context, superClass, self, name, newArgs, Block.NULL_BLOCK); } throw runtime.newArgumentError(newArgs.length, arity); }
public Object invoke(Object proxy, JavaProxyMethod m, Object[] nargs) throws Throwable { String name = m.getName(); DynamicMethod method = self.getMetaClass().searchMethod(name); int v = method.getArity().getValue(); IRubyObject[] newArgs = new IRubyObject[nargs.length]; for (int i = nargs.length; --i >= 0; ) { newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); } if (v < 0 || v == (newArgs.length)) { return method.call(runtime.getCurrentContext(), self, self.getMetaClass(), name, newArgs).toJava(m.getReturnType()); } else if (m.hasSuperImplementation()) { RubyClass superClass = self.getMetaClass().getSuperClass(); return Helpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK).toJava(m.getReturnType()); } else { throw runtime.newArgumentError(newArgs.length, v); } } };
public Object invoke(Object proxy, JavaProxyMethod method, Object[] nargs) throws Throwable { final int length = nargs == null ? 0 : nargs.length; final IRubyObject[] rubyArgs = new IRubyObject[length + 2]; rubyArgs[0] = JavaObject.wrap(runtime, proxy); rubyArgs[1] = method; for ( int i = 0; i < length; i++ ) { rubyArgs[i + 2] = JavaUtil.convertJavaToRuby(runtime, nargs[i]); } IRubyObject procResult = proc.call(runtime.getCurrentContext(), rubyArgs); return procResult.toJava( method.getReturnType() ); }
private IRubyObject invokeRuby(final DynamicMethod method, final JavaProxyMethod proxyMethod, final RubyClass metaClass, final String name, final Object[] nargs) { final IRubyObject[] newArgs = new IRubyObject[nargs.length]; for ( int i = nargs.length; --i >= 0; ) { newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); } final int arity = method.getArity().getValue(); if ( arity < 0 || arity == newArgs.length ) { final ThreadContext context = runtime.getCurrentContext(); return method.call(context, self, metaClass, name, newArgs); } if ( proxyMethod.hasSuperImplementation() ) { final ThreadContext context = runtime.getCurrentContext(); final RubyClass superClass = metaClass.getSuperClass(); return Helpers.invokeAs(context, superClass, self, name, newArgs, Block.NULL_BLOCK); } throw runtime.newArgumentError(newArgs.length, arity); }
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 Object invoke(Object proxy, JavaProxyMethod m, Object[] nargs) throws Throwable { String name = m.getName(); DynamicMethod method = self.getMetaClass().searchMethod(name); int v = method.getArity().getValue(); IRubyObject[] newArgs = new IRubyObject[nargs.length]; for (int i = nargs.length; --i >= 0; ) { newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); } IRubyObject result = null; if (v < 0 || v == (newArgs.length)) { result = method.call(runtime.getCurrentContext(), self, self.getMetaClass(), name, newArgs); } else if (m.hasSuperImplementation()) { RubyClass superClass = self.getMetaClass().getSuperClass(); result = Helpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK); } else { throw runtime.newArgumentError(newArgs.length, v); } if (m.getReturnType() == void.class) { return null; } else { return result.toJava(m.getReturnType()); } } };
public Object invoke(Object proxy, JavaProxyMethod proxyMethod, Object[] nargs) throws Throwable { final RubyClass metaClass = self.getMetaClass(); final String name = proxyMethod.getName(); final DynamicMethod method = metaClass.searchMethod(name); final IRubyObject result = invokeRuby(method, proxyMethod, metaClass, name, nargs); final Class<?> returnType = proxyMethod.getReturnType(); return returnType == void.class ? null : result.toJava( returnType ); }
public Object invoke(Object proxy, JavaProxyMethod method, Object[] nargs) throws Throwable { int length = nargs == null ? 0 : nargs.length; IRubyObject[] rubyArgs = new IRubyObject[length + 2]; rubyArgs[0] = JavaObject.wrap(recv.getRuntime(), proxy); rubyArgs[1] = method; for (int i = 0; i < length; i++) { rubyArgs[i + 2] = JavaUtil.convertJavaToRuby(getRuntime(), nargs[i]); } IRubyObject call_result = proc.call(getRuntime().getCurrentContext(), rubyArgs); Object converted_result = call_result.toJava(method.getReturnType()); return converted_result; }
private IRubyObject tryProxyInvocation(Object javaInvokee, Object arg0, Object arg1, Object arg2) { JavaProxyClass jpc = ((InternalJavaProxy) javaInvokee).___getProxyClass(); JavaProxyMethod jpm; if ((jpm = jpc.getMethod(method.getName(), parameterTypes)) != null && jpm.hasSuperImplementation()) { return invokeDirectSuperWithExceptionHandling(jpm.getSuperMethod(), javaInvokee, arg0, arg1, arg2); } else { return invokeDirectWithExceptionHandling(method, javaInvokee, arg0, arg1, arg2); } }
public Object invoke(Object proxy, JavaProxyMethod m, Object[] nargs) throws Throwable { String name = m.getName(); DynamicMethod method = self.getMetaClass().searchMethod(name); int v = method.getArity().getValue(); IRubyObject[] newArgs = new IRubyObject[nargs.length]; for (int i = nargs.length; --i >= 0; ) { newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); } IRubyObject result = null; if (v < 0 || v == (newArgs.length)) { result = method.call(runtime.getCurrentContext(), self, self.getMetaClass(), name, newArgs); } else if (m.hasSuperImplementation()) { RubyClass superClass = self.getMetaClass().getSuperClass(); result = Helpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK); } else { throw runtime.newArgumentError(newArgs.length, v); } if (m.getReturnType() == void.class) { return null; } else { return result.toJava(m.getReturnType()); } } };
public Object invoke(Object proxy, JavaProxyMethod method, Object[] nargs) throws Throwable { int length = nargs == null ? 0 : nargs.length; IRubyObject[] rubyArgs = new IRubyObject[length + 2]; rubyArgs[0] = JavaObject.wrap(recv.getRuntime(), proxy); rubyArgs[1] = method; for (int i = 0; i < length; i++) { rubyArgs[i + 2] = JavaUtil.convertJavaToRuby(getRuntime(), nargs[i]); } IRubyObject call_result = proc.call(getRuntime().getCurrentContext(), rubyArgs); Object converted_result = call_result.toJava(method.getReturnType()); return converted_result; }
private IRubyObject tryProxyInvocation(ThreadContext context, Object javaInvokee, Object arg0, Object arg1, Object arg2) { 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); } else { return invokeDirectWithExceptionHandling(context, method, javaInvokee, arg0, arg1, arg2); } }
public Object invoke(Object proxy, JavaProxyMethod m, Object[] nargs) throws Throwable { String name = m.getName(); DynamicMethod method = self.getMetaClass().searchMethod(name); int v = method.getArity().getValue(); IRubyObject[] newArgs = new IRubyObject[nargs.length]; for (int i = nargs.length; --i >= 0; ) { newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); } IRubyObject result = null; if (v < 0 || v == (newArgs.length)) { result = method.call(runtime.getCurrentContext(), self, self.getMetaClass(), name, newArgs); } else if (m.hasSuperImplementation()) { RubyClass superClass = self.getMetaClass().getSuperClass(); result = RuntimeHelpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK); } else { throw runtime.newArgumentError(newArgs.length, v); } if (m.getReturnType() == void.class) { return null; } else { return result.toJava(m.getReturnType()); } } }
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 IRubyObject tryProxyInvocation(ThreadContext context, Object javaInvokee, Object... args) { JavaProxyClass jpc = ((InternalJavaProxy) javaInvokee).___getProxyClass(); JavaProxyMethod jpm; if ((jpm = jpc.getMethod(method.getName(), parameterTypes)) != null && jpm.hasSuperImplementation()) { return invokeDirectSuperWithExceptionHandling(context, jpm.getSuperMethod(), javaInvokee, args); } else { return invokeDirectWithExceptionHandling(context, method, javaInvokee, args); } }
private IRubyObject tryProxyInvocation(ThreadContext context, Object javaInvokee, Object arg0) { JavaProxyClass jpc = ((InternalJavaProxy) javaInvokee).___getProxyClass(); JavaProxyMethod jpm; if ((jpm = jpc.getMethod(method.getName(), parameterTypes)) != null && jpm.hasSuperImplementation()) { return invokeDirectSuperWithExceptionHandling(context, jpm.getSuperMethod(), javaInvokee, arg0); } else { return invokeDirectWithExceptionHandling(context, method, javaInvokee, arg0); } }