@Override public JsonGenerator enable(Feature f) { final int mask = f.getMask(); _features |= mask; if ((mask & DERIVED_FEATURES_MASK) != 0) { // why not switch? Requires addition of a generated class, alas if (f == Feature.WRITE_NUMBERS_AS_STRINGS) { _cfgNumbersAsStrings = true; } else if (f == Feature.ESCAPE_NON_ASCII) { setHighestNonEscapedChar(127); } else if (f == Feature.STRICT_DUPLICATE_DETECTION) { if (_writeContext.getDupDetector() == null) { // but only if disabled currently _writeContext = _writeContext.withDupDetector(DupDetector.rootDetector(this)); } } } return this; }
protected GeneratorBase(int features, ObjectCodec codec) { super(); _features = features; _objectCodec = codec; DupDetector dups = Feature.STRICT_DUPLICATE_DETECTION.enabledIn(features) ? DupDetector.rootDetector(this) : null; _writeContext = JsonWriteContext.createRootContext(dups); _cfgNumbersAsStrings = Feature.WRITE_NUMBERS_AS_STRINGS.enabledIn(features); }
@VisibleForTesting public void initJsonFactory(Properties config) { boolean hasFeature = false; JsonFactory tmpJsonFactory = new JsonFactory(); for (Map.Entry entry : config.entrySet()) { String key = (String)entry.getKey(); if (key.startsWith(JSON_MAPPER_PREFIX)) { JsonGenerator.Feature feature = JsonGenerator.Feature.valueOf(key.substring(JSON_MAPPER_PREFIX .length())); if (feature != null) { hasFeature = true; boolean enabled = Boolean.parseBoolean((String)entry.getValue()); tmpJsonFactory.configure(feature, enabled); } } } if (hasFeature) { jsonFactory = tmpJsonFactory; } }
/** * Fluent factory method that will construct and return a new configuration * object instance with specified features enabled. * * @since 2.5 */ public SerializationConfig withFeatures(JsonGenerator.Feature... features) { int newSet = _generatorFeatures; int newMask = _generatorFeaturesToChange; for (JsonGenerator.Feature f : features) { int mask = f.getMask(); newSet |= mask; newMask |= mask; } return ((_generatorFeatures == newSet) && (_generatorFeaturesToChange == newMask)) ? this : new SerializationConfig(this, _mapperFeatures, _serFeatures, newSet, newMask, _formatWriteFeatures, _formatWriteFeaturesToChange); }
@Override public JsonGenerator disable(Feature f) { final int mask = f.getMask(); _features &= ~mask; if ((mask & DERIVED_FEATURES_MASK) != 0) { if (f == Feature.WRITE_NUMBERS_AS_STRINGS) { _cfgNumbersAsStrings = false; } else if (f == Feature.ESCAPE_NON_ASCII) { setHighestNonEscapedChar(0); } else if (f == Feature.STRICT_DUPLICATE_DETECTION) { _writeContext = _writeContext.withDupDetector(null); } } return this; }
mapper.configure((SerializationFeature) feature, featureValue); assert mapper.getSerializationConfig().isEnabled( (SerializationFeature) feature) == featureValue; getLogger() + " with " + mapper.getSerializationConfig() .isEnabled( (SerializationFeature) feature)); } else if (configFeature assert mapper.getDeserializationConfig().isEnabled( (MapperFeature) feature) == featureValue; assert mapper.getSerializationConfig().isEnabled( (MapperFeature) feature) == featureValue; getLogger() featureValue); } else if (configFeature.equals(JsonGenerator.class)) { com.fasterxml.jackson.core.JsonGenerator.Feature genFeature = JsonGenerator.Feature.valueOf(featureKey); getLogger() .info("initializing parser feature: "
/** * Helper method used to serialize a {@link java.math.BigDecimal} as a String, * for serialization, taking into account configuration settings * * @since 2.7.7 */ protected String _asString(BigDecimal value) throws IOException { if (Feature.WRITE_BIGDECIMAL_AS_PLAIN.enabledIn(_features)) { // 24-Aug-2016, tatu: [core#315] prevent possible DoS vector int scale = value.scale(); if ((scale < -MAX_BIG_DECIMAL_SCALE) || (scale > MAX_BIG_DECIMAL_SCALE)) { _reportError(String.format( "Attempt to write plain `java.math.BigDecimal` (see JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN) with illegal scale (%d): needs to be between [-%d, %d]", scale, MAX_BIG_DECIMAL_SCALE, MAX_BIG_DECIMAL_SCALE)); } return value.toPlainString(); } return value.toString(); }
@Override public JsonGenerator disable(Feature f) { _features &= ~f.getMask(); if (f == Feature.WRITE_NUMBERS_AS_STRINGS) { _cfgNumbersAsStrings = false; } else if (f == Feature.ESCAPE_NON_ASCII) { setHighestNonEscapedChar(0); } return this; }
@Override protected void _checkStdFeatureChanges(int newFeatureFlags, int changedFeatures) { super._checkStdFeatureChanges(newFeatureFlags, changedFeatures); _cfgUnqNames = !Feature.QUOTE_FIELD_NAMES.enabledIn(newFeatureFlags); }
PrettyPrinter pp = constructDefaultPrettyPrinter(); if (pp != null) { g.setPrettyPrinter(pp); int f = JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN.getMask(); newFlags |= f; mask |= f;
/** * Check whether specified generator feature is enabled. */ public final boolean isEnabled(JsonGenerator.Feature f) { return (_generatorFeatures & f.getMask()) != 0; }
@Override public JsonGenerator enable(Feature f) { _generatorFeatures |= f.getMask(); return this; }
/** * @since 2.5 */ protected GeneratorBase(int features, ObjectCodec codec, JsonWriteContext ctxt) { super(); _features = features; _objectCodec = codec; _writeContext = ctxt; _cfgNumbersAsStrings = Feature.WRITE_NUMBERS_AS_STRINGS.enabledIn(features); }
public JsonGeneratorImpl(IOContext ctxt, int features, ObjectCodec codec) { super(features, codec); _ioContext = ctxt; if (Feature.ESCAPE_NON_ASCII.enabledIn(features)) { // inlined `setHighestNonEscapedChar()` _maximumNonEscapedChar = 127; } _cfgUnqNames = !Feature.QUOTE_FIELD_NAMES.enabledIn(features); }
/** * Method for enabling specified generator features * (check {@link JsonGenerator.Feature} for list of features) */ public JsonFactory enable(JsonGenerator.Feature f) { _generatorFeatures |= f.getMask(); return this; }
/** * Method for disabling specified generator feature * (check {@link JsonGenerator.Feature} for list of features) */ public JsonFactory disable(JsonGenerator.Feature f) { _generatorFeatures &= ~f.getMask(); return this; }
@Override public JsonGenerator disable(Feature f) { _generatorFeatures &= ~f.getMask(); return this; }
/** * Method that calculates bit set (flags) of all features that * are enabled by default. */ public static int collectDefaults() { int flags = 0; for (Feature f : values()) { if (f.enabledByDefault()) { flags |= f.getMask(); } } return flags; }
private Feature(boolean defaultState) { _defaultState = defaultState; _mask = (1 << ordinal()); }
@Override public void writeNumber(double d) throws IOException { if (_cfgNumbersAsStrings || (((Double.isNaN(d) || Double.isInfinite(d)) && Feature.QUOTE_NON_NUMERIC_NUMBERS.enabledIn(_features)))) { writeString(String.valueOf(d)); return; } // What is the max length for doubles? 40 chars? _verifyValueWrite(WRITE_NUMBER); writeRaw(String.valueOf(d)); }