/** * Test if a passed instance is a wrapper Java object. * @param object * @return true if the object is wrapping a Java object */ public static boolean isJavaObject(final IRubyObject object) { return object instanceof JavaProxy || object.dataGetStruct() instanceof JavaObject; }
private Object convertValueToJava(IRubyObject value) { Object val = value.dataGetStruct(); if ( val instanceof JavaObject ) value = (IRubyObject) val; return value.toJava( field.getType() ); }
public static Object unwrapJavaValue(Ruby runtime, IRubyObject obj, String errorMessage) { if (obj instanceof JavaProxy) { return ((JavaProxy)obj).getObject(); } else if (obj instanceof JavaObject) { return ((JavaObject)obj).getValue(); } else if(obj.dataGetStruct() != null && (obj.dataGetStruct() instanceof IRubyObject)) { return unwrapJavaValue(runtime, ((IRubyObject)obj.dataGetStruct()), errorMessage); } else { throw runtime.newTypeError(errorMessage); } }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name) { final Object wrapped = self.dataGetStruct(); final Class<?> javaClass; if ( wrapped != null ) { javaClass = ((JavaObject) wrapped).getJavaClass(); } else { javaClass = self.getClass(); // NOTE what is this for? } return JavaClass.get(context.runtime, javaClass); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name) { final Object wrapped = self.dataGetStruct(); final Class<?> javaClass; if ( wrapped != null ) { javaClass = ((JavaObject) wrapped).getJavaClass(); } else { javaClass = self.getClass(); // NOTE what is this for? } return JavaClass.get(context.runtime, javaClass); }
@Override public IRubyObject call(ThreadContext context, IRubyObject self, RubyModule clazz, String name) { Object dgs = self.dataGetStruct(); if (dgs != null) { return ((JavaObject)dgs).java_class(); } else { return JavaClass.get(context.runtime, self.getClass()); } } });
@JRubyMethod(name = { "copy_data", "copy_data_simple" }) public static IRubyObject copy_data(final ThreadContext context, IRubyObject fromRuby, IRubyObject toJava) { JavaArray javaArray = (JavaArray) toJava.dataGetStruct(); RubyArray rubyArray = (RubyArray) fromRuby; copyDataToJavaArray(rubyArray, javaArray, 0); return toJava; }
@JRubyMethod(name = {"=="}) public static IRubyObject op_equal(IRubyObject recv, IRubyObject rhs) { if (recv instanceof JavaProxy) { return JavaObject.op_equal((JavaProxy)recv, rhs); } return ((JavaObject)recv.dataGetStruct()).op_equal(rhs); }
@JRubyMethod public static IRubyObject source_encoding(ThreadContext context, IRubyObject self) { RubyCoderResult result = (RubyCoderResult)self.dataGetStruct(); return context.runtime.getEncodingService().convertEncodingToRubyEncoding(result.inEncoding); }
@JRubyMethod public static IRubyObject source_encoding_name(ThreadContext context, IRubyObject self) { RubyCoderResult result = (RubyCoderResult)self.dataGetStruct(); return RubyString.newString(context.runtime, result.inEncoding.getName()); }
@JRubyMethod(name = "==") public static IRubyObject op_equal(IRubyObject recv, IRubyObject rhs) { if (recv instanceof JavaProxy) { return JavaObject.op_equal((JavaProxy) recv, rhs); } return ((JavaObject)recv.dataGetStruct()).op_equal(rhs); }
@Override @JRubyMethod(name = {"==", "eql?"}) public RubyBoolean op_eqq(final ThreadContext context, IRubyObject obj) { if ( ! ( obj instanceof JavaProxyReflectionObject ) ) { final Object wrappedObj = obj.dataGetStruct(); if ( ! ( wrappedObj instanceof JavaObject ) ) { return context.fals; } obj = (IRubyObject) wrappedObj; } return context.runtime.newBoolean( this.equals(obj) ); }
@Override @JRubyMethod(name = {"==", "eql?"}) public RubyBoolean op_eqq(final ThreadContext context, IRubyObject obj) { if ( ! ( obj instanceof JavaProxyReflectionObject ) ) { final Object wrappedObj = obj.dataGetStruct(); if ( ! ( wrappedObj instanceof JavaObject ) ) { return context.fals; } obj = (IRubyObject) wrappedObj; } return context.runtime.newBoolean( this.equals(obj) ); }
@JRubyMethod public static IRubyObject destination_encoding(ThreadContext context, IRubyObject self) { RubyCoderResult result = (RubyCoderResult)self.dataGetStruct(); return context.runtime.getEncodingService().convertEncodingToRubyEncoding(result.outEncoding); }
public static ArgsFileData getDataFrom(IRubyObject recv) { ArgsFileData data = (ArgsFileData)recv.dataGetStruct(); if (data == null) { data = new ArgsFileData(recv.getRuntime()); recv.dataWrapStruct(data); } return data; }
@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 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 error_char(ThreadContext context, IRubyObject self) { RubyCoderResult result = (RubyCoderResult)self.dataGetStruct(); if (result != null && result.isError() && result.errorBytes != null) { // FIXME: do this elsewhere and cache it ByteList errorBytes = new ByteList(result.errorBytes, result.inEncoding, true); return RubyString.newString(context.runtime, errorBytes); } return context.nil; }
@JRubyMethod(name = "incomplete_input?") public static IRubyObject incomplete_input_p(ThreadContext context, IRubyObject self) { RubyCoderResult result = (RubyCoderResult)self.dataGetStruct(); if (result != null) { if (result.isInvalid()) { return context.runtime.getTrue(); } else { return context.runtime.getFalse(); } } return context.nil; }
@JRubyMethod public static IRubyObject to_s(IRubyObject recv) { if (recv instanceof JavaProxy) { return JavaObject.to_s(recv.getRuntime(), ((JavaProxy) recv).getObject()); } final Object unwrap = recv.dataGetStruct(); if (unwrap != null) return ((JavaObject) unwrap).to_s(); return ((RubyBasicObject) recv).to_s(); }