27package dev.rafex.ether.json;
29import java.util.Objects;
30import java.util.function.Consumer;
32import com.fasterxml.jackson.annotation.JsonInclude;
33import com.fasterxml.jackson.databind.DeserializationFeature;
34import com.fasterxml.jackson.databind.Module;
35import com.fasterxml.jackson.databind.ObjectMapper;
36import com.fasterxml.jackson.databind.PropertyNamingStrategy;
37import com.fasterxml.jackson.databind.SerializationFeature;
39public final class JsonCodecBuilder {
41 private final ObjectMapper mapper;
43 private JsonCodecBuilder(
final ObjectMapper mapper) {
47 public static JsonCodecBuilder
create() {
51 public static JsonCodecBuilder
strict() {
55 public static JsonCodecBuilder
lenient() {
59 public JsonCodecBuilder
configure(
final Consumer<ObjectMapper> customizer) {
60 Objects.requireNonNull(customizer,
"customizer").accept(mapper);
65 mapper.
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, enabled);
70 mapper.
configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, enabled);
75 mapper.
configure(SerializationFeature.INDENT_OUTPUT, enabled);
79 public JsonCodecBuilder
namingStrategy(
final PropertyNamingStrategy strategy) {
80 mapper.setPropertyNamingStrategy(strategy);
85 mapper.setSerializationInclusion(
include);
static ObjectMapper defaultMapper()
JsonCodecBuilder writeDatesAsTimestamps(final boolean enabled)
JsonCodecBuilder namingStrategy(final PropertyNamingStrategy strategy)
JsonCodecBuilder registerModule(final Module module)
static JsonCodecBuilder strict()
JsonCodecBuilder include(final JsonInclude.Include include)
JsonCodecBuilder prettyPrint(final boolean enabled)
static JsonCodecBuilder lenient()
JsonCodecBuilder configure(final Consumer< ObjectMapper > customizer)
JsonCodecBuilder failOnUnknownProperties(final boolean enabled)
static JsonCodecBuilder create()