JsonMessageBodyWriter.java 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package hello;
  2. import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.sun.jersey.spi.resource.Singleton;
  5. import java.io.IOException;
  6. import java.io.OutputStream;
  7. import java.lang.annotation.Annotation;
  8. import java.lang.reflect.Type;
  9. import javax.ws.rs.Produces;
  10. import javax.ws.rs.WebApplicationException;
  11. import javax.ws.rs.core.MediaType;
  12. import javax.ws.rs.core.MultivaluedMap;
  13. import javax.ws.rs.ext.MessageBodyWriter;
  14. import javax.ws.rs.ext.Provider;
  15. @Singleton
  16. @Provider
  17. @Produces(APPLICATION_JSON)
  18. public class JsonMessageBodyWriter implements MessageBodyWriter<Object> {
  19. private final ObjectMapper mapper = new ObjectMapper();
  20. @Override
  21. public boolean isWriteable(
  22. Class<?> type,
  23. Type genericType,
  24. Annotation[] annotations,
  25. MediaType mediaType) {
  26. return "json".equals(mediaType.getSubtype());
  27. }
  28. @Override
  29. public long getSize(
  30. Object t,
  31. Class<?> type,
  32. Type genericType,
  33. Annotation[] annotations,
  34. MediaType mediaType) {
  35. return -1; // We can't predict the output size at this point
  36. }
  37. @Override
  38. public void writeTo(
  39. Object t,
  40. Class<?> type,
  41. Type genericType,
  42. Annotation[] annotations,
  43. MediaType mediaType,
  44. MultivaluedMap<String, Object> httpHeaders,
  45. OutputStream entityStream)
  46. throws IOException, WebApplicationException {
  47. mapper.writeValue(entityStream, t);
  48. }
  49. }