001package com.thed.util.gson;
002
003import com.google.gson.*;
004
005import java.lang.reflect.Type;
006import java.text.DateFormat;
007import java.text.ParseException;
008import java.text.SimpleDateFormat;
009import java.util.Date;
010import java.util.Locale;
011
012public class CustomDateTypeAdapter implements JsonDeserializer<Date>, JsonSerializer<Date>{
013
014        private static final Locale EN_US_LOCALE = Locale.US;
015        
016        private static final DateFormat[] DATE_FORMATS = new DateFormat[] {
017                        SimpleDateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, EN_US_LOCALE),
018                        new SimpleDateFormat("yyyy-MM-dd",EN_US_LOCALE)
019        };
020
021        public Date deserialize(JsonElement json, Type typeOfT,
022                        JsonDeserializationContext context) throws JsonParseException {
023        Date dt=null;
024                for(DateFormat format:DATE_FORMATS) {
025                        try {
026                                String s = json.getAsJsonPrimitive().getAsString();
027                                dt = format.parse(s);
028                                return dt ;
029                    } catch (ParseException e) {
030                    }
031                }
032        return dt;      
033        }
034
035        public JsonElement serialize(Date src, Type typeOfSrc,
036                        JsonSerializationContext context) {
037                
038                String s = new SimpleDateFormat("yyyy-MM-dd",EN_US_LOCALE).format(src);
039                return new JsonPrimitive(s);
040        }
041        
042}