Skip to content

Commit

Permalink
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions core/src/main/java/org/jruby/javasupport/JavaUtil.java
Original file line number Diff line number Diff line change
@@ -268,11 +268,28 @@ public static boolean isJavaObject(final IRubyObject object) {
* @return Java object
* @see JavaUtil#isJavaObject(IRubyObject)
*/
public static Object unwrapJavaObject(final IRubyObject object) {
public static <T> T unwrapJavaObject(final IRubyObject object) {
if ( object instanceof JavaProxy ) {
return (T) ((JavaProxy) object).getObject();
}
return (T) ((JavaObject) object.dataGetStruct()).getValue();
}

/**
* Unwrap if the passed object is a Java object, otherwise return object.
* @param object
* @return java object or passed object
* @see JavaUtil#isJavaObject(IRubyObject)
*/
public static Object unwrapIfJavaObject(final IRubyObject object) {
if ( object instanceof JavaProxy ) {
return ((JavaProxy) object).getObject();
}
return ((JavaObject) object.dataGetStruct()).getValue();
final Object unwrap = object.dataGetStruct();
if ( unwrap instanceof JavaObject ) {
return ((JavaObject) unwrap).getValue();
}
return object;
}

@Deprecated // no longer used

0 comments on commit 16b0f81

Please sign in to comment.