/*
* Copyright (c) 2014 Dennis Fischer.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0+
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors: Dennis Fischer
*/
package de.chaosfisch.util;
import com.google.gson.*;
import org.joda.time.DateTime;
import java.lang.reflect.Type;
import java.util.Date;
public class DateTimeTypeConverter implements JsonSerializer<DateTime>, JsonDeserializer<DateTime> {
@Override
public JsonElement serialize(final DateTime src, final Type typeOfSrc, final JsonSerializationContext context) {
return new JsonPrimitive(src.toString());
}
@Override
public DateTime deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) throws JsonParseException {
try {
return new DateTime(json.getAsString());
} catch (final IllegalArgumentException e) {
// May be it came in formatted as a java.util.Date, so try that
final Date date = context.deserialize(json, Date.class);
return new DateTime(date);
}
}
}