Adding a uniform configuration for all json/yaml mapper use cases: bugfix

This commit is contained in:
Sergey Skrobotov 2023-02-23 19:54:22 -08:00
parent a5e3b81a50
commit 6edb0d49e9
1 changed files with 1 additions and 19 deletions

View File

@ -7,18 +7,11 @@ package org.whispersystems.textsecuregcm.util;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.vdurmont.semver4j.Semver;
import java.io.IOException;
import javax.annotation.Nonnull;
public class SystemMapper {
@ -42,20 +35,9 @@ public class SystemMapper {
return mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE)
.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)
.setVisibility(PropertyAccessor.CREATOR, JsonAutoDetect.Visibility.PUBLIC_ONLY)
.registerModules(
applicationModule(),
new JavaTimeModule(),
new Jdk8Module());
}
private static Module applicationModule() {
return new SimpleModule()
.addDeserializer(Semver.class, new JsonDeserializer<>() {
@Override
public Semver deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException {
final String strValue = p.readValueAs(String.class);
return strValue != null ? new Semver(strValue) : null;
}
});
}
}