Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.java.addons;
  
  import org.jruby.Ruby;
 
 public class KernelJavaAddons {
     @JRubyMethod(name = "raise", optional = 3, module = true, visibility = ., omit = true)
     public static IRubyObject rbRaise(ThreadContext contextIRubyObject recvIRubyObject[] argsBlock block) {
         Ruby runtime = context.runtime;
 
         // Check for a Java exception
         ConcreteJavaProxy exception = null;
         if (args.length == 0 && runtime.getGlobalVariables().get("$!"instanceof ConcreteJavaProxy) {
             exception = (ConcreteJavaProxy)runtime.getGlobalVariables().get("$!");
         } else if (args.length == 1 && args[0] instanceof ConcreteJavaProxy) {
             exception = (ConcreteJavaProxy)args[0];
         }
 
         if (exception != null) {
             // looks like someone's trying to raise a Java exception. Let them.
             Object maybeThrowable = exception.getObject();
             
             if (maybeThrowable instanceof Throwable) {
                 // yes, we're cheating here.
                 Helpers.throwException((Throwable)maybeThrowable);
                 return recv// not reached
             } else {
                 throw runtime.newTypeError("can't raise a non-Throwable Java object");
             }
         } else {
             return RubyKernel.raise(contextrecvargsblock);
         }
     }
 
     @JRubyMethod
     public static IRubyObject to_java(ThreadContext contextIRubyObject fromObject) {
         if (fromObject instanceof RubyArray) {
             return context.runtime.getJavaSupport().getObjectJavaClass().javaArrayFromRubyArray(contextfromObject);
         } else {
             return Java.getInstance(context.runtimefromObject.toJava(Object.class));
         }
     }
     
     @JRubyMethod
     public static IRubyObject to_java(ThreadContext contextIRubyObject fromObjectIRubyObject type) {
         if (type.isNil()) {
             return to_java(contextfromObject);
         }
 
         Ruby runtime = context.runtime;
         JavaClass targetType = getTargetType(contextruntimetype);
 
         if (fromObject instanceof RubyArray) {
             return targetType.javaArrayFromRubyArray(contextfromObject);
         } else {
             return Java.getInstance(runtimefromObject.toJava(targetType.javaClass()));
         }
     }
 
     @JRubyMethod(rest = true)
     public static IRubyObject java_signature(IRubyObject recvIRubyObject[] args) {
         // empty stub for now
         return recv.getRuntime().getNil();
     }
 
     @JRubyMethod(rest = true)
     public static IRubyObject java_name(IRubyObject recvIRubyObject[] args) {
         // empty stub for now
         return recv.getRuntime().getNil();
     }
 
     @JRubyMethod(rest = true)
     public static IRubyObject java_implements(IRubyObject recvIRubyObject[] args) {
         // empty stub for now
         return recv.getRuntime().getNil();
     }
 
     @JRubyMethod(rest = true)
     public static IRubyObject java_annotation(IRubyObject recvIRubyObject[] args) {
         // empty stub for now
         return recv.getRuntime().getNil();
     }
 
     @JRubyMethod(rest = true)
     public static IRubyObject java_require(IRubyObject recvIRubyObject[] args) {
         // empty stub for now
        return recv.getRuntime().getNil();
    }
    @JRubyMethod(rest = true)
    public static IRubyObject java_package(IRubyObject recvIRubyObject[] args) {
        // empty stub for now
        return recv.getRuntime().getNil();
    }
    private static JavaClass getTargetType(ThreadContext contextRuby runtimeIRubyObject type) {
        JavaClass targetType;
        if (type instanceof RubyString || type instanceof RubySymbol) {
            targetType = runtime.getJavaSupport().getNameClassMap().get(type.asJavaString());
            if (targetType == nulltargetType = JavaClass.forNameVerbose(runtimetype.asJavaString());
        } else if (type instanceof RubyModule && type.respondsTo("java_class")) {
            targetType = (JavaClass) Helpers.invoke(contexttype"java_class");
        } else if (type instanceof JavaProxy) {
            if  (((JavaProxy)type).getObject() instanceof Class) {
                targetType = JavaClass.get(runtime, (Class)((JavaProxy)type).getObject());
            } else {
                throw runtime.newTypeError("not a valid target type: " + type);
            }
        } else {
            throw runtime.newTypeError("unable to convert to type: " + type);
        }
        return targetType;
    }
New to GrepCode? Check out our FAQ X