com.googlecode.gwt.test.internal.patchers.JSONObjectParser Maven / Gradle / Ivy
package com.googlecode.gwt.test.internal.patchers;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONValue;
import com.googlecode.gwt.test.patchers.PatchClass;
import com.googlecode.gwt.test.patchers.PatchMethod;
import com.googlecode.gwt.test.utils.JavaScriptObjects;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
@PatchClass(JSONObject.class)
class JSONObjectParser {
private static final String JSONOBJECT_MAP = "JSONOBJECT_MAP";
@PatchMethod
static void addAllKeys(JSONObject jsonObject, Collection s) {
Map map = getInnerMap(jsonObject);
s.addAll(map.keySet());
}
@PatchMethod
static boolean containsKey(JSONObject jsonObject, String key) {
Map map = getInnerMap(jsonObject);
return map.containsKey(key);
}
@PatchMethod
static JSONValue get0(JSONObject jsonObject, String key) {
Map map = getInnerMap(jsonObject);
return map.get(key);
}
@PatchMethod
static void put0(JSONObject jsonObject, String key, JSONValue value) {
Map map = getInnerMap(jsonObject);
map.put(key, value);
}
private static Map getInnerMap(JSONObject jsonObject) {
JavaScriptObject jsObject = jsonObject.getJavaScriptObject();
Map map = JavaScriptObjects.getObject(jsObject, JSONOBJECT_MAP);
if (map == null) {
map = new LinkedHashMap();
JavaScriptObjects.setProperty(jsObject, JSONOBJECT_MAP, map);
}
return map;
}
}