private MethodInvoker getMethodInvoker(Method method) { if (Modifier.isStatic(method.getModifiers())) { return new StaticMethodInvoker(metaClass.getMetaClass(), method, method.getName()); } else { return new InstanceMethodInvoker(metaClass, method, method.getName()); } }
private MethodInvoker getMethodInvoker(Method method) { if (Modifier.isStatic(method.getModifiers())) { return new StaticMethodInvoker(metaClass.getMetaClass(), method, method.getName()); } else { return new InstanceMethodInvoker(metaClass, method, method.getName()); } }
private MethodInvoker getMethodInvoker(Method method) { if (Modifier.isStatic(method.getModifiers())) { return new StaticMethodInvoker(metaClass.getMetaClass(), method); } else { return new InstanceMethodInvoker(metaClass, method); } }
private MethodInvoker getMethodInvoker(Method method) { if (Modifier.isStatic(method.getModifiers())) { return new StaticMethodInvoker(metaClass.getMetaClass(), method); } else { return new InstanceMethodInvoker(metaClass, method); } }
private static MethodInvoker getMethodInvokerForMethod(RubyClass metaClass, Method method) { if (Modifier.isStatic(method.getModifiers())) { return new StaticMethodInvoker(metaClass.getMetaClass(), method); } else { return new InstanceMethodInvoker(metaClass, method); } }
private static MethodInvoker getMethodInvokerForMethod(RubyClass metaClass, Method method) { if (Modifier.isStatic(method.getModifiers())) { return new StaticMethodInvoker(metaClass.getMetaClass(), method); } else { return new InstanceMethodInvoker(metaClass, method); } }
@Override void install(final RubyModule proxy) { if ( hasLocalMethod() ) { defineMethods(proxy, new InstanceMethodInvoker(proxy, methods, name)); } } }
@Override void install(final RubyModule proxy) { if ( hasLocalMethod() ) { defineMethods(proxy, new InstanceMethodInvoker(proxy, methods, name)); } } }
void install(RubyModule proxy) { if (hasLocalMethod()) { DynamicMethod method = new InstanceMethodInvoker(proxy, methods); proxy.addMethod(name, method); if (aliases != null && isPublic()) { proxy.defineAliases(aliases, this.name); aliases = null; } } } }
void install(RubyModule proxy) { if (hasLocalMethod()) { DynamicMethod method = new InstanceMethodInvoker(proxy, methods); proxy.addMethod(name, method); if (aliases != null && isPublic()) { proxy.defineAliases(aliases, this.name); aliases = null; } } } }
private static AbstractRubyMethod getRubyMethod(ThreadContext context, IRubyObject clazz, String name, Class... argTypesClasses) { final Ruby runtime = context.runtime; if ( ! ( clazz instanceof RubyModule ) ) { throw runtime.newTypeError(clazz, runtime.getModule()); } final RubyModule proxyClass = (RubyModule) clazz; final Method method = getMethodFromClass(context, clazz, name, argTypesClasses); final String prettyName = name + CodegenUtils.prettyParams(argTypesClasses); if ( Modifier.isStatic( method.getModifiers() ) ) { MethodInvoker invoker = new StaticMethodInvoker(proxyClass, method, name); return RubyMethod.newMethod(proxyClass, prettyName, proxyClass, name, invoker, clazz); } MethodInvoker invoker = new InstanceMethodInvoker(proxyClass, method, name); return RubyUnboundMethod.newUnboundMethod(proxyClass, prettyName, proxyClass, name, invoker); }
private static AbstractRubyMethod getRubyMethod(ThreadContext context, IRubyObject clazz, String name, Class... argTypesClasses) { final Ruby runtime = context.runtime; if ( ! ( clazz instanceof RubyModule ) ) { throw runtime.newTypeError(clazz, runtime.getModule()); } final RubyModule proxyClass = (RubyModule) clazz; final Method method = getMethodFromClass(context, clazz, name, argTypesClasses); final String prettyName = name + CodegenUtils.prettyParams(argTypesClasses); if ( Modifier.isStatic( method.getModifiers() ) ) { MethodInvoker invoker = new StaticMethodInvoker(proxyClass, method, name); return RubyMethod.newMethod(proxyClass, prettyName, proxyClass, name, invoker, clazz); } MethodInvoker invoker = new InstanceMethodInvoker(proxyClass, method, name); return RubyUnboundMethod.newUnboundMethod(proxyClass, prettyName, proxyClass, name, invoker); }
private static IRubyObject getRubyMethod(ThreadContext context, IRubyObject proxyClass, String name, Class... argTypesClasses) { Ruby runtime = context.runtime; RubyClass rubyClass; if (proxyClass instanceof RubyClass) { rubyClass = (RubyClass)proxyClass; } else { throw runtime.newTypeError(proxyClass, runtime.getModule()); } Method jmethod = getMethodFromClass(runtime, proxyClass, name, argTypesClasses); String prettyName = name + CodegenUtils.prettyParams(argTypesClasses); if (Modifier.isStatic(jmethod.getModifiers())) { MethodInvoker invoker = new StaticMethodInvoker(rubyClass, jmethod); return RubyMethod.newMethod(rubyClass, prettyName, rubyClass, name, invoker, proxyClass); } else { MethodInvoker invoker = new InstanceMethodInvoker(rubyClass, jmethod); return RubyUnboundMethod.newUnboundMethod(rubyClass, prettyName, rubyClass, name, invoker); } }
private static IRubyObject getRubyMethod(ThreadContext context, IRubyObject proxyClass, String name, Class... argTypesClasses) { Ruby runtime = context.runtime; RubyClass rubyClass; if (proxyClass instanceof RubyClass) { rubyClass = (RubyClass)proxyClass; } else { throw runtime.newTypeError(proxyClass, runtime.getModule()); } Method jmethod = getMethodFromClass(runtime, proxyClass, name, argTypesClasses); String prettyName = name + CodegenUtils.prettyParams(argTypesClasses); if (Modifier.isStatic(jmethod.getModifiers())) { MethodInvoker invoker = new StaticMethodInvoker(rubyClass, jmethod); return RubyMethod.newMethod(rubyClass, prettyName, rubyClass, name, invoker, proxyClass); } else { MethodInvoker invoker = new InstanceMethodInvoker(rubyClass, jmethod); return RubyUnboundMethod.newUnboundMethod(rubyClass, prettyName, rubyClass, name, invoker); } }
@JRubyMethod(meta = true, visibility = Visibility.PRIVATE) public static IRubyObject java_alias(ThreadContext context, IRubyObject clazz, IRubyObject newName, IRubyObject rubyName, IRubyObject argTypes) { final Ruby runtime = context.runtime; if ( ! ( clazz instanceof RubyClass ) ) { throw runtime.newTypeError(clazz, runtime.getModule()); } final RubyClass proxyClass = (RubyClass) clazz; String name = rubyName.asJavaString(); String newNameStr = newName.asJavaString(); RubyArray argTypesAry = argTypes.convertToArray(); Class<?>[] argTypesClasses = (Class[]) argTypesAry.toArray(new Class[argTypesAry.size()]); final Method method = getMethodFromClass(context, clazz, name, argTypesClasses); final MethodInvoker invoker; if ( Modifier.isStatic( method.getModifiers() ) ) { invoker = new StaticMethodInvoker(proxyClass.getMetaClass(), method, newNameStr); // add alias to meta proxyClass.getSingletonClass().addMethod(newNameStr, invoker); } else { invoker = new InstanceMethodInvoker(proxyClass, method, newNameStr); proxyClass.addMethod(newNameStr, invoker); } return context.nil; }
@JRubyMethod(meta = true, visibility = Visibility.PRIVATE) public static IRubyObject java_alias(ThreadContext context, IRubyObject clazz, IRubyObject newName, IRubyObject rubyName, IRubyObject argTypes) { final Ruby runtime = context.runtime; if ( ! ( clazz instanceof RubyClass ) ) { throw runtime.newTypeError(clazz, runtime.getModule()); } final RubyClass proxyClass = (RubyClass) clazz; String name = rubyName.asJavaString(); String newNameStr = newName.asJavaString(); RubyArray argTypesAry = argTypes.convertToArray(); Class<?>[] argTypesClasses = (Class[]) argTypesAry.toArray(new Class[argTypesAry.size()]); final Method method = getMethodFromClass(context, clazz, name, argTypesClasses); final MethodInvoker invoker; if ( Modifier.isStatic( method.getModifiers() ) ) { invoker = new StaticMethodInvoker(proxyClass.getMetaClass(), method, newNameStr); // add alias to meta proxyClass.getSingletonClass().addMethod(newNameStr, invoker); } else { invoker = new InstanceMethodInvoker(proxyClass, method, newNameStr); proxyClass.addMethod(newNameStr, invoker); } return context.nil; }