/* * Copyright 2004-2010 the original author or 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 org.slim3.datastore.json; import java.util.Date; import org.slim3.datastore.ModelRef; import com.google.appengine.api.blobstore.BlobKey; import com.google.appengine.api.datastore.Blob; import com.google.appengine.api.datastore.Category; import com.google.appengine.api.datastore.Email; import com.google.appengine.api.datastore.GeoPt; import com.google.appengine.api.datastore.IMHandle; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.Link; import com.google.appengine.api.datastore.PhoneNumber; import com.google.appengine.api.datastore.PostalAddress; import com.google.appengine.api.datastore.Rating; import com.google.appengine.api.datastore.ShortBlob; import com.google.appengine.api.datastore.Text; import com.google.appengine.api.users.User; /** * The interface of JSON encoder and decoder. * * @author Takao Nakaguchi * * @since 1.0.6 */ public interface JsonCoder{ /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Boolean value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Short value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Integer value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Long value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Float value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Double value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, String value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Date value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Enum<?> value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Blob value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, BlobKey value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Category value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Email value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, IMHandle value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, GeoPt value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Key value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Link value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, PhoneNumber value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, PostalAddress value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Rating value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, ShortBlob value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Text value); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, User value); /** * Encode value to JSON. * @param writer the writer * @param value the value * @param maxDepth the max depth * @param currentDepth the current depth */ void encode(JsonWriter writer, ModelRef<?> value, int maxDepth, int currentDepth); /** * Encode value to JSON. * @param writer the writer * @param value the value */ void encode(JsonWriter writer, Object value); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Boolean decode(JsonReader reader, Boolean defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Short decode(JsonReader reader, Short defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Integer decode(JsonReader reader, Integer defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Long decode(JsonReader reader, Long defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Float decode(JsonReader reader, Float defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Double decode(JsonReader reader, Double defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ String decode(JsonReader reader, String defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Date decode(JsonReader reader, Date defaultValue); /** * Decode json object. * @param <T> type of Enum * @param reader the reader * @param defaultValue the default value * @param clazz the class * @return the decoded Object */ <T extends Enum<T>> T decode(JsonReader reader, T defaultValue, Class<T> clazz); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Blob decode(JsonReader reader, Blob defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ BlobKey decode(JsonReader reader, BlobKey defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Category decode(JsonReader reader, Category defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Email decode(JsonReader reader, Email defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ GeoPt decode(JsonReader reader, GeoPt defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ IMHandle decode(JsonReader reader, IMHandle defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Key decode(JsonReader reader, Key defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Link decode(JsonReader reader, Link defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ PhoneNumber decode(JsonReader reader, PhoneNumber defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ PostalAddress decode(JsonReader reader, PostalAddress defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Rating decode(JsonReader reader, Rating defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ ShortBlob decode(JsonReader reader, ShortBlob defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ Text decode(JsonReader reader, Text defaultValue); /** * Decode json object. * @param reader the reader * @param defaultValue the default value * @return the decoded Object */ User decode(JsonReader reader, User defaultValue); /** * Decode json object. * @param <T> the type of the referenced model * @param reader the reader * @param modelRef the model reference * @param maxDepth the max depth * @param currentDepth the current depth */ <T> void decode(JsonReader reader, ModelRef<T> modelRef, int maxDepth, int currentDepth); /** * Decode json object. * @param <T> the type of the object * @param reader the reader * @param defaultValue the default value * @param clazz the class * @return the decoded Object */ <T> T decode(JsonReader reader, T defaultValue, Class<T> clazz); }