View Javadoc

1   package com.atlassian.vcache.internal.core.metrics;
2   
3   import com.atlassian.json.marshal.Jsonable;
4   import com.atlassian.vcache.internal.JsonableFactory;
5   import com.atlassian.vcache.internal.RequestMetrics;
6   import org.codehaus.jackson.annotate.JsonAutoDetect;
7   import org.codehaus.jackson.annotate.JsonMethod;
8   import org.codehaus.jackson.map.ObjectMapper;
9   
10  /**
11   * Implementation of {@link JsonableFactory} that uses the Jackson library.
12   *
13   * @since 1.0.0
14   */
15  public class JacksonJsonableFactory implements JsonableFactory {
16      // ObjectMapper is thread safe
17      private static final ObjectMapper OBJECT_MAPPER;
18  
19      static {
20          final ObjectMapper mapper = new ObjectMapper();
21          mapper.setVisibility(JsonMethod.FIELD, JsonAutoDetect.Visibility.ANY);
22          OBJECT_MAPPER = mapper;
23      }
24  
25      @Override
26      public Jsonable apply(final RequestMetrics requestMetrics) {
27          return writer -> OBJECT_MAPPER.writeValue(writer, requestMetrics);
28      }
29  }