rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/lang/System.java
branchNbHtml4J
changeset 1421 b8e33a00bfab
parent 835 24096bd2b38a
child 1476 dbfabad86e5c
     1.1 --- a/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/lang/System.java	Sun Mar 10 21:28:50 2013 +0100
     1.2 +++ b/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/lang/System.java	Thu Jan 09 08:21:26 2014 +0100
     1.3 @@ -19,6 +19,7 @@
     1.4  
     1.5  import java.lang.reflect.Method;
     1.6  import org.apidesign.bck2brwsr.core.JavaScriptBody;
     1.7 +import org.apidesign.bck2brwsr.core.JavaScriptOnly;
     1.8  
     1.9  /**
    1.10   *
    1.11 @@ -71,4 +72,27 @@
    1.12      }
    1.13      @JavaScriptBody(args = { "obj" }, body="return vm.java_lang_Object(false).hashCode__I.call(obj);")
    1.14      public static native int identityHashCode(Object obj);
    1.15 +    
    1.16 +    @JavaScriptOnly(name = "toJS", value = "function(v) {\n" + 
    1.17 +        "  if (v === null) return null;\n" +
    1.18 +        "  if (Object.prototype.toString.call(v) === '[object Array]') {\n" +
    1.19 +        "    return vm.org_apidesign_bck2brwsr_emul_lang_System(false).convArray__Ljava_lang_Object_2Ljava_lang_Object_2(v);\n" +
    1.20 +        "  }\n" +
    1.21 +        "  return v.valueOf();\n" +
    1.22 +        "}\n"
    1.23 +    )
    1.24 +    public static native int toJS();
    1.25 +    
    1.26 +    private static Object convArray(Object o) {
    1.27 +        if (o instanceof Object[]) {
    1.28 +            Object[] arr = (Object[]) o;
    1.29 +            final int l = arr.length;
    1.30 +            Object[] ret = new Object[l];
    1.31 +            for (int i = 0; i < l; i++) {
    1.32 +                ret[i] = convArray(arr[i]);
    1.33 +            }
    1.34 +            return ret;
    1.35 +        }
    1.36 +        return o;
    1.37 +    }
    1.38  }