Advertisement
Guest User

Untitled

a guest
Nov 3rd, 2015
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1.  
  2. import java.io.IOException;
  3. import java.lang.reflect.Type;
  4.  
  5. import com.google.gson.Gson;
  6. import com.google.gson.TypeAdapter;
  7. import com.google.gson.TypeAdapterFactory;
  8. import com.google.gson.internal.$Gson$Types;
  9. import com.google.gson.reflect.TypeToken;
  10. import com.google.gson.stream.JsonReader;
  11. import com.google.gson.stream.JsonWriter;
  12.  
  13. public class Value<T> {
  14.  
  15. private T value;
  16.  
  17. public Value(T ponylevel) {
  18. this.value = ponylevel;
  19. }
  20.  
  21. public T get() {
  22. return value;
  23. }
  24.  
  25. public void set(T val) {
  26. this.value = val;
  27. }
  28.  
  29. public static class TypeFactory implements TypeAdapterFactory {
  30.  
  31. @Override
  32. public <T> TypeAdapter<T> create(final Gson gson, TypeToken<T> typeToken) {
  33. final Type type = typeToken.getType();
  34. if (!(type instanceof Value)) {
  35. return null;
  36. }
  37.  
  38. final Type componentType = $Gson$Types.getArrayComponentType(type);
  39. final TypeAdapter<?> componentTypeAdapter = gson.getAdapter(TypeToken.get(componentType));
  40.  
  41. return new TypeTypeAdapter(componentTypeAdapter);
  42. }
  43.  
  44. }
  45.  
  46. private static class TypeTypeAdapter<T> extends TypeAdapter<Value<T>> {
  47.  
  48. private TypeAdapter<T> adapter;
  49.  
  50. public TypeTypeAdapter(TypeAdapter<T> adapter) {
  51. this.adapter = adapter;
  52. }
  53.  
  54. @Override
  55. public void write(JsonWriter out, Value<T> value) throws IOException {
  56. adapter.write(out, value.get());
  57. }
  58.  
  59. @Override
  60. public Value<T> read(JsonReader in) throws IOException {
  61. return new Value<T>(adapter.read(in));
  62. }
  63. }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement