/* * Copyright (C) 2014 SCVNGR, Inc. d/b/a LevelUp * * 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 com.scvngr.levelup.core.annotation; import android.support.annotation.NonNull; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Documents intended mappings for JSON field key strings regarding the key's associated value's * type mapping in JSON. */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface JsonValueType { /** * Field type mappings supported by JSONObject. */ public static enum JsonType { /** * Value is a JSON true or JSON false that should map to a Java boolean. */ @NonNull BOOLEAN, /** * Value is a JSON number and should be read as a Java double. */ @NonNull DOUBLE, /** * Value is a JSON number that should be read as a Java int. */ @NonNull INT, /** * Value is a JSON array. */ @NonNull JSON_ARRAY, /** * Value is a JSON object. */ @NonNull JSON_OBJECT, /** * Value is a JSON number that should be read as a Java long. */ @NonNull LONG, /** * Value is a JSON string. */ @NonNull STRING } /** * Documents the intended parser mapping from JSON object fields. This will usually (but not * always) match the type of the model's related field, but may not where the model has a more * complex type not supported by JSON or JSONObject (e.g. a User's birthday may be a JSON * String, but a Java Date in the Model). */ @NonNull JsonType value(); }