Skip to content

Commit f335ab2

Browse files
committed
Merge branch '2.19' into 2.x
2 parents 961892d + 29d498a commit f335ab2

File tree

4 files changed

+34
-30
lines changed

4 files changed

+34
-30
lines changed

src/main/java/com/fasterxml/jackson/databind/deser/std/EnumSetDeserializer.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,9 @@ public EnumSetDeserializer withResolved(JsonDeserializer<?> deser,
139139
@Override
140140
public boolean isCachable() {
141141
// One caveat: content deserializer should prevent caching
142-
if (_enumType.getValueHandler() != null) {
143-
return false;
144-
}
145-
return true;
142+
return _enumType.getValueHandler() == null;
146143
}
147-
144+
148145
@Override // since 2.12
149146
public LogicalType logicalType() {
150147
return LogicalType.Collection;

src/main/java/com/fasterxml/jackson/databind/deser/std/ObjectArrayDeserializer.java

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt)
201201
Object[] chunk = buffer.resetAndStart();
202202
int ix = 0;
203203
JsonToken t;
204-
final TypeDeserializer typeDeser = _elementTypeDeserializer;
205204

206205
try {
207206
while ((t = p.nextToken()) != JsonToken.END_ARRAY) {
@@ -213,10 +212,8 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt)
213212
continue;
214213
}
215214
value = _nullProvider.getNullValue(ctxt);
216-
} else if (typeDeser == null) {
217-
value = _elementDeserializer.deserialize(p, ctxt);
218215
} else {
219-
value = _elementDeserializer.deserializeWithType(p, ctxt, typeDeser);
216+
value = _deserializeNoNullChecks(p, ctxt);
220217
}
221218
if (ix >= chunk.length) {
222219
chunk = buffer.appendCompletedChunk(chunk);
@@ -269,7 +266,6 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt,
269266
int ix = intoValue.length;
270267
Object[] chunk = buffer.resetAndStart(intoValue, ix);
271268
JsonToken t;
272-
final TypeDeserializer typeDeser = _elementTypeDeserializer;
273269

274270
try {
275271
while ((t = p.nextToken()) != JsonToken.END_ARRAY) {
@@ -280,10 +276,8 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt,
280276
continue;
281277
}
282278
value = _nullProvider.getNullValue(ctxt);
283-
} else if (typeDeser == null) {
284-
value = _elementDeserializer.deserialize(p, ctxt);
285279
} else {
286-
value = _elementDeserializer.deserializeWithType(p, ctxt, typeDeser);
280+
value = _deserializeNoNullChecks(p, ctxt);
287281
}
288282
if (ix >= chunk.length) {
289283
chunk = buffer.appendCompletedChunk(chunk);
@@ -320,7 +314,7 @@ protected Byte[] deserializeFromBase64(JsonParser p, DeserializationContext ctxt
320314
// But then need to convert to wrappers
321315
Byte[] result = new Byte[b.length];
322316
for (int i = 0, len = b.length; i < len; ++i) {
323-
result[i] = Byte.valueOf(b[i]);
317+
result[i] = b[i];
324318
}
325319
return result;
326320
}
@@ -375,11 +369,7 @@ protected Object handleNonArray(JsonParser p, DeserializationContext ctxt)
375369
// if coercion failed, we can still add it to a list
376370
}
377371

378-
if (_elementTypeDeserializer == null) {
379-
value = _elementDeserializer.deserialize(p, ctxt);
380-
} else {
381-
value = _elementDeserializer.deserializeWithType(p, ctxt, _elementTypeDeserializer);
382-
}
372+
value = _deserializeNoNullChecks(p, ctxt);
383373
}
384374
// Ok: bit tricky, since we may want T[], not just Object[]
385375
Object[] result;
@@ -392,5 +382,21 @@ protected Object handleNonArray(JsonParser p, DeserializationContext ctxt)
392382
result[0] = value;
393383
return result;
394384
}
385+
386+
/**
387+
* Deserialize the content of the map.
388+
* If _elementTypeDeserializer is null, use _elementDeserializer.deserialize; if non-null,
389+
* use _elementDeserializer.deserializeWithType to deserialize value.
390+
* This method only performs deserialization and does not consider _skipNullValues, _nullProvider, etc.
391+
* @since 2.19.2
392+
*/
393+
protected Object _deserializeNoNullChecks(JsonParser p, DeserializationContext ctxt)
394+
throws IOException
395+
{
396+
if (_elementTypeDeserializer == null) {
397+
return _elementDeserializer.deserialize(p, ctxt);
398+
}
399+
return _elementDeserializer.deserializeWithType(p, ctxt, _elementTypeDeserializer);
400+
}
395401
}
396402

src/main/java/com/fasterxml/jackson/databind/deser/std/StringArrayDeserializer.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@ public final class StringArrayDeserializer
4040
/**
4141
* Value serializer to use, if not the standard one (which is inlined)
4242
*/
43-
protected JsonDeserializer<String> _elementDeserializer;
43+
private final JsonDeserializer<String> _elementDeserializer;
4444

4545
/**
4646
* Handler we need for dealing with null values as elements
4747
*
4848
* @since 2.9
4949
*/
50-
protected final NullValueProvider _nullProvider;
50+
private final NullValueProvider _nullProvider;
5151

5252
/**
5353
* Specific override for this instance (from proper, or global per-type overrides)
@@ -56,22 +56,22 @@ public final class StringArrayDeserializer
5656
*
5757
* @since 2.7
5858
*/
59-
protected final Boolean _unwrapSingle;
59+
private final Boolean _unwrapSingle;
6060

6161
/**
6262
* Marker flag set if the <code>_nullProvider</code> indicates that all null
6363
* content values should be skipped (instead of being possibly converted).
6464
*
6565
* @since 2.9
6666
*/
67-
protected final boolean _skipNullValues;
67+
private final boolean _skipNullValues;
6868

6969
public StringArrayDeserializer() {
7070
this(null, null, null);
7171
}
7272

7373
@SuppressWarnings("unchecked")
74-
protected StringArrayDeserializer(JsonDeserializer<?> deser,
74+
private StringArrayDeserializer(JsonDeserializer<?> deser,
7575
NullValueProvider nuller, Boolean unwrapSingle) {
7676
super(String[].class);
7777
_elementDeserializer = (JsonDeserializer<String>) deser;
@@ -184,7 +184,7 @@ public String[] deserialize(JsonParser p, DeserializationContext ctxt) throws IO
184184
/**
185185
* Offlined version used when we do not use the default deserialization method.
186186
*/
187-
protected final String[] _deserializeCustom(JsonParser p, DeserializationContext ctxt,
187+
private String[] _deserializeCustom(JsonParser p, DeserializationContext ctxt,
188188
String[] old) throws IOException
189189
{
190190
final ObjectBuffer buffer = ctxt.leaseObjectBuffer();

src/main/java/com/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,20 @@ public final class StringCollectionDeserializer
3737
* Value deserializer to use, if NOT the standard one
3838
* (if it is, will be null).
3939
*/
40-
protected final JsonDeserializer<String> _valueDeserializer;
40+
private final JsonDeserializer<String> _valueDeserializer;
4141

4242
// // Instance construction settings:
4343

4444
/**
4545
* Instantiator used in case custom handling is needed for creation.
4646
*/
47-
protected final ValueInstantiator _valueInstantiator;
47+
private final ValueInstantiator _valueInstantiator;
4848

4949
/**
5050
* Deserializer that is used iff delegate-based creator is
5151
* to be used for deserializing from JSON Object.
5252
*/
53-
protected final JsonDeserializer<Object> _delegateDeserializer;
53+
private final JsonDeserializer<Object> _delegateDeserializer;
5454

5555
// NOTE: no PropertyBasedCreator, as JSON Arrays have no properties
5656

@@ -67,7 +67,7 @@ public StringCollectionDeserializer(JavaType collectionType,
6767
}
6868

6969
@SuppressWarnings("unchecked")
70-
protected StringCollectionDeserializer(JavaType collectionType,
70+
private StringCollectionDeserializer(JavaType collectionType,
7171
ValueInstantiator valueInstantiator, JsonDeserializer<?> delegateDeser,
7272
JsonDeserializer<?> valueDeser,
7373
NullValueProvider nuller, Boolean unwrapSingle)
@@ -78,7 +78,7 @@ protected StringCollectionDeserializer(JavaType collectionType,
7878
_delegateDeserializer = (JsonDeserializer<Object>) delegateDeser;
7979
}
8080

81-
protected StringCollectionDeserializer withResolved(JsonDeserializer<?> delegateDeser,
81+
private StringCollectionDeserializer withResolved(JsonDeserializer<?> delegateDeser,
8282
JsonDeserializer<?> valueDeser,
8383
NullValueProvider nuller, Boolean unwrapSingle)
8484
{
@@ -107,6 +107,7 @@ public LogicalType logicalType() {
107107
/* Validation, post-processing
108108
/**********************************************************
109109
*/
110+
110111
@Override
111112
public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
112113
BeanProperty property) throws JsonMappingException

0 commit comments

Comments
 (0)