package com.fasterxml.jackson.databind.cfg; import java.util.Collections; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.*; public class SerConfigTest extends BaseMapTest { private final ObjectMapper MAPPER = new ObjectMapper(); public void testSerConfig() throws Exception { SerializationConfig config = MAPPER.getSerializationConfig(); assertTrue(config.hasSerializationFeatures(SerializationFeature.FAIL_ON_EMPTY_BEANS.getMask())); assertFalse(config.hasSerializationFeatures(SerializationFeature.CLOSE_CLOSEABLE.getMask())); assertEquals(JsonInclude.Value.empty(), config.getDefaultPropertyInclusion()); assertEquals(JsonInclude.Value.empty(), config.getDefaultPropertyInclusion(String.class)); assertFalse(config.useRootWrapping()); // if no changes then same config object assertSame(config, config.without()); assertSame(config, config.with()); assertSame(config, config.with(MAPPER.getSubtypeResolver())); // and then change SerializationConfig newConfig = config.with(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); assertNotSame(config, newConfig); config = newConfig; assertSame(config, config.with(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)); assertNotSame(config, config.with(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, false)); assertNotSame(config, config.with(SerializationFeature.INDENT_OUTPUT, SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS)); assertSame(config, config.withRootName((PropertyName) null)); // defaults to 'none' newConfig = config.withRootName(PropertyName.construct("foobar")); assertNotSame(config, newConfig); assertTrue(newConfig.useRootWrapping()); assertSame(config, config.with(config.getAttributes())); assertNotSame(config, config.with(new ContextAttributes.Impl(Collections.singletonMap("a", "b")))); assertNotNull(config.introspectDirectClassAnnotations(getClass())); } public void testGeneratorFeatures() throws Exception { SerializationConfig config = MAPPER.getSerializationConfig(); JsonFactory f = MAPPER.getFactory(); assertFalse(config.isEnabled(JsonGenerator.Feature.ESCAPE_NON_ASCII, f)); assertNotSame(config, config.with(JsonGenerator.Feature.ESCAPE_NON_ASCII)); SerializationConfig newConfig = config.withFeatures(JsonGenerator.Feature.ESCAPE_NON_ASCII, JsonGenerator.Feature.IGNORE_UNKNOWN); assertNotSame(config, newConfig); assertTrue(newConfig.isEnabled(JsonGenerator.Feature.ESCAPE_NON_ASCII, f)); assertNotSame(config, config.without(JsonGenerator.Feature.ESCAPE_NON_ASCII)); assertNotSame(config, config.withoutFeatures(JsonGenerator.Feature.ESCAPE_NON_ASCII, JsonGenerator.Feature.IGNORE_UNKNOWN)); } public void testFormatFeatures() throws Exception { SerializationConfig config = MAPPER.getSerializationConfig(); assertNotSame(config, config.with(BogusFormatFeature.FF_DISABLED_BY_DEFAULT)); assertNotSame(config, config.withFeatures(BogusFormatFeature.FF_DISABLED_BY_DEFAULT, BogusFormatFeature.FF_ENABLED_BY_DEFAULT)); assertNotSame(config, config.without(BogusFormatFeature.FF_ENABLED_BY_DEFAULT)); assertNotSame(config, config.withoutFeatures(BogusFormatFeature.FF_DISABLED_BY_DEFAULT, BogusFormatFeature.FF_ENABLED_BY_DEFAULT)); } }