Skip to content

Commit ab2db08

Browse files
committed
Do not create ObjectMapper repeatedly
1 parent e0feea3 commit ab2db08

1 file changed

Lines changed: 12 additions & 9 deletions

File tree

src/main/java/com/maxmind/minfraud/AbstractModel.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,33 @@
11
package com.maxmind.minfraud;
22

33
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import com.fasterxml.jackson.databind.DeserializationFeature;
45
import com.fasterxml.jackson.databind.MapperFeature;
56
import com.fasterxml.jackson.databind.ObjectMapper;
67
import com.fasterxml.jackson.databind.SerializationFeature;
8+
import com.fasterxml.jackson.databind.json.JsonMapper;
79
import com.fasterxml.jackson.databind.util.StdDateFormat;
810
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
911

1012
import java.io.IOException;
1113

1214
public abstract class AbstractModel {
15+
private final static ObjectMapper mapper = JsonMapper.builder()
16+
.addModule(new JavaTimeModule())
17+
.defaultDateFormat(new StdDateFormat().withColonInTimeZone(true))
18+
.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING)
19+
.disable(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS)
20+
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
21+
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
22+
.serializationInclusion(JsonInclude.Include.NON_NULL)
23+
.serializationInclusion(JsonInclude.Include.NON_EMPTY)
24+
.build();
1325

1426
/**
1527
* @return JSON representation of this object.
1628
* @throws IOException if there is an error serializing the object to JSON.
1729
*/
1830
public final String toJson() throws IOException {
19-
ObjectMapper mapper = new ObjectMapper();
20-
mapper.registerModule(new JavaTimeModule());
21-
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
22-
mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
23-
mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
24-
mapper.disable(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS);
25-
mapper.setDateFormat(new StdDateFormat().withColonInTimeZone(true));
26-
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
27-
2831
return mapper.writeValueAsString(this);
2932
}
3033

0 commit comments

Comments
 (0)