package com.fasterxml.jackson.databind.json;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.core.json.JsonReadFeature;
import com.fasterxml.jackson.core.json.JsonWriteFeature;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.cfg.MapperBuilder;
import com.fasterxml.jackson.databind.cfg.PackageVersion;

JSON-format specific ObjectMapper implementation.
Since:2.10
/** * JSON-format specific {@link ObjectMapper} implementation. * * @since 2.10 */
public class JsonMapper extends ObjectMapper { private static final long serialVersionUID = 1L;
Base implementation for "Vanilla" ObjectMapper, used with JSON dataformat backend.
Since:2.10
/** * Base implementation for "Vanilla" {@link ObjectMapper}, used with * JSON dataformat backend. * * @since 2.10 */
public static class Builder extends MapperBuilder<JsonMapper, Builder> { public Builder(JsonMapper m) { super(m); } public Builder enable(JsonReadFeature... features) { for (JsonReadFeature f : features) { _mapper.enable(f.mappedFeature()); } return this; } public Builder disable(JsonReadFeature... features) { for (JsonReadFeature f : features) { _mapper.disable(f.mappedFeature()); } return this; } public Builder configure(JsonReadFeature f, boolean state) { if (state) { _mapper.enable(f.mappedFeature()); } else { _mapper.disable(f.mappedFeature()); } return this; } public Builder enable(JsonWriteFeature... features) { for (JsonWriteFeature f : features) { _mapper.enable(f.mappedFeature()); } return this; } public Builder disable(JsonWriteFeature... features) { for (JsonWriteFeature f : features) { _mapper.disable(f.mappedFeature()); } return this; } public Builder configure(JsonWriteFeature f, boolean state) { if (state) { _mapper.enable(f.mappedFeature()); } else { _mapper.disable(f.mappedFeature()); } return this; } } /* /********************************************************** /* Life-cycle, constructors /********************************************************** */ public JsonMapper() { this(new JsonFactory()); } public JsonMapper(JsonFactory f) { super(f); } protected JsonMapper(JsonMapper src) { super(src); } @Override public JsonMapper copy() { _checkInvalidCopy(JsonMapper.class); return new JsonMapper(this); } /* /********************************************************** /* Life-cycle, builders /********************************************************** */ public static JsonMapper.Builder builder() { return new Builder(new JsonMapper()); } public static Builder builder(JsonFactory streamFactory) { return new Builder(new JsonMapper(streamFactory)); } public JsonMapper.Builder rebuild() { // 09-Dec-2018, tatu: Not as good as what 3.0 has wrt immutability, but best approximation // we have for 2.x return new Builder(this.copy()); } /* /********************************************************** /* Standard method overrides /********************************************************** */ @Override public Version version() { return PackageVersion.VERSION; } @Override public JsonFactory getFactory() { return _jsonFactory; } /* /********************************************************** /* JSON-specific accessors, mutators /********************************************************** */ // // // 25-Oct-2018, tatu: Since for 2.x these will simply map to legacy settings, // // // we will fake them public boolean isEnabled(JsonReadFeature f) { return isEnabled(f.mappedFeature()); } public boolean isEnabled(JsonWriteFeature f) { return isEnabled(f.mappedFeature()); } }