Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.java.invokers;
  
  import java.util.List;
  
  import org.jruby.Ruby;
  import org.jruby.RubyProc;
 
 public class SingletonMethodInvoker extends MethodInvoker {
     private Object singleton;
 
     public SingletonMethodInvoker(Object singletonRubyClass hostList<Methodmethods) {
         super(hostmethods);
 	this. = singleton;
     }
 
     public SingletonMethodInvoker(Object singletonRubyClass hostMethod method) {
         super(hostmethod);
 	this. = singleton;
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject[] args) {
         int len = args.length;
         Object[] convertedArgs = new Object[len];
         JavaMethod method = (JavaMethod)findCallable(selfnameargslen);
         if (method.isVarArgs()) {
             len = method.getParameterTypes().length - 1;
             convertedArgs = new Object[len + 1];
             for (int i = 0; i < len && i < args.lengthi++) {
                 convertedArgs[i] = convertArg(args[i], methodi);
             }
             convertedArgs[len] = convertVarargs(argsmethod);
         } else {
             convertedArgs = new Object[len];
             for (int i = 0; i < len && i < args.lengthi++) {
                 convertedArgs[i] = convertArg(args[i], methodi);
             }
         }
         return method.invokeDirect(convertedArgs);
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString name) {
         if ( != nullreturn call(contextselfclazzname.);
         JavaMethod method = (JavaMethod)findCallableArityZero(selfname);
 
         return method.invokeDirect();
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0) {
         if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0});
         JavaMethod method = (JavaMethod)findCallableArityOne(selfnamearg0);
         if (method.isVarArgs()) return call(contextselfclazznamenew IRubyObject[] {arg0});
         Object cArg0 = convertArg(arg0method, 0);
 
         return method.invokeDirect(cArg0);
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1) {
         if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0arg1});
         JavaMethod method = (JavaMethod)findCallableArityTwo(selfnamearg0arg1);
         Object cArg0 = convertArg(arg0method, 0);
         Object cArg1 = convertArg(arg1method, 1);
 
         return method.invokeDirect(cArg0cArg1);
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1IRubyObject arg2) {
         if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0arg1arg2});
         JavaMethod method = (JavaMethod)findCallableArityThree(selfnamearg0arg1arg2);
         Object cArg0 = convertArg(arg0method, 0);
         Object cArg1 = convertArg(arg1method, 1);
         Object cArg2 = convertArg(arg2method, 2);
 
         return method.invokeDirect(cArg0cArg1cArg2);
     }
 
     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 = (JavaMethod)findCallable(selfnameintermediatelen + 1);
             for (int i = 0; i < len + 1; i++) {
                 convertedArgs[i] = convertArg(intermediate[i], methodi);
             }
            return method.invokeDirect(convertedArgs);
        } else {
            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 = (JavaMethod)findCallableArityOne(selfnameproc);
            Object cArg0 = convertArg(procmethod, 0);
            return method.invokeDirect(cArg0);
        } else {
            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 = (JavaMethod)findCallableArityTwo(selfnamearg0proc);
            Object cArg0 = convertArg(arg0method, 0);
            Object cArg1 = convertArg(procmethod, 1);
            return method.invokeDirect(cArg0cArg1);
        } else {
            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 = (JavaMethod)findCallableArityThree(selfnamearg0arg1proc);
            Object cArg0 = convertArg(arg0method, 0);
            Object cArg1 = convertArg(arg1method, 1);
            Object cArg2 = convertArg(procmethod, 2);
            return method.invokeDirect(cArg0cArg1cArg2);
        } else {
            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 = (JavaMethod)findCallableArityFour(selfnamearg0arg1arg2proc);
            Object cArg0 = convertArg(arg0method, 0);
            Object cArg1 = convertArg(arg1method, 1);
            Object cArg2 = convertArg(arg2method, 2);
            Object cArg3 = convertArg(procmethod, 3);
            return method.invokeDirect(cArg0cArg1cArg2cArg3);
        } else {
            return call(contextselfclazznamearg0arg1arg2);
        }
    }
New to GrepCode? Check out our FAQ X