/** * Copyright 2010 The ForPlay Authors * * 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 forplay.flash; import forplay.flash.json.JsonArray; import forplay.flash.json.JsonNumber; import forplay.flash.json.JsonBoolean; import forplay.flash.json.JsonValue; import forplay.flash.json.JsonString; import forplay.flash.json.JsonObject; import forplay.core.Json; class FlashJson implements Json { /* (non-Javadoc) * @see forplay.core.Json#parse(java.lang.String) */ @Override public Object parse(String json) { return new ObjectImpl((JsonObject) forplay.flash.json.Json.instance().parse(json)); } static class ArrayImpl implements Array { private final JsonArray arr; /** * @param jsonArray */ public ArrayImpl(JsonArray arr) { this.arr = arr != null ? arr : forplay.flash.json.Json.instance().createArray(); } /* (non-Javadoc) * @see forplay.core.Json.Array#getArray(int) */ @Override public Array getArray(int index) { return new ArrayImpl((JsonArray) arr.get(index)); } /* (non-Javadoc) * @see forplay.core.Json.Array#getBoolean(int) */ @Override public boolean getBoolean(int index) { // TODO Auto-generated method stub JsonValue b = arr.get(index); return b != null ? ((JsonBoolean)b).getBoolean() : false; } /* (non-Javadoc) * @see forplay.core.Json.Array#getInt(int) */ @Override public int getInt(int index) { // TODO Auto-generated method stub return (int) getNumber(index); } /* (non-Javadoc) * @see forplay.core.Json.Array#getNumber(int) */ @Override public double getNumber(int index) { JsonValue n = arr.get(index); return n != null ? ((JsonNumber) n).getNumber() : 0; } /* (non-Javadoc) * @see forplay.core.Json.Array#getObject(int) */ @Override public Object getObject(int index) { return new ObjectImpl((JsonObject) arr.get(index)); } /* (non-Javadoc) * @see forplay.core.Json.Array#getString(int) */ @Override public String getString(int index) { JsonValue s = arr.get(index); return s != null ? ((JsonString)s).getString() : ""; } /* (non-Javadoc) * @see forplay.core.Json.Array#length() */ @Override public int length() { return arr.length(); } } static class ObjectImpl implements Object { private final JsonObject obj; /** * @param parse */ public ObjectImpl(JsonObject obj) { this.obj = obj != null ? obj : forplay.flash.json.Json.instance().createObject(); } /* (non-Javadoc) * @see forplay.core.Json.Object#getArray(java.lang.String) */ @Override public Array getArray(String key) { return new ArrayImpl((JsonArray) obj.get(key)); } /* (non-Javadoc) * @see forplay.core.Json.Object#getBoolean(java.lang.String) */ @Override public boolean getBoolean(String key) { JsonValue o = obj.get(key); return o != null ? ((JsonBoolean)o).getBoolean() : false; } /* (non-Javadoc) * @see forplay.core.Json.Object#getInt(java.lang.String) */ @Override public int getInt(String key) { return (int) getNumber(key); } /* (non-Javadoc) * @see forplay.core.Json.Object#getKeys() */ @Override public Array getKeys() { // TODO Auto-generated method stub return new Array() { @Override public Array getArray(int index) { // TODO Auto-generated method stub return null; } @Override public boolean getBoolean(int index) { // TODO Auto-generated method stub return false; } @Override public int getInt(int index) { // TODO Auto-generated method stub return 0; } @Override public double getNumber(int index) { // TODO Auto-generated method stub return 0; } @Override public Object getObject(int index) { // TODO Auto-generated method stub return null; } @Override public String getString(int index) { return obj.keys()[index]; } @Override public int length() { return obj.keys().length; } }; } /* (non-Javadoc) * @see forplay.core.Json.Object#getNumber(java.lang.String) */ @Override public double getNumber(String key) { JsonValue n = obj.get(key); return n != null ? ((JsonNumber) n).getNumber() : 0; } /* (non-Javadoc) * @see forplay.core.Json.Object#getObject(java.lang.String) */ @Override public Object getObject(String key) { return new ObjectImpl((JsonObject) obj.get(key)); } /* (non-Javadoc) * @see forplay.core.Json.Object#getString(java.lang.String) */ @Override public String getString(String key) { JsonValue s = obj.get(key); return s != null ? ((JsonString) s).getString() : ""; } } /* (non-Javadoc) * @see forplay.core.Json#newWriter() */ @Override public Writer newWriter() { // TODO Auto-generated method stub return null; } }