protected void checkArity(int length) { if (length != getArity()) { throw getRuntime().newArgumentError(length, getArity()); } }
@JRubyMethod public RubyArray exception_types() { return toRubyArray(getRuntime(), getExceptionTypes()); }
@JRubyMethod public IRubyObject generic_exception_types() { return Java.getInstance(getRuntime(), getGenericExceptionTypes()); }
final IRubyObject handlelIllegalArgumentEx(final IllegalArgumentException ex, Constructor target, final boolean targetInfo, Object... arguments) throws RaiseException { final StringBuilder msg = new StringBuilder(64); if ( targetInfo ) { msg.append("for constructor of type ").append( target.getDeclaringClass().getSimpleName() ); } msg.append(" expected "); dumpParameterTypes(msg); msg.append("; got: "); dumpArgTypes(arguments, msg); msg.append("; error: ").append( ex.getMessage() ); throw getRuntime().newTypeError( msg.toString() ); }
@JRubyMethod public IRubyObject parameter_types() { return JavaClass.getRubyArray(getRuntime(), getParameterTypes()); }
@JRubyMethod public RubyString to_generic_string() { return getRuntime().newString(toGenericString()); }
@JRubyMethod public IRubyObject parameter_annotations() { return Java.getInstance(getRuntime(), getParameterAnnotations()); }
@JRubyMethod public IRubyObject generic_parameter_types() { return Java.getInstance(getRuntime(), getGenericParameterTypes()); }
@JRubyMethod(name = "public?") public RubyBoolean public_p() { return RubyBoolean.newBoolean(getRuntime(), Modifier.isPublic(getModifiers())); }
@JRubyMethod(name = "varargs?") public RubyBoolean varargs_p() { return getRuntime().newBoolean(isVarArgs()); }
@SuppressWarnings("unchecked") // NULL_CACHE RubyToJavaInvoker(RubyModule host, Member member, String name) { super(host, Visibility.PUBLIC, name); this.runtime = host.getRuntime(); final T callable; T[] varargsCallables = null; int minVarArgsArity = -1; callable = createCallable(runtime, member); int minArity = callable.getArity(); if ( callable.isVarArgs() ) { // TODO does it need to happen? varargsCallables = createCallableArray(callable); minVarArgsArity = getMemberArity(member) - 1; } cache = NULL_CACHE; // if there's a single callable - matching (and thus the cache) won't be used this.javaCallable = callable; this.javaCallables = null; this.javaVarargsCallables = varargsCallables; setArity(minArity, minArity, minVarArgsArity); setupNativeCall(); }
static Object convertArg(IRubyObject arg, JavaCallable method, int index) { return arg.toJava(method.getParameterTypes()[index]); }
@JRubyMethod public IRubyObject inspect() { StringBuilder result = new StringBuilder(); result.append(nameOnInspection()); Class<?>[] parameterTypes = getParameterTypes(); for (int i = 0; i < parameterTypes.length; i++) { result.append(parameterTypes[i].getName()); if (i < parameterTypes.length - 1) { result.append(','); } } result.append(")>"); return getRuntime().newString(result.toString()); }
if (!callable.isVarArgs() && callable.getParameterTypes().length != args.length) { throw self.getRuntime().newArgumentError(args.length, callable.getParameterTypes().length);
final IRubyObject handleIllegalAccessEx(final IllegalAccessException ex, Member target) throws RaiseException { throw getRuntime().newTypeError("illegal access on '" + target.getName() + "': " + ex.getMessage()); }
protected IRubyObject handleInvocationTargetEx(InvocationTargetException ite, Member target) { return handleThrowable(ite.getTargetException(), target); } }
runtime.getWarnings().warn("ambiguous Java methods found, using " + ((Member) ((JavaCallable) method).accessibleObject()).getName() + CodegenUtils.prettyParams(msTypes));
private void checkCallableArity(final T callable, final int expected) { final int arity = callable.getArity(); if ( arity != expected ) throw runtime.newArgumentError(expected, arity); }
@JRubyMethod(name = { "argument_types", "parameter_types" }) public final RubyArray parameter_types() { return toRubyArray(getRuntime(), getParameterTypes()); }
@JRubyMethod public RubyString to_generic_string() { return getRuntime().newString(toGenericString()); }