MsgPackProvider.java
package org.honton.chas.datadog.apm.jackson;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import org.msgpack.jackson.dataformat.MessagePackFactory;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
/**
* Provider for "application/msgpack" MessageReader / MessageWriter
*/
@Provider
@Produces("application/msgpack")
@Consumes("application/msgpack")
public class MsgPackProvider extends JacksonJsonProvider {
private final static ObjectMapper MINIMAL_OBJECT_MAPPER = createMinimalObjectMapper();
// see JacksonShim.createMinimalObjectMapper()
private static ObjectMapper createMinimalObjectMapper() {
ObjectMapper mapper = new ObjectMapper(new MessagePackFactory());
mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
return mapper;
}
/**
* Create the provider
*/
public MsgPackProvider() {
super(MINIMAL_OBJECT_MAPPER);
}
@Override
protected boolean hasMatchingMediaType(MediaType mediaType) {
return "application".equals(mediaType.getType()) && "msgpack".equals(mediaType.getSubtype());
}
}