1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package hello;
- import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.sun.jersey.spi.resource.Singleton;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.lang.annotation.Annotation;
- import java.lang.reflect.Type;
- import javax.ws.rs.Produces;
- import javax.ws.rs.WebApplicationException;
- import javax.ws.rs.core.MediaType;
- import javax.ws.rs.core.MultivaluedMap;
- import javax.ws.rs.ext.MessageBodyWriter;
- import javax.ws.rs.ext.Provider;
- @Singleton
- @Provider
- @Produces(APPLICATION_JSON)
- public class JsonMessageBodyWriter implements MessageBodyWriter<Object> {
- private final ObjectMapper mapper = new ObjectMapper();
- @Override
- public boolean isWriteable(
- Class<?> type,
- Type genericType,
- Annotation[] annotations,
- MediaType mediaType) {
- return "json".equals(mediaType.getSubtype());
- }
- @Override
- public long getSize(
- Object t,
- Class<?> type,
- Type genericType,
- Annotation[] annotations,
- MediaType mediaType) {
- return -1; // We can't predict the output size at this point
- }
- @Override
- public void writeTo(
- Object t,
- Class<?> type,
- Type genericType,
- Annotation[] annotations,
- MediaType mediaType,
- MultivaluedMap<String, Object> httpHeaders,
- OutputStream entityStream)
- throws IOException, WebApplicationException {
- mapper.writeValue(entityStream, t);
- }
- }
|