Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.java.invokers;
  
  import java.util.List;
  
  import org.jruby.RubyProc;
 
 public final class StaticMethodInvoker extends MethodInvoker {
 
     public StaticMethodInvoker(RubyClass hostList<Methodmethods) {
         super(hostmethods);
     }
 
     public StaticMethodInvoker(RubyClass hostMethod method) {
         super(hostmethod);
     }
 
     public StaticMethodInvoker(RubyModule hostMethod method) {
         super(hostmethod);
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject[] args) {
         JavaMethod method = (JavaMethodfindCallable(selfnameargsargs.length);
         return method.invokeStaticDirectconvertArguments(methodargs) );
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString name) {
         if ( != nullreturn call(contextselfclazzname.);
         JavaMethod method = (JavaMethodfindCallableArityZero(selfname);
 
         return method.invokeStaticDirect();
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0) {
         if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0});
         JavaMethod method = (JavaMethodfindCallableArityOne(selfnamearg0);
         if (method.isVarArgs()) return call(contextselfclazznamenew IRubyObject[] {arg0});
         final Class<?>[] paramTypes = method.getParameterTypes();
         Object cArg0 = arg0.toJava(paramTypes[0]);
 
         return method.invokeStaticDirect(cArg0);
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1) {
         if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0arg1});
         JavaMethod method = (JavaMethodfindCallableArityTwo(selfnamearg0arg1);
         final Class<?>[] paramTypes = method.getParameterTypes();
         Object cArg0 = arg0.toJava(paramTypes[0]);
         Object cArg1 = arg1.toJava(paramTypes[1]);
 
         return method.invokeStaticDirect(cArg0cArg1);
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1IRubyObject arg2) {
         if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0arg1arg2});
         JavaMethod method = (JavaMethodfindCallableArityThree(selfnamearg0arg1arg2);
         final Class<?>[] paramTypes = method.getParameterTypes();
         Object cArg0 = arg0.toJava(paramTypes[0]);
         Object cArg1 = arg1.toJava(paramTypes[1]);
         Object cArg2 = arg2.toJava(paramTypes[2]);
 
         return method.invokeStaticDirect(cArg0cArg1cArg2);
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject[] argsBlock 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.runtimeblockblock.type);
 
             JavaMethod method = (JavaMethodfindCallable(selfnameintermediatelen + 1);
             final Class<?>[] paramTypes = method.getParameterTypes();
             for (int i = 0; i < len + 1; i++) {
                 convertedArgs[i] = intermediate[i].toJava(paramTypes[i]);
             }
 
             return method.invokeStaticDirect(convertedArgs);
         }
         return call(contextselfclazznameargs);
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameBlock block) {
         if (block.isGiven()) {
            RubyProc proc = RubyProc.newProc(context.runtimeblockblock.type);
            JavaMethod method = (JavaMethodfindCallableArityOne(selfnameproc);
            final Class<?>[] paramTypes = method.getParameterTypes();
            Object cArg0 = proc.toJava(paramTypes[0]);
            return method.invokeStaticDirect(cArg0);
        }
        return call(contextselfclazzname);
    }
    @Override
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0Block block) {
        if (block.isGiven()) {
            RubyProc proc = RubyProc.newProc(context.runtimeblockblock.type);
            JavaMethod method = (JavaMethodfindCallableArityTwo(selfnamearg0proc);
            final Class<?>[] paramTypes = method.getParameterTypes();
            Object cArg0 = arg0.toJava(paramTypes[0]);
            Object cArg1 = proc.toJava(paramTypes[1]);
            return method.invokeStaticDirect(cArg0cArg1);
        }
        return call(contextselfclazznamearg0);
    }
    @Override
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1Block block) {
        if (block.isGiven()) {
            RubyProc proc = RubyProc.newProc(context.runtimeblockblock.type);
            JavaMethod method = (JavaMethodfindCallableArityThree(selfnamearg0arg1proc);
            final Class<?>[] paramTypes = method.getParameterTypes();
            Object cArg0 = arg0.toJava(paramTypes[0]);
            Object cArg1 = arg1.toJava(paramTypes[1]);
            Object cArg2 = proc.toJava(paramTypes[2]);
            return method.invokeStaticDirect(cArg0cArg1cArg2);
        }
        return call(contextselfclazznamearg0arg1);
    }
    @Override
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1IRubyObject arg2Block block) {
        if (block.isGiven()) {
            RubyProc proc = RubyProc.newProc(context.runtimeblockblock.type);
            JavaMethod method = (JavaMethodfindCallableArityFour(selfnamearg0arg1arg2proc);
            final Class<?>[] paramTypes = method.getParameterTypes();
            Object cArg0 = arg0.toJava(paramTypes[0]);
            Object cArg1 = arg1.toJava(paramTypes[1]);
            Object cArg2 = arg2.toJava(paramTypes[2]);
            Object cArg3 = proc.toJava(paramTypes[3]);
            return method.invokeStaticDirect(cArg0cArg1cArg2cArg3);
        }
        return call(contextselfclazznamearg0arg1arg2);
    }
New to GrepCode? Check out our FAQ X