| /* |
| * Copyright 2010 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package elemental.js.json; |
| |
| import com.google.gwt.core.client.JavaScriptObject; |
| import com.google.gwt.core.client.JsArrayString; |
| |
| import elemental.json.JsonArray; |
| import elemental.json.JsonBoolean; |
| import elemental.json.JsonNumber; |
| import elemental.json.JsonObject; |
| import elemental.json.JsonString; |
| import elemental.json.JsonValue; |
| |
| /** |
| * Client-side implementation of JsonObject interface. |
| */ |
| @Deprecated |
| final public class JsJsonObject extends JsJsonValue |
| implements JsonObject { |
| |
| public static JsJsonObject create() { |
| return JavaScriptObject.createObject().cast(); |
| } |
| |
| protected JsJsonObject() { |
| } |
| |
| public final native JsonValue get(String key) /*-{ |
| var value = this[key]; |
| // box for DevMode, not ProdMode |
| return @com.google.gwt.core.client.GWT::isScript()() || value == null ? value : Object(value); |
| }-*/; |
| |
| public JsonArray getArray(String key) { |
| return (JsonArray) get(key); |
| } |
| |
| public boolean getBoolean(String key) { |
| return ((JsonBoolean) get(key)).getBoolean(); |
| } |
| |
| public double getNumber(String key) { |
| return ((JsonNumber) get(key)).getNumber(); |
| } |
| |
| public JsonObject getObject(String key) { |
| return (JsonObject) get(key); |
| } |
| |
| public String getString(String key) { |
| return ((JsonString) get(key)).getString(); |
| } |
| |
| public native boolean hasKey(String key) /*-{ |
| return key in this; |
| }-*/; |
| |
| public String[] keys() { |
| JsArrayString str = keys0(); |
| return reinterpretCast(str); |
| } |
| |
| public native JsArrayString keys0() /*-{ |
| var keys = []; |
| for(var key in this) { |
| if (Object.prototype.hasOwnProperty.call(this, key) && key != '$H') { |
| keys.push(key); |
| } |
| } |
| return keys; |
| }-*/; |
| |
| public native void put(String key, JsonValue value) /*-{ |
| this[key] = value; |
| }-*/; |
| |
| public void put(String key, String value) { |
| put(key, JsJsonString.create(value)); |
| } |
| |
| public void put(String key, double value) { |
| put(key, JsJsonNumber.create(value)); |
| } |
| |
| public void put(String key, boolean value) { |
| put(key, JsJsonBoolean.create(value)); |
| } |
| |
| /** |
| * @deprecated use {@link #put(String, elemental.json.JsonValue)} instead. |
| */ |
| @Deprecated |
| public void put0(String key, JsonValue value) { |
| put(key, value); |
| } |
| |
| public native void remove(String key) /*-{ |
| delete this[key]; |
| }-*/; |
| |
| private native String[] reinterpretCast(JsArrayString arrayString) /*-{ |
| return arrayString; |
| }-*/; |
| } |