Skip to content

Commit 5599e79

Browse files
committed
Fix #221 - wire default radix via ConfigOverrides
1 parent 49424e5 commit 5599e79

File tree

15 files changed

+326
-165
lines changed

15 files changed

+326
-165
lines changed

src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -373,11 +373,6 @@ public DeserializationConfig withRootName(PropertyName rootName) {
373373
return new DeserializationConfig(this, rootName);
374374
}
375375

376-
@Override
377-
public DeserializationConfig withRadix(int radix) {
378-
return _withBase(_base.withRadix(radix));
379-
}
380-
381376
@Override
382377
public DeserializationConfig withView(Class<?> view) {
383378
return (_view == view) ? this : new DeserializationConfig(this, view);

src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,6 @@ public boolean useForType(JavaType t)
402402
// 16-May-2009, tatu: Ditto ^^^
403403
protected final static AnnotationIntrospector DEFAULT_ANNOTATION_INTROSPECTOR = new JacksonAnnotationIntrospector();
404404

405-
protected static final int DEFAULT_RADIX = 10;
406405
/**
407406
* Base settings contain defaults used for all {@link ObjectMapper}
408407
* instances.
@@ -420,9 +419,7 @@ public boolean useForType(JavaType t)
420419
// Since 2.12:
421420
new DefaultAccessorNamingStrategy.Provider(),
422421
// Since 2.16: [databind#2502] Add a way to configure Caches Jackson uses
423-
DefaultCacheProvider.defaultInstance(),
424-
//since 2.21: [databind#221] - support alternate radixes for numerical values serialized as strings
425-
DEFAULT_RADIX
422+
DefaultCacheProvider.defaultInstance()
426423
);
427424

428425
/*
@@ -1899,6 +1896,24 @@ public ObjectMapper setDefaultPropertyInclusion(JsonInclude.Value incl) {
18991896
return this;
19001897
}
19011898

1899+
/**
1900+
* Method for setting default alternative radix that applies to integral types for serialization
1901+
* and deserialization of such types as strings.
1902+
* This configuration override is applied for all integral properties for which there are no per-type
1903+
* or per-property overrides (via annotations or config overrides).
1904+
*<p>
1905+
* NOTE: in Jackson 3.x all configuration goes through {@code ObjectMapper} builders,
1906+
* see {@link com.fasterxml.jackson.databind.cfg.MapperBuilder},
1907+
* and this method will be removed from 3.0.
1908+
*
1909+
* @since 2.21
1910+
*/
1911+
public ObjectMapper setDefaultFormat(String radix) {
1912+
_configOverrides.setDefaultRadix(radix);
1913+
return this;
1914+
}
1915+
1916+
19021917
/**
19031918
* Short-cut for:
19041919
*<pre>
@@ -2548,19 +2563,6 @@ public ObjectMapper setDateFormat(DateFormat dateFormat)
25482563
return this;
25492564
}
25502565

2551-
/**
2552-
* Method for configuring the radix to use when serializing integer numbers
2553-
* as strings.
2554-
*
2555-
* @since 2.21
2556-
*/
2557-
public ObjectMapper setRadix(int radix)
2558-
{
2559-
_deserializationConfig = _deserializationConfig.withRadix(radix);
2560-
_serializationConfig = _serializationConfig.withRadix(radix);
2561-
return this;
2562-
}
2563-
25642566
/**
25652567
* @since 2.5
25662568
*/

src/main/java/com/fasterxml/jackson/databind/SerializationConfig.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -371,11 +371,6 @@ public SerializationConfig with(SubtypeResolver str) {
371371
return (str == _subtypeResolver)? this : new SerializationConfig(this, str);
372372
}
373373

374-
@Override
375-
public SerializationConfig withRadix(int radix) {
376-
return _withBase(_base.withRadix(radix));
377-
}
378-
379374
@Override
380375
public SerializationConfig withView(Class<?> view) {
381376
return (_view == view) ? this : new SerializationConfig(this, view);

src/main/java/com/fasterxml/jackson/databind/cfg/BaseSettings.java

Lines changed: 18 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ public final class BaseSettings
3535
*/
3636
TimeZone.getTimeZone("UTC");
3737

38-
private static final int DEFAULT_RADIX = 10;
39-
4038
/*
4139
/**********************************************************
4240
/* Configuration settings; introspection, related
@@ -157,28 +155,21 @@ public final class BaseSettings
157155
*/
158156
protected final CacheProvider _cacheProvider;
159157

160-
/**
161-
* Default radix to use when serializing/deserializing integers to string.
162-
*
163-
* @since 2.21
164-
*/
165-
protected final int _defaultRadix;
166-
167158
/*
168159
/**********************************************************
169160
/* Construction
170161
/**********************************************************
171162
*/
172163

173164
/**
174-
* @since 2.21
165+
* @since 2.19
175166
*/
176167
public BaseSettings(ClassIntrospector ci, AnnotationIntrospector ai,
177168
PropertyNamingStrategy pns, EnumNamingStrategy ens, TypeFactory tf,
178169
TypeResolverBuilder<?> typer, DateFormat dateFormat, HandlerInstantiator hi,
179170
Locale locale, TimeZone tz, Base64Variant defaultBase64,
180171
PolymorphicTypeValidator ptv, AccessorNamingStrategy.Provider accNaming,
181-
CacheProvider cacheProvider, int defaultRadix)
172+
CacheProvider cacheProvider)
182173
{
183174
_classIntrospector = ci;
184175
_annotationIntrospector = ai;
@@ -193,22 +184,7 @@ public BaseSettings(ClassIntrospector ci, AnnotationIntrospector ai,
193184
_defaultBase64 = defaultBase64;
194185
_typeValidator = ptv;
195186
_accessorNaming = accNaming;
196-
_cacheProvider = cacheProvider;
197-
_defaultRadix = defaultRadix;
198-
}
199-
200-
/**
201-
* @since 2.19
202-
* @deprecated since 2.21, use variant that takes defaultRadix
203-
*/
204-
public BaseSettings(ClassIntrospector ci, AnnotationIntrospector ai,
205-
PropertyNamingStrategy pns, EnumNamingStrategy ens, TypeFactory tf,
206-
TypeResolverBuilder<?> typer, DateFormat dateFormat, HandlerInstantiator hi,
207-
Locale locale, TimeZone tz, Base64Variant defaultBase64,
208-
PolymorphicTypeValidator ptv, AccessorNamingStrategy.Provider accNaming,
209-
CacheProvider cacheProvider)
210-
{
211-
this(ci, ai, pns, ens, tf, typer, dateFormat, hi, locale, tz, defaultBase64, ptv, accNaming, cacheProvider, DEFAULT_RADIX);
187+
_cacheProvider = cacheProvider;;
212188
}
213189

214190
/**
@@ -261,8 +237,7 @@ public BaseSettings copy() {
261237
_defaultBase64,
262238
_typeValidator,
263239
_accessorNaming,
264-
_cacheProvider,
265-
_defaultRadix);
240+
_cacheProvider);
266241
}
267242

268243
/*
@@ -277,7 +252,7 @@ public BaseSettings withClassIntrospector(ClassIntrospector ci) {
277252
}
278253
return new BaseSettings(ci, _annotationIntrospector, _propertyNamingStrategy, _enumNamingStrategy,
279254
_typeFactory, _typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
280-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
255+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
281256
}
282257

283258
public BaseSettings withAnnotationIntrospector(AnnotationIntrospector ai) {
@@ -286,7 +261,7 @@ public BaseSettings withAnnotationIntrospector(AnnotationIntrospector ai) {
286261
}
287262
return new BaseSettings(_classIntrospector, ai, _propertyNamingStrategy, _enumNamingStrategy,
288263
_typeFactory, _typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
289-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
264+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
290265
}
291266

292267
public BaseSettings withInsertedAnnotationIntrospector(AnnotationIntrospector ai) {
@@ -313,7 +288,7 @@ public BaseSettings withPropertyNamingStrategy(PropertyNamingStrategy pns) {
313288
}
314289
return new BaseSettings(_classIntrospector, _annotationIntrospector, pns, _enumNamingStrategy,
315290
_typeFactory, _typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
316-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
291+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
317292
}
318293

319294
/**
@@ -325,7 +300,7 @@ public BaseSettings withEnumNamingStrategy(EnumNamingStrategy ens) {
325300
}
326301
return new BaseSettings(_classIntrospector, _annotationIntrospector, _propertyNamingStrategy, ens,
327302
_typeFactory, _typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
328-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
303+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
329304
}
330305

331306
// @since 2.12
@@ -335,7 +310,7 @@ public BaseSettings withAccessorNaming(AccessorNamingStrategy.Provider p) {
335310
}
336311
return new BaseSettings(_classIntrospector, _annotationIntrospector, _propertyNamingStrategy, _enumNamingStrategy,
337312
_typeFactory, _typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
338-
_timeZone, _defaultBase64, _typeValidator, p, _cacheProvider, _defaultRadix);
313+
_timeZone, _defaultBase64, _typeValidator, p, _cacheProvider);
339314
}
340315

341316
public BaseSettings withTypeFactory(TypeFactory tf) {
@@ -344,7 +319,7 @@ public BaseSettings withTypeFactory(TypeFactory tf) {
344319
}
345320
return new BaseSettings(_classIntrospector, _annotationIntrospector, _propertyNamingStrategy, _enumNamingStrategy,
346321
tf, _typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
347-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
322+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
348323
}
349324

350325
public BaseSettings withTypeResolverBuilder(TypeResolverBuilder<?> typer) {
@@ -353,7 +328,7 @@ public BaseSettings withTypeResolverBuilder(TypeResolverBuilder<?> typer) {
353328
}
354329
return new BaseSettings(_classIntrospector, _annotationIntrospector, _propertyNamingStrategy, _enumNamingStrategy,
355330
_typeFactory, typer, _dateFormat, _handlerInstantiator, _locale,
356-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
331+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
357332
}
358333

359334
public BaseSettings withDateFormat(DateFormat df) {
@@ -367,7 +342,7 @@ public BaseSettings withDateFormat(DateFormat df) {
367342
}
368343
return new BaseSettings(_classIntrospector, _annotationIntrospector, _propertyNamingStrategy, _enumNamingStrategy,
369344
_typeFactory, _typeResolverBuilder, df, _handlerInstantiator, _locale,
370-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
345+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
371346
}
372347

373348
public BaseSettings withHandlerInstantiator(HandlerInstantiator hi) {
@@ -376,7 +351,7 @@ public BaseSettings withHandlerInstantiator(HandlerInstantiator hi) {
376351
}
377352
return new BaseSettings(_classIntrospector, _annotationIntrospector, _propertyNamingStrategy, _enumNamingStrategy,
378353
_typeFactory, _typeResolverBuilder, _dateFormat, hi, _locale,
379-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
354+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
380355
}
381356

382357
public BaseSettings with(Locale l) {
@@ -385,7 +360,7 @@ public BaseSettings with(Locale l) {
385360
}
386361
return new BaseSettings(_classIntrospector, _annotationIntrospector, _propertyNamingStrategy, _enumNamingStrategy,
387362
_typeFactory,_typeResolverBuilder, _dateFormat, _handlerInstantiator, l,
388-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
363+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
389364
}
390365

391366
/**
@@ -408,7 +383,7 @@ public BaseSettings with(TimeZone tz)
408383
return new BaseSettings(_classIntrospector, _annotationIntrospector,
409384
_propertyNamingStrategy, _enumNamingStrategy, _typeFactory,
410385
_typeResolverBuilder, df, _handlerInstantiator, _locale,
411-
tz, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
386+
tz, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider);
412387
}
413388

414389
/**
@@ -421,7 +396,7 @@ public BaseSettings with(Base64Variant base64) {
421396
return new BaseSettings(_classIntrospector, _annotationIntrospector,
422397
_propertyNamingStrategy, _enumNamingStrategy, _typeFactory,
423398
_typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
424-
_timeZone, base64, _typeValidator, _accessorNaming, _cacheProvider, _defaultRadix);
399+
_timeZone, base64, _typeValidator, _accessorNaming, _cacheProvider);
425400
}
426401

427402
/**
@@ -434,7 +409,7 @@ public BaseSettings with(PolymorphicTypeValidator v) {
434409
return new BaseSettings(_classIntrospector, _annotationIntrospector,
435410
_propertyNamingStrategy, _enumNamingStrategy, _typeFactory,
436411
_typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
437-
_timeZone, _defaultBase64, v, _accessorNaming, _cacheProvider, _defaultRadix);
412+
_timeZone, _defaultBase64, v, _accessorNaming, _cacheProvider);
438413
}
439414

440415
/**
@@ -450,23 +425,7 @@ public BaseSettings with(CacheProvider cacheProvider) {
450425
return new BaseSettings(_classIntrospector, _annotationIntrospector,
451426
_propertyNamingStrategy, _enumNamingStrategy, _typeFactory,
452427
_typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
453-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, cacheProvider, _defaultRadix);
454-
}
455-
456-
/**
457-
* Fluent factory for constructing a new instance with provided default radix.
458-
*
459-
* @return a new instance with provided defaultRadix.
460-
* @since 2.21
461-
*/
462-
public BaseSettings withRadix(int defaultRadix) {
463-
if (defaultRadix == _defaultRadix) {
464-
return this;
465-
}
466-
return new BaseSettings(_classIntrospector, _annotationIntrospector,
467-
_propertyNamingStrategy, _enumNamingStrategy, _typeFactory,
468-
_typeResolverBuilder, _dateFormat, _handlerInstantiator, _locale,
469-
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, _cacheProvider, defaultRadix);
428+
_timeZone, _defaultBase64, _typeValidator, _accessorNaming, cacheProvider);
470429
}
471430

472431
/*
@@ -544,15 +503,6 @@ public boolean hasExplicitTimeZone() {
544503
public Base64Variant getBase64Variant() {
545504
return _defaultBase64;
546505
}
547-
548-
/**
549-
* Method indicating base to use for serializing/deserializing integer numbers as a string.
550-
*
551-
* @since 2.21
552-
*/
553-
public int getRadix() {
554-
return _defaultRadix;
555-
}
556506

557507
/**
558508
* @since 2.16

0 commit comments

Comments
 (0)