JacksonShim.java

package org.honton.chas.datadog.apm.sender;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;

import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;

/**
 * Minimize values send in json message
 */
@Slf4j
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonShim implements ContextResolver<ObjectMapper> {

  private final static ObjectMapper MINIMAL_OBJECT_MAPPER = createMinimalObjectMapper();

  // see MsgPackProvider.createMinimalObjectMapper()
  private static ObjectMapper createMinimalObjectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
    return mapper;
  }

  @Override
  public ObjectMapper getContext(final Class<?> type) {
    return MINIMAL_OBJECT_MAPPER;
  }
}