/sitebricks-client/src/main/java/com/google/sitebricks/client/transport/JacksonJsonTransport.java

http://github.com/dhanji/sitebricks · Java · 48 lines · 34 code · 11 blank · 3 comment · 0 complexity · 4a7f2d61a986000850671f745c8d78fd MD5 · raw file

  1. package com.google.sitebricks.client.transport;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import com.fasterxml.jackson.databind.type.TypeFactory;
  7. import com.google.inject.TypeLiteral;
  8. import com.google.inject.Inject;
  9. import com.google.inject.Singleton;
  10. /**
  11. * @author Dhanji R. Prasanna (dhanji@gmail.com)
  12. */
  13. @Singleton
  14. public class JacksonJsonTransport extends Json {
  15. private final ObjectMapper objectMapper;
  16. @Inject
  17. public JacksonJsonTransport(ObjectMapper objectMapper) {
  18. this.objectMapper = objectMapper;
  19. }
  20. public ObjectMapper getObjectMapper() {
  21. return objectMapper;
  22. }
  23. public <T> T in(InputStream in, Class<T> type) throws IOException {
  24. return objectMapper.readValue(in, type);
  25. }
  26. @Override
  27. public <T> T in(InputStream in, TypeLiteral<T> type) throws IOException {
  28. return objectMapper.readValue(in, TypeFactory.defaultInstance().constructType(type.getType()));
  29. }
  30. public <T> void out(OutputStream out, Class<T> type, T data) {
  31. try {
  32. objectMapper.writeValue(out, data);
  33. } catch (IOException e) {
  34. throw new RuntimeException(e);
  35. }
  36. }
  37. }