/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
- package com.google.sitebricks.client.transport;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.type.TypeFactory;
- import com.google.inject.TypeLiteral;
- import com.google.inject.Inject;
- import com.google.inject.Singleton;
- /**
- * @author Dhanji R. Prasanna (dhanji@gmail.com)
- */
- @Singleton
- public class JacksonJsonTransport extends Json {
- private final ObjectMapper objectMapper;
- @Inject
- public JacksonJsonTransport(ObjectMapper objectMapper) {
- this.objectMapper = objectMapper;
- }
-
- public ObjectMapper getObjectMapper() {
- return objectMapper;
- }
-
- public <T> T in(InputStream in, Class<T> type) throws IOException {
- return objectMapper.readValue(in, type);
- }
- @Override
- public <T> T in(InputStream in, TypeLiteral<T> type) throws IOException {
- return objectMapper.readValue(in, TypeFactory.defaultInstance().constructType(type.getType()));
- }
- public <T> void out(OutputStream out, Class<T> type, T data) {
- try {
- objectMapper.writeValue(out, data);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }