]> source.dussan.org Git - vaadin-framework.git/commitdiff
Make SDM work again (#15452)
authorArtur Signell <artur@vaadin.com>
Mon, 22 Dec 2014 15:07:19 +0000 (17:07 +0200)
committerArtur Signell <artur@vaadin.com>
Mon, 22 Dec 2014 15:10:16 +0000 (17:10 +0200)
Only import the Json part of elemental and avoid using JsonUtil, which
causes https://code.google.com/p/google-web-toolkit/issues/detail?id=9083

Change-Id: I7b93b18ad47b81b2e5bb3947b04bf4550ddd035c

client/src/com/vaadin/Vaadin.gwt.xml
client/src/com/vaadin/client/Util.java

index 40fbeb5a7a4fb01d84dd9f16b4ed9dc84eef3a58..7387d0f997a8a9e7e1f865e7780de70a9872de79 100644 (file)
@@ -10,7 +10,7 @@
 
     <inherits name="com.google.gwt.http.HTTP" />
 
-    <inherits name="elemental.Elemental"/>
+    <inherits name="elemental.Json"/>
 
     <inherits name="com.google.gwt.logging.Logging" />
     <set-property name="gwt.logging.enabled" value="TRUE" />
index ed9cfce062886be782ead5d0546196c24a9503ce..8b23bf433b7d124d8c6bd36de062f782b700f54f 100644 (file)
@@ -60,9 +60,7 @@ import com.vaadin.shared.ui.ComponentStateUtil;
 import com.vaadin.shared.util.SharedUtil;
 
 import elemental.js.json.JsJsonValue;
-import elemental.js.util.Json;
 import elemental.json.JsonValue;
-import elemental.json.impl.JsonUtil;
 
 public class Util {
 
@@ -1552,7 +1550,7 @@ public class Util {
         if (GWT.isProdMode()) {
             return (T) jso.<JsJsonValue> cast();
         } else {
-            return JsonUtil.parse(Json.stringify(jso));
+            return elemental.json.Json.instance().parse(stringify(jso));
         }
     }
 
@@ -1569,10 +1567,36 @@ public class Util {
         if (GWT.isProdMode()) {
             return ((JavaScriptObject) jsonValue.toNative()).cast();
         } else {
-            return Json.parse(jsonValue.toJson());
+            return parse(jsonValue.toJson());
         }
     }
 
+    /**
+     * Convert a {@link JavaScriptObject} into a string representation.
+     *
+     * @param json
+     *            a JavaScript object to be converted to a string
+     * @return JSON in string representation
+     */
+    private native static String stringify(JavaScriptObject json)
+    /*-{
+        return JSON.stringify(json);
+    }-*/;
+
+    /**
+     * Parse a string containing JSON into a {@link JavaScriptObject}.
+     *
+     * @param <T>
+     *            the overlay type to expect from the parse
+     * @param jsonAsString
+     * @return a JavaScript object constructed from the parse
+     */
+    public native static <T extends JavaScriptObject> T parse(
+            String jsonAsString)
+    /*-{
+        return JSON.parse(jsonAsString);
+    }-*/;
+
     /**
      * The allowed value inaccuracy when comparing two double-typed pixel
      * values.