@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) { JavaMethod method = (JavaMethod) findCallable(self, name, args, args.length); return method.invokeStaticDirect( context, convertArguments(method, args) ); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) { JavaMethod method = (JavaMethod) findCallable(self, name, args, args.length); return method.invokeStaticDirect( context, convertArguments(method, args) ); }
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block) { if (block.isGiven()) { int len = args.length; // too much array creation! Object[] convertedArgs = new Object[len + 1]; IRubyObject[] intermediate = new IRubyObject[len + 1]; System.arraycopy(args, 0, intermediate, 0, len); intermediate[len] = RubyProc.newProc(context.runtime, block, block.type); JavaMethod method = (JavaMethod)findCallable(self, name, intermediate, len + 1); for (int i = 0; i < len + 1; i++) { convertedArgs[i] = convertArg(intermediate[i], method, i); } return method.invokeStaticDirect(convertedArgs); } else { return call(context, self, clazz, name, args); } }
public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block) { if (block.isGiven()) { int len = args.length; // too much array creation! Object[] convertedArgs = new Object[len + 1]; IRubyObject[] intermediate = new IRubyObject[len + 1]; System.arraycopy(args, 0, intermediate, 0, len); intermediate[len] = RubyProc.newProc(context.runtime, block, block.type); JavaMethod method = (JavaMethod)findCallable(self, name, intermediate, len + 1); for (int i = 0; i < len + 1; i++) { convertedArgs[i] = convertArg(intermediate[i], method, i); } return method.invokeStaticDirect(convertedArgs); } else { return call(context, self, clazz, name, args); } }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) { int len = args.length; Object[] convertedArgs = new Object[len]; JavaMethod method = (JavaMethod)findCallable(self, name, args, len); if (method.isVarArgs()) { len = method.getParameterTypes().length - 1; convertedArgs = new Object[len + 1]; for (int i = 0; i < len && i < args.length; i++) { convertedArgs[i] = convertArg(args[i], method, i); } convertedArgs[len] = convertVarargs(args, method); } else { convertedArgs = new Object[len]; for (int i = 0; i < len && i < args.length; i++) { convertedArgs[i] = convertArg(args[i], method, i); } } return method.invokeStaticDirect(convertedArgs); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args) { int len = args.length; Object[] convertedArgs = new Object[len]; JavaMethod method = (JavaMethod)findCallable(self, name, args, len); if (method.isVarArgs()) { len = method.getParameterTypes().length - 1; convertedArgs = new Object[len + 1]; for (int i = 0; i < len && i < args.length; i++) { convertedArgs[i] = convertArg(args[i], method, i); } convertedArgs[len] = convertVarargs(args, method); } else { convertedArgs = new Object[len]; for (int i = 0; i < len && i < args.length; i++) { convertedArgs[i] = convertArg(args[i], method, i); } } return method.invokeStaticDirect(convertedArgs); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block) { if (block.isGiven()) { final int len = args.length; // too much array creation! IRubyObject[] newArgs = ArraySupport.newCopy(args, RubyProc.newProc(context.runtime, block, block.type)); JavaMethod method = (JavaMethod) findCallable(self, name, newArgs, len + 1); final Class<?>[] paramTypes = method.getParameterTypes(); Object[] convertedArgs = new Object[len + 1]; for (int i = 0; i < len + 1; i++) { convertedArgs[i] = newArgs[i].toJava(paramTypes[i]); } return method.invokeStaticDirect(context, convertedArgs); } return call(context, self, clazz, name, args); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name, IRubyObject[] args, Block block) { if (block.isGiven()) { final int len = args.length; // too much array creation! IRubyObject[] newArgs = ArraySupport.newCopy(args, RubyProc.newProc(context.runtime, block, block.type)); JavaMethod method = (JavaMethod) findCallable(self, name, newArgs, len + 1); final Class<?>[] paramTypes = method.getParameterTypes(); Object[] convertedArgs = new Object[len + 1]; for (int i = 0; i < len + 1; i++) { convertedArgs[i] = newArgs[i].toJava(paramTypes[i]); } return method.invokeStaticDirect(context, convertedArgs); } return call(context, self, clazz, name, args); }