PostDeserializeEnabler.java 887 B

12345678910111213141516171819202122232425262728293031
  1. package holeg.serialize;
  2. import com.google.gson.Gson;
  3. import com.google.gson.TypeAdapter;
  4. import com.google.gson.TypeAdapterFactory;
  5. import com.google.gson.reflect.TypeToken;
  6. import com.google.gson.stream.JsonReader;
  7. import com.google.gson.stream.JsonWriter;
  8. import java.io.IOException;
  9. public class PostDeserializeEnabler implements TypeAdapterFactory {
  10. @Override
  11. public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
  12. final TypeAdapter<T> delegate = gson.getDelegateAdapter(this, type);
  13. return new TypeAdapter<T>() {
  14. public void write(JsonWriter out, T value) throws IOException {
  15. delegate.write(out, value);
  16. }
  17. public T read(JsonReader in) throws IOException {
  18. T obj = delegate.read(in);
  19. if (obj instanceof PostDeserialize post) {
  20. post.postDeserialize();
  21. }
  22. return obj;
  23. }
  24. };
  25. }
  26. }