blob: 9ff99017d9a8044c2070b3d52b433a6107b8d566 [file] [log] [blame]
package org.apache.abdera2.activities.io.gson;
import java.lang.reflect.Type;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
public abstract class SimpleAdapter<T>
implements GsonTypeAdapter<T> {
private final Class<T> _class;
public SimpleAdapter() {
this._class = _getAdaptedClass(this.getClass());
}
@SuppressWarnings("unchecked")
private static <T>Class<T> _getAdaptedClass(Class<?> _class) {
if (_class.isAnnotationPresent(AdaptedType.class)) {
AdaptedType at = _class.getAnnotation(AdaptedType.class);
return (Class<T>) at.value();
} else throw new IllegalArgumentException();
}
public SimpleAdapter(Class<T> _class) {
this._class = _class;
}
public Class<T> getAdaptedClass() {
return _class;
}
public JsonElement serialize(
T t,
Type type,
JsonSerializationContext context) {
return context.serialize(serialize(t));
}
protected String serialize(T t) {
return t != null ? t.toString() : null;
}
protected abstract T deserialize(String v);
public T deserialize(
JsonElement json,
Type type,
JsonDeserializationContext context)
throws JsonParseException {
return deserialize(json.getAsJsonPrimitive().getAsString());
}
}