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 ConstructorInvoker extends RubyToJavaInvoker {
     public ConstructorInvoker(RubyModule hostList<Constructorctors) {
         super(hostctors.toArray(new Constructor[ctors.size()]));
 
     }
 
     protected JavaCallable createCallable(Ruby rubyMember member) {
         return JavaConstructor.create(ruby, (Constructor)member);
     }
 
     protected JavaCallable[] createCallableArray(JavaCallable callable) {
         return new JavaConstructor[] {(JavaConstructor)callable};
     }
 
     protected JavaCallable[] createCallableArray(int size) {
         return new JavaConstructor[size];
     }
 
     protected JavaCallable[][] createCallableArrayArray(int size) {
         return new JavaConstructor[size][];
     }
 
     protected Class[] getMemberParameterTypes(Member member) {
         return ((Constructor)member).getParameterTypes();
     }
 
     protected boolean isMemberVarArgs(Member member) {
         return ((Constructor)member).isVarArgs();
     }
     
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject[] args) {
         JavaProxy proxy = castJavaProxy(self);
 
         int len = args.length;
         Object[] convertedArgs = new Object[len];
         JavaConstructor constructor = (JavaConstructor)findCallable(selfnameargslen);
         if (constructor.isVarArgs()) {
             len = constructor.getParameterTypes().length - 1;
             convertedArgs = new Object[len + 1];
             for (int i = 0; i < len && i < args.lengthi++) {
                 convertedArgs[i] = convertArg(args[i], constructori);
             }
             convertedArgs[len] = convertVarargs(argsconstructor);
         } else {
             convertedArgs = new Object[len];
             for (int i = 0; i < len && i < args.lengthi++) {
                 convertedArgs[i] = convertArg(args[i], constructori);
             }
         }
         
         proxy.setObject(constructor.newInstanceDirect(convertedArgs));
         
         return self;
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString name) {
         if ( != nullreturn call(contextselfclazzname.);
         JavaProxy proxy = castJavaProxy(self);
         JavaConstructor constructor = (JavaConstructor)findCallableArityZero(selfname);
 
         proxy.setObject(constructor.newInstanceDirect());
         
         return self;
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0) {
         if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0});
         JavaProxy proxy = castJavaProxy(self);
         JavaConstructor constructor = (JavaConstructor)findCallableArityOne(selfnamearg0);
         Object cArg0 = convertArg(arg0constructor, 0);
 
         proxy.setObject(constructor.newInstanceDirect(cArg0));
         
         return self;
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1) {
         if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0arg1});
         JavaProxy proxy = castJavaProxy(self);
        JavaConstructor constructor = (JavaConstructor)findCallableArityTwo(selfnamearg0arg1);
        Object cArg0 = convertArg(arg0constructor, 0);
        Object cArg1 = convertArg(arg1constructor, 1);
        proxy.setObject(constructor.newInstanceDirect(cArg0cArg1));
        return self;
    }
    @Override
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1IRubyObject arg2) {
        if ( != nullreturn call(contextselfclazznamenew IRubyObject[] {arg0arg1arg2});
        JavaProxy proxy = castJavaProxy(self);
        JavaConstructor constructor = (JavaConstructor)findCallableArityThree(selfnamearg0arg1arg2);
        Object cArg0 = convertArg(arg0constructor, 0);
        Object cArg1 = convertArg(arg1constructor, 1);
        Object cArg2 = convertArg(arg2constructor, 2);
        proxy.setObject(constructor.newInstanceDirect(cArg0cArg1cArg2));
        return self;
    }
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject[] argsBlock block) {
        if (block.isGiven()) {
            Ruby runtime = context.runtime;
            JavaProxy proxy = castJavaProxy(self);
            
            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(runtimeblockblock.type);
            JavaConstructor constructor = (JavaConstructor)findCallable(selfnameintermediatelen + 1);
            for (int i = 0; i < len + 1; i++) {
                convertedArgs[i] = convertArg(intermediate[i], constructori);
            }
            proxy.setObject(constructor.newInstanceDirect(convertedArgs));
            return self;
        } else {
            return call(contextselfclazznameargs);
        }
    }
    @Override
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameBlock block) {
        if (block.isGiven()) {
            JavaProxy proxy = castJavaProxy(self);
            RubyProc proc = RubyProc.newProc(context.runtimeblockblock.type);
            JavaConstructor constructor = (JavaConstructor)findCallableArityOne(selfnameproc);
            Object cArg0 = convertArg(procconstructor, 0);
            proxy.setObject(constructor.newInstanceDirect(cArg0));
            return self;
        } else {
            return call(contextselfclazzname);
        }
    }
    @Override
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0Block block) {
        if (block.isGiven()) {
            JavaProxy proxy = castJavaProxy(self);
            RubyProc proc = RubyProc.newProc(context.runtimeblockblock.type);
            JavaConstructor constructor = (JavaConstructor)findCallableArityTwo(selfnamearg0proc);
            Object cArg0 = convertArg(arg0constructor, 0);
            Object cArg1 = convertArg(procconstructor, 1);
            proxy.setObject(constructor.newInstanceDirect(cArg0cArg1));
            return self;
        } else {
            return call(contextselfclazznamearg0);
        }
    }
    @Override
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1Block block) {
        if (block.isGiven()) {
            JavaProxy proxy = castJavaProxy(self);
            RubyProc proc = RubyProc.newProc(context.runtimeblockblock.type);
            JavaConstructor constructor = (JavaConstructor)findCallableArityThree(selfnamearg0arg1proc);
            Object cArg0 = convertArg(arg0constructor, 0);
            Object cArg1 = convertArg(arg1constructor, 1);
            Object cArg2 = convertArg(procconstructor, 2);
            proxy.setObject(constructor.newInstanceDirect(cArg0cArg1cArg2));
            return self;
        } else {
            return call(contextselfclazznamearg0arg1);
        }
    }
    @Override
    public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzString nameIRubyObject arg0IRubyObject arg1IRubyObject arg2Block block) {
        if (block.isGiven()) {
            JavaProxy proxy = castJavaProxy(self);
            RubyProc proc = RubyProc.newProc(context.runtimeblockblock.type);
            JavaConstructor constructor = (JavaConstructor)findCallableArityFour(selfnamearg0arg1arg2proc);
            Object cArg0 = convertArg(arg0constructor, 0);
            Object cArg1 = convertArg(arg1constructor, 1);
            Object cArg2 = convertArg(arg2constructor, 2);
            Object cArg3 = convertArg(procconstructor, 3);
            proxy.setObject(constructor.newInstanceDirect(cArg0cArg1cArg2cArg3));
            return self;
        } else {
            return call(contextselfclazznamearg0arg1arg2);
        }
    }
New to GrepCode? Check out our FAQ X