@JRubyMethod public IRubyObject java_send(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes) { String name = rubyName.asJavaString(); RubyArray argTypesAry = argTypes.convertToArray(); Ruby runtime = context.runtime; checkArgSizeMismatch(runtime, 0, argTypesAry); JavaMethod method = new JavaMethod(runtime, getMethod(context, name)); return method.invokeDirect(context, getObject()); }
@JRubyMethod public IRubyObject java_send(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes) { String name = rubyName.asJavaString(); RubyArray argTypesAry = argTypes.convertToArray(); Ruby runtime = context.runtime; checkArgSizeMismatch(runtime, 0, argTypesAry); JavaMethod method = new JavaMethod(runtime, getMethod(context, name)); return method.invokeDirect(context, getObject()); }
@JRubyMethod(required = 1, rest = true) public IRubyObject java_send(ThreadContext context, IRubyObject[] args) { Ruby runtime = context.runtime; String name = args[0].asJavaString(); RubyArray argTypesAry = args[1].convertToArray(); final int argsLen = args.length - 2; checkArgSizeMismatch(runtime, argsLen, argTypesAry); Class[] argTypesClasses = (Class[]) argTypesAry.toArray(new Class[argsLen]); Object[] javaArgs = new Object[argsLen]; for ( int i = 0; i < argsLen; i++ ) { javaArgs[i] = args[i + 2].toJava( argTypesClasses[i] ); } JavaMethod method = new JavaMethod(runtime, getMethod(context, name, argTypesClasses)); return method.invokeDirect(context, getObject(), javaArgs); }
@JRubyMethod public IRubyObject java_send(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes, IRubyObject arg0) { String name = rubyName.asJavaString(); RubyArray argTypesAry = argTypes.convertToArray(); Ruby runtime = context.runtime; checkArgSizeMismatch(runtime, 1, argTypesAry); Class argTypeClass = (Class) argTypesAry.eltInternal(0).toJava(Class.class); JavaMethod method = new JavaMethod(runtime, getMethod(context, name, argTypeClass)); return method.invokeDirect(context, getObject(), arg0.toJava(argTypeClass)); }
@JRubyMethod public IRubyObject java_send(ThreadContext context, IRubyObject rubyName, IRubyObject argTypes, IRubyObject arg0) { String name = rubyName.asJavaString(); RubyArray argTypesAry = argTypes.convertToArray(); Ruby runtime = context.runtime; checkArgSizeMismatch(runtime, 1, argTypesAry); Class argTypeClass = (Class) argTypesAry.eltInternal(0).toJava(Class.class); JavaMethod method = new JavaMethod(runtime, getMethod(context, name, argTypeClass)); return method.invokeDirect(context, getObject(), arg0.toJava(argTypeClass)); }
@JRubyMethod(required = 1, rest = true) public IRubyObject java_send(ThreadContext context, IRubyObject[] args) { Ruby runtime = context.runtime; String name = args[0].asJavaString(); RubyArray argTypesAry = args[1].convertToArray(); final int argsLen = args.length - 2; checkArgSizeMismatch(runtime, argsLen, argTypesAry); Class[] argTypesClasses = (Class[]) argTypesAry.toArray(new Class[argsLen]); Object[] javaArgs = new Object[argsLen]; for ( int i = 0; i < argsLen; i++ ) { javaArgs[i] = args[i + 2].toJava( argTypesClasses[i] ); } JavaMethod method = new JavaMethod(runtime, getMethod(context, name, argTypesClasses)); return method.invokeDirect(context, getObject(), javaArgs); }