diff options
author | gjoranv <gv@verizonmedia.com> | 2019-05-24 15:09:18 +0200 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2019-05-24 17:09:07 +0200 |
commit | ef338fb8cd3d0ee9614dee792d7f3f2269973ce2 (patch) | |
tree | 5e0944abbc1aefca89219fdc79604a3030e1fa33 /metrics-proxy | |
parent | a74d3f42dfbe0f896b84fc612c0143e9180ac0fa (diff) |
Extract creation of ObjectMapper to a new utility class.
Diffstat (limited to 'metrics-proxy')
2 files changed, 49 insertions, 25 deletions
diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/JacksonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/JacksonUtil.java new file mode 100644 index 00000000000..5c04f933c4a --- /dev/null +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/JacksonUtil.java @@ -0,0 +1,47 @@ +/* + * Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + */ + +package ai.vespa.metricsproxy.metric.model.json; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.Version; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.module.SimpleModule; + +import java.io.IOException; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.Locale; + +/** + * @author smorgrav + * @author gjoranv + */ +class JacksonUtil { + + /** + * Returns an object mapper with a custom floating point serializer to avoid scientific notation + */ + static ObjectMapper createObjectMapper() { + ObjectMapper mapper = new ObjectMapper(); + SimpleModule module = new SimpleModule("DoubleSerializer", + new Version(1, 0, 0, "", null, null)); + module.addSerializer(Double.class, new DoubleSerializer()); + mapper.registerModule(module); + return mapper; + } + + public static class DoubleSerializer extends JsonSerializer<Double> { + @Override + public void serialize(Double value, JsonGenerator jgen, + SerializerProvider provider) throws IOException { + DecimalFormat df = new DecimalFormat("#.####", new DecimalFormatSymbols(Locale.ENGLISH)); + df.setMaximumFractionDigits(13); + jgen.writeNumber(df.format(value)); + } + } + +} diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasArrayJsonModel.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasArrayJsonModel.java index fdac0521256..86249ba6e31 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasArrayJsonModel.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasArrayJsonModel.java @@ -7,20 +7,11 @@ package ai.vespa.metricsproxy.metric.model.json; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.module.SimpleModule; -import java.io.IOException; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; import java.util.ArrayList; import java.util.List; -import java.util.Locale; /** * Datamodel for the metricsproxy representation of multiple yamas checks. @@ -51,11 +42,7 @@ public class YamasArrayJsonModel { * @return Serialized json */ public String serialize() { - ObjectMapper mapper = new ObjectMapper(); - SimpleModule module = new SimpleModule("DoubleSerializer", - new Version(1, 0, 0, "", null, null)); - module.addSerializer(Double.class, new DoubleSerializer()); - mapper.registerModule(module); + ObjectMapper mapper = JacksonUtil.createObjectMapper(); if (metrics.size() > 0) { try { @@ -64,17 +51,7 @@ public class YamasArrayJsonModel { e.printStackTrace(); } } - - return "{}"; // Backwards compatability + return "{}"; // Backwards compatibility } - public class DoubleSerializer extends JsonSerializer<Double> { - @Override - public void serialize(Double value, JsonGenerator jgen, - SerializerProvider provider) throws IOException, JsonProcessingException { - DecimalFormat df = new DecimalFormat("#.####", new DecimalFormatSymbols(Locale.ENGLISH)); - df.setMaximumFractionDigits(13); - jgen.writeNumber(df.format(value)); - } - } } |