Package org.jruby.java.invokers
Class RubyToJavaInvoker<T extends JavaCallable>
java.lang.Object
org.jruby.internal.runtime.methods.DynamicMethod
org.jruby.internal.runtime.methods.JavaMethod
org.jruby.java.invokers.RubyToJavaInvoker<T>
- All Implemented Interfaces:
Cloneable,MethodArgs2,NativeCallMethod
- Direct Known Subclasses:
ConstructorInvoker,MethodInvoker
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class org.jruby.internal.runtime.methods.JavaMethod
JavaMethod.JavaMethodN, JavaMethod.JavaMethodNBlock, JavaMethod.JavaMethodOne, JavaMethod.JavaMethodOneBlock, JavaMethod.JavaMethodOneOrN, JavaMethod.JavaMethodOneOrNBlock, JavaMethod.JavaMethodOneOrTwo, JavaMethod.JavaMethodOneOrTwoBlock, JavaMethod.JavaMethodOneOrTwoOrN, JavaMethod.JavaMethodOneOrTwoOrNBlock, JavaMethod.JavaMethodOneOrTwoOrThree, JavaMethod.JavaMethodOneOrTwoOrThreeBlock, JavaMethod.JavaMethodOneOrTwoOrThreeOrN, JavaMethod.JavaMethodOneOrTwoOrThreeOrNBlock, JavaMethod.JavaMethodThree, JavaMethod.JavaMethodThreeBlock, JavaMethod.JavaMethodThreeOrN, JavaMethod.JavaMethodThreeOrNBlock, JavaMethod.JavaMethodTwo, JavaMethod.JavaMethodTwoBlock, JavaMethod.JavaMethodTwoOrN, JavaMethod.JavaMethodTwoOrNBlock, JavaMethod.JavaMethodTwoOrThree, JavaMethod.JavaMethodTwoOrThreeBlock, JavaMethod.JavaMethodTwoOrThreeOrN, JavaMethod.JavaMethodTwoOrThreeOrNBlock, JavaMethod.JavaMethodZero, JavaMethod.JavaMethodZeroBlock, JavaMethod.JavaMethodZeroOrN, JavaMethod.JavaMethodZeroOrNBlock, JavaMethod.JavaMethodZeroOrOne, JavaMethod.JavaMethodZeroOrOneBlock, JavaMethod.JavaMethodZeroOrOneOrN, JavaMethod.JavaMethodZeroOrOneOrNBlock, JavaMethod.JavaMethodZeroOrOneOrTwo, JavaMethod.JavaMethodZeroOrOneOrTwoBlock, JavaMethod.JavaMethodZeroOrOneOrTwoOrN, JavaMethod.JavaMethodZeroOrOneOrTwoOrNBlock, JavaMethod.JavaMethodZeroOrOneOrTwoOrThree, JavaMethod.JavaMethodZeroOrOneOrTwoOrThreeBlock, JavaMethod.JavaMethodZeroOrOneOrTwoOrThreeOrN, JavaMethod.JavaMethodZeroOrOneOrTwoOrThreeOrNBlockNested classes/interfaces inherited from class org.jruby.internal.runtime.methods.DynamicMethod
DynamicMethod.NativeCall, DynamicMethod.Version -
Field Summary
FieldsModifier and TypeFieldDescription(package private) NonBlockingHashMapLong<T>(package private) booleanprotected Tprotected T[][]protected T[](package private) static final NonBlockingHashMapLongprivate final RubyFields inherited from class org.jruby.internal.runtime.methods.JavaMethod
BLOCK_METHODS, BLOCK_REST_METHODS, METHODS, NAME_PASSER, nativeCall, REST, REST_METHODS, signature, staticScopeFields inherited from class org.jruby.internal.runtime.methods.DynamicMethod
definedClass, flags, handle, implementationClass, name, protectedClass, serialNumber -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static JavaProxycastJavaProxy(IRubyObject self) private voidcheckCallableArity(T callable, int expected) static Object[]convertArguments(ParameterTypes method, IRubyObject[] args) static Object[]convertArguments(ParameterTypes method, IRubyObject[] args, int addSpace) static Object[]convertArguments(ParameterTypes method, IRubyObject arg0, int addSpace) private static ObjectconvertVarArgumentsOnly(Class<?> varArrayType, IRubyObject arg0) private static <T> ObjectconvertVarArgumentsOnly(Class<T> varArrayType, int varStart, IRubyObject[] args) protected abstract TcreateCallable(Ruby runtime, Member member) protected abstract T[]createCallableArray(int size) protected abstract T[]createCallableArray(T callable) protected abstract T[][]createCallableArrayArray(int size) findCallable(IRubyObject self, String name, IRubyObject[] args, int arity) Find the matching callable object given the target proxy wrapper, method name, arguments, and actual arity.protected final TfindCallableArityFour(IRubyObject self, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3) private TfindCallableArityN(IRubyObject self, String name, IRubyObject[] args, int arity) protected final TfindCallableArityOne(IRubyObject self, String name, IRubyObject arg0) protected final TfindCallableArityThree(IRubyObject self, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2) protected final TfindCallableArityTwo(IRubyObject self, String name, IRubyObject arg0, IRubyObject arg1) protected final TfindCallableArityZero(IRubyObject self, String name) private static StringformatReceiver(IRubyObject object) private static Class<?>getClass(IRubyObject object) (package private) final intgetMemberArity(Member member) protected abstract Class[]getMemberParameterTypes(Member member) final TgetSignature(int signatureCode) Internal API(package private) voidprivate booleanprotected abstract booleanisMemberVarArgs(Member member) Deprecated.private TmatchVarArgsCallableArityFour(IRubyObject self, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3) private TmatchVarArgsCallableArityN(IRubyObject self, IRubyObject[] args) private TmatchVarArgsCallableArityOne(IRubyObject self, IRubyObject arg0) private TmatchVarArgsCallableArityThree(IRubyObject self, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2) private TmatchVarArgsCallableArityTwo(IRubyObject self, IRubyObject arg0, IRubyObject arg1) private T(package private) RaiseExceptionnewErrorDueArgumentTypeMismatch(IRubyObject receiver, T[] methods, IRubyObject... args) private RaiseExceptionnewErrorDueNoMatchingCallable(IRubyObject receiver, String name) final voidputSignature(int signatureCode, T callable) Internal APIprivate static void(package private) static <T extends AccessibleObject & Member>
TsetAccessible(T accessible) (package private) static <T extends AccessibleObject & Member>
T[]setAccessible(T[] accessibles) private booleansetNativeCallIfPublic(Method method) private voidsetSignature(int minArity, int maxArity, int minVarArgsArity) (package private) final voidprivate T(package private) static ObjectunwrapIfJavaProxy(IRubyObject object) Methods inherited from class org.jruby.internal.runtime.methods.JavaMethod
callTrace, callTraceCompiled, checkArgumentCount, dup, getArity, getCallerRequirement, getJavaName, getNativeCall, getParameterList, getSignature, getStaticScope, isNative, isSingleton, postBacktraceAndScope, postBacktraceDummyScope, postBacktraceOnly, postFrameAndScope, postFrameOnly, postNoFrameDummyScope, postNoop, postScopeOnly, preBacktraceAndScope, preBacktraceDummyScope, preBacktraceOnly, preFrameAndDummyScope, preFrameAndDummyScope, preFrameAndScope, preFrameAndScope, preFrameOnly, preFrameOnly, preNoFrameDummyScope, preNoop, preScopeOnly, raiseArgumentError, returnTrace, returnTraceCompiled, setArity, setCallerRequirement, setJavaName, setNativeCall, setNativeCall, setParameterDesc, setParameterList, setSignature, setSingletonMethods inherited from class org.jruby.internal.runtime.methods.DynamicMethod
calculateProtectedClass, call, call, call, call, call, call, call, call, call, call, callRespondTo, getCallConfig, getDefinedClass, getHandle, getImplementationClass, getInstanceVariableNames, getMethodData, getName, getProtectedClass, getRealMethod, getSerialNumber, getVisibility, init, init, isBuiltin, isCallableFrom, isImplementedBy, isNotImplemented, isNull, isRefined, isUndefined, setCallConfig, setDefinedClass, setHandle, setImplementationClass, setIsBuiltin, setNotImplemented, setVisibility
-
Field Details
-
NULL_CACHE
-
javaCallable
-
javaCallables
-
javaVarargsCallables
-
cache
NonBlockingHashMapLong<T extends JavaCallable> cache -
initialized
volatile boolean initialized -
runtime
-
members
-
-
Constructor Details
-
RubyToJavaInvoker
RubyToJavaInvoker(RubyModule host, Supplier<Member[]> members, String name)
-
-
Method Details
-
initialize
void initialize() -
setSignature
private void setSignature(int minArity, int maxArity, int minVarArgsArity) -
setupNativeCall
final void setupNativeCall() -
setNativeCallIfPublic
-
getSignature
Internal API- Parameters:
signatureCode-- Returns:
- callable
-
putSignature
Internal API- Parameters:
signatureCode-callable-
-
createCallable
-
createCallableArray
-
createCallableArray
-
createCallableArrayArray
-
getMemberParameterTypes
-
isMemberVarArgs
Deprecated. -
getMemberArity
-
convertArguments
-
convertArguments
-
convertArguments
-
convertVarArgumentsOnly
private static <T> Object convertVarArgumentsOnly(Class<T> varArrayType, int varStart, IRubyObject[] args) -
convertVarArgumentsOnly
-
castJavaProxy
-
unwrapIfJavaProxy
-
setAccessible
-
setAccessible
-
rethrowIfNotInaccessibleObject
-
findCallable
Find the matching callable object given the target proxy wrapper, method name, arguments, and actual arity.- Parameters:
self- the proxy wrappername- the method nameargs- the argumentsarity- the actual arity- Returns:
- a suitable callable, or else raises an argument or name error
-
findCallableArityZero
-
findCallableArityOne
-
findCallableArityTwo
protected final T findCallableArityTwo(IRubyObject self, String name, IRubyObject arg0, IRubyObject arg1) -
findCallableArityThree
protected final T findCallableArityThree(IRubyObject self, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2) -
findCallableArityFour
protected final T findCallableArityFour(IRubyObject self, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3) -
findCallableArityN
-
matchVarArgsCallableArityZero
-
matchVarArgsCallableArityOne
-
matchVarArgsCallableArityTwo
-
matchVarArgsCallableArityThree
private T matchVarArgsCallableArityThree(IRubyObject self, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2) -
matchVarArgsCallableArityFour
private T matchVarArgsCallableArityFour(IRubyObject self, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, IRubyObject arg3) -
matchVarArgsCallableArityN
-
checkCallableArity
-
someCallable
-
isConstructor
private boolean isConstructor() -
newErrorDueArgumentTypeMismatch
RaiseException newErrorDueArgumentTypeMismatch(IRubyObject receiver, T[] methods, IRubyObject... args) -
newErrorDueNoMatchingCallable
-
getClass
-
formatReceiver
-