/* 
 | 
 * Copyright (C) 2009 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 cn.emay.sdk.util.json.gson; 
 | 
  
 | 
/** 
 | 
 * Defines the expected format for a {@code long} or {@code Long} type when its 
 | 
 * serialized. 
 | 
 * 
 | 
 * @since 1.3 
 | 
 * 
 | 
 * @author Inderjeet Singh 
 | 
 * @author Joel Leitch 
 | 
 */ 
 | 
public enum LongSerializationPolicy { 
 | 
    /** 
 | 
     * This is the "default" serialization policy that will output a {@code long} 
 | 
     * object as a JSON number. For example, assume an object has a long field named 
 | 
     * "f" then the serialized output would be: {@code {"f":123}}. 
 | 
     */ 
 | 
    DEFAULT() { 
 | 
        @Override 
 | 
        public JsonElement serialize(Long value) { 
 | 
            return new JsonPrimitive(value); 
 | 
        } 
 | 
    }, 
 | 
  
 | 
    /** 
 | 
     * Serializes a long value as a quoted string. For example, assume an object has 
 | 
     * a long field named "f" then the serialized output would be: 
 | 
     * {@code {"f":"123"}}. 
 | 
     */ 
 | 
    STRING() { 
 | 
        @Override 
 | 
        public JsonElement serialize(Long value) { 
 | 
            return new JsonPrimitive(String.valueOf(value)); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    /** 
 | 
     * Serialize this {@code value} using this serialization policy. 
 | 
     * 
 | 
     * @param value 
 | 
     *            the long value to be serialized into a {@link JsonElement} 
 | 
     * @return the serialized version of {@code value} 
 | 
     */ 
 | 
    public abstract JsonElement serialize(Long value); 
 | 
} 
 |