Converted java.sql.Date type adapters to the new style.
This commit is contained in:
parent
d20df34b8b
commit
8217aca925
|
@ -22,9 +22,7 @@ import java.sql.Timestamp;
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
|
||||||
|
@ -40,8 +38,6 @@ import com.google.gson.internal.ParameterizedTypeHandlerMap;
|
||||||
final class DefaultTypeAdapters {
|
final class DefaultTypeAdapters {
|
||||||
|
|
||||||
private static final DefaultDateTypeAdapter DATE_TYPE_ADAPTER = new DefaultDateTypeAdapter();
|
private static final DefaultDateTypeAdapter DATE_TYPE_ADAPTER = new DefaultDateTypeAdapter();
|
||||||
private static final DefaultJavaSqlDateTypeAdapter JAVA_SQL_DATE_TYPE_ADAPTER =
|
|
||||||
new DefaultJavaSqlDateTypeAdapter();
|
|
||||||
private static final DefaultTimeTypeAdapter TIME_TYPE_ADAPTER =
|
private static final DefaultTimeTypeAdapter TIME_TYPE_ADAPTER =
|
||||||
new DefaultTimeTypeAdapter();
|
new DefaultTimeTypeAdapter();
|
||||||
private static final DefaultTimestampDeserializer TIMESTAMP_DESERIALIZER =
|
private static final DefaultTimestampDeserializer TIMESTAMP_DESERIALIZER =
|
||||||
|
@ -62,7 +58,6 @@ final class DefaultTypeAdapters {
|
||||||
new ParameterizedTypeHandlerMap<JsonSerializer<?>>();
|
new ParameterizedTypeHandlerMap<JsonSerializer<?>>();
|
||||||
|
|
||||||
map.register(Date.class, DATE_TYPE_ADAPTER, true);
|
map.register(Date.class, DATE_TYPE_ADAPTER, true);
|
||||||
map.register(java.sql.Date.class, JAVA_SQL_DATE_TYPE_ADAPTER, true);
|
|
||||||
map.register(Timestamp.class, DATE_TYPE_ADAPTER, true);
|
map.register(Timestamp.class, DATE_TYPE_ADAPTER, true);
|
||||||
map.register(Time.class, TIME_TYPE_ADAPTER, true);
|
map.register(Time.class, TIME_TYPE_ADAPTER, true);
|
||||||
|
|
||||||
|
@ -74,7 +69,6 @@ final class DefaultTypeAdapters {
|
||||||
ParameterizedTypeHandlerMap<JsonDeserializer<?>> map =
|
ParameterizedTypeHandlerMap<JsonDeserializer<?>> map =
|
||||||
new ParameterizedTypeHandlerMap<JsonDeserializer<?>>();
|
new ParameterizedTypeHandlerMap<JsonDeserializer<?>>();
|
||||||
map.register(Date.class, wrapDeserializer(DATE_TYPE_ADAPTER), true);
|
map.register(Date.class, wrapDeserializer(DATE_TYPE_ADAPTER), true);
|
||||||
map.register(java.sql.Date.class, wrapDeserializer(JAVA_SQL_DATE_TYPE_ADAPTER), true);
|
|
||||||
map.register(Timestamp.class, wrapDeserializer(TIMESTAMP_DESERIALIZER), true);
|
map.register(Timestamp.class, wrapDeserializer(TIMESTAMP_DESERIALIZER), true);
|
||||||
map.register(Time.class, wrapDeserializer(TIME_TYPE_ADAPTER), true);
|
map.register(Time.class, wrapDeserializer(TIME_TYPE_ADAPTER), true);
|
||||||
|
|
||||||
|
@ -181,37 +175,6 @@ final class DefaultTypeAdapters {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static final class DefaultJavaSqlDateTypeAdapter implements JsonSerializer<java.sql.Date>,
|
|
||||||
JsonDeserializer<java.sql.Date> {
|
|
||||||
private final DateFormat format;
|
|
||||||
DefaultJavaSqlDateTypeAdapter() {
|
|
||||||
this.format = new SimpleDateFormat("MMM d, yyyy");
|
|
||||||
}
|
|
||||||
|
|
||||||
public JsonElement serialize(java.sql.Date src, Type typeOfSrc,
|
|
||||||
JsonSerializationContext context) {
|
|
||||||
synchronized (format) {
|
|
||||||
String dateFormatAsString = format.format(src);
|
|
||||||
return new JsonPrimitive(dateFormatAsString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public java.sql.Date deserialize(JsonElement json, Type typeOfT,
|
|
||||||
JsonDeserializationContext context) throws JsonParseException {
|
|
||||||
if (!(json instanceof JsonPrimitive)) {
|
|
||||||
throw new JsonParseException("The date should be a string value");
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
synchronized (format) {
|
|
||||||
Date date = format.parse(json.getAsString());
|
|
||||||
return new java.sql.Date(date.getTime());
|
|
||||||
}
|
|
||||||
} catch (ParseException e) {
|
|
||||||
throw new JsonSyntaxException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static final class DefaultTimestampDeserializer implements JsonDeserializer<Timestamp> {
|
static final class DefaultTimestampDeserializer implements JsonDeserializer<Timestamp> {
|
||||||
public Timestamp deserialize(JsonElement json, Type typeOfT,
|
public Timestamp deserialize(JsonElement json, Type typeOfT,
|
||||||
JsonDeserializationContext context) throws JsonParseException {
|
JsonDeserializationContext context) throws JsonParseException {
|
||||||
|
|
|
@ -255,6 +255,7 @@ public final class Gson {
|
||||||
.factory(new GsonToMiniGsonTypeAdapterFactory(serializers, deserializers,
|
.factory(new GsonToMiniGsonTypeAdapterFactory(serializers, deserializers,
|
||||||
new JsonDeserializationContext(this), new JsonSerializationContext(this), serializeNulls
|
new JsonDeserializationContext(this), new JsonSerializationContext(this), serializeNulls
|
||||||
))
|
))
|
||||||
|
.factory(TypeAdapters.SQL_DATE_FACTORY)
|
||||||
.factory(new MapTypeAdapterFactory(constructorConstructor, complexMapKeySerialization))
|
.factory(new MapTypeAdapterFactory(constructorConstructor, complexMapKeySerialization))
|
||||||
.factory(ArrayTypeAdapter.FACTORY)
|
.factory(ArrayTypeAdapter.FACTORY)
|
||||||
.factory(TypeAdapters.ENUM_FACTORY)
|
.factory(TypeAdapters.ENUM_FACTORY)
|
||||||
|
|
|
@ -21,8 +21,12 @@ import java.net.InetAddress;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.BitSet;
|
import java.util.BitSet;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
@ -407,6 +411,27 @@ public final class TypeAdapters {
|
||||||
|
|
||||||
public static final TypeAdapter.Factory UUID_FACTORY = newFactory(UUID.class, UUID);
|
public static final TypeAdapter.Factory UUID_FACTORY = newFactory(UUID.class, UUID);
|
||||||
|
|
||||||
|
public static final TypeAdapter<java.sql.Date> SQL_DATE = new TypeAdapter<java.sql.Date>() {
|
||||||
|
private final DateFormat format = new SimpleDateFormat("MMM d, yyyy");
|
||||||
|
@Override
|
||||||
|
public java.sql.Date read(JsonReader reader) throws IOException {
|
||||||
|
try {
|
||||||
|
synchronized (format) {
|
||||||
|
Date date = format.parse(reader.nextString());
|
||||||
|
return new java.sql.Date(date.getTime());
|
||||||
|
}
|
||||||
|
} catch (ParseException e) {
|
||||||
|
throw new JsonSyntaxException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void write(JsonWriter writer, java.sql.Date value) throws IOException {
|
||||||
|
writer.value(format.format(value));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public static final TypeAdapter.Factory SQL_DATE_FACTORY = newFactory(java.sql.Date.class, SQL_DATE);
|
||||||
|
|
||||||
public static final TypeAdapter<Calendar> CALENDAR = new TypeAdapter<Calendar>() {
|
public static final TypeAdapter<Calendar> CALENDAR = new TypeAdapter<Calendar>() {
|
||||||
private static final String YEAR = "year";
|
private static final String YEAR = "year";
|
||||||
private static final String MONTH = "month";
|
private static final String MONTH = "month";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user