Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.jruby.javasupport;
 
 import org.jruby.Ruby;
public class JavaProxyMethods {
    public static RubyModule createJavaProxyMethods(ThreadContext context) {
        Ruby runtime = context.runtime;
        RubyModule javaProxyMethods = runtime.defineModule("JavaProxyMethods");
        
        javaProxyMethods.defineAnnotatedMethods(JavaProxyMethods.class);
        
        return javaProxyMethods;
    }
    
    @JRubyMethod
    public static IRubyObject java_class(ThreadContext contextIRubyObject recv) {
        return recv.getMetaClass().getRealClass().getInstanceVariable("@java_class");
    }
    @JRubyMethod
    public static IRubyObject java_object(ThreadContext contextIRubyObject recv) {
        return (IRubyObject)recv.dataGetStruct();
    }
    @JRubyMethod(name = "java_object=")
    public static IRubyObject java_object_set(ThreadContext contextIRubyObject recvIRubyObject obj) {
        // XXX: Check if it's appropriate type?
        recv.dataWrapStruct(obj);
        return obj;
    }
    @JRubyMethod(name = {"=="})
    public static IRubyObject op_equal(IRubyObject recvIRubyObject rhs) {
        if (recv instanceof JavaProxy) {
            return JavaObject.op_equal((JavaProxy)recvrhs);
        }
        return ((JavaObject)recv.dataGetStruct()).op_equal(rhs);
    }
    
    @JRubyMethod
    public static IRubyObject to_s(IRubyObject recv) {
        if (recv instanceof JavaProxy) {
            return JavaObject.to_s(recv.getRuntime(), ((JavaProxy)recv).getObject());
        } else if (recv.dataGetStruct() != null) {
            return ((JavaObject)recv.dataGetStruct()).to_s();
        } else {
            return ((RubyObject)recv).to_s();
        }
    }
    @JRubyMethod
    public static IRubyObject inspect(IRubyObject recv) {
        if (recv instanceof RubyBasicObject) {
            return ((RubyBasicObject)recv).hashyInspect();
        } else {
            return recv.inspect();
        }
    }
    
    @JRubyMethod(name = "eql?")
    public static IRubyObject op_eql(IRubyObject recvIRubyObject rhs) {
        return op_equal(recvrhs);
    }
    
    @JRubyMethod
    public static IRubyObject hash(IRubyObject recv) {
        if (recv instanceof JavaProxy) {
            return RubyFixnum.newFixnum(recv.getRuntime(), ((JavaProxy)recv).getObject().hashCode());
        }
        return ((JavaObject)recv.dataGetStruct()).hash();
    }
    @JRubyMethod
    public static IRubyObject to_java_object(IRubyObject recv) {
        return (JavaObject)recv.dataGetStruct();
    }
    
    @JRubyMethod(name = "synchronized")
    public static IRubyObject rbSynchronized(ThreadContext contextIRubyObject recvBlock block) {
        if (recv instanceof JavaProxy) {
            return JavaObject.ruby_synchronized(context, ((JavaProxy)recv).getObject(), block);
        }
        return ((JavaObject)recv.dataGetStruct()).ruby_synchronized(contextblock);
    }
New to GrepCode? Check out our FAQ X