Skip to content

Commit cb7ef9e

Browse files
committed
Merge branch '2.x' into 3.x
2 parents 3c98f20 + f335ab2 commit cb7ef9e

File tree

4 files changed

+28
-26
lines changed

4 files changed

+28
-26
lines changed

src/main/java/tools/jackson/databind/deser/jdk/EnumSetDeserializer.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,9 @@ protected EnumSetDeserializer withResolved(ValueDeserializer<?> deser,
110110
@Override
111111
public boolean isCachable() {
112112
// One caveat: content deserializer should prevent caching
113-
if (_enumType.getValueHandler() != null) {
114-
return false;
115-
}
116-
return true;
113+
return _enumType.getValueHandler() == null;
117114
}
118-
115+
119116
@Override // since 2.12
120117
public LogicalType logicalType() {
121118
return LogicalType.Collection;

src/main/java/tools/jackson/databind/deser/jdk/ObjectArrayDeserializer.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt)
193193
Object[] chunk = buffer.resetAndStart();
194194
int ix = 0;
195195
JsonToken t;
196-
final TypeDeserializer typeDeser = _elementTypeDeserializer;
197196

198197
try {
199198
while ((t = p.nextToken()) != JsonToken.END_ARRAY) {
@@ -205,10 +204,8 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt)
205204
continue;
206205
}
207206
value = _nullProvider.getNullValue(ctxt);
208-
} else if (typeDeser == null) {
209-
value = _elementDeserializer.deserialize(p, ctxt);
210207
} else {
211-
value = _elementDeserializer.deserializeWithType(p, ctxt, typeDeser);
208+
value = _deserializeNoNullChecks(p, ctxt);
212209
}
213210
if (ix >= chunk.length) {
214211
chunk = buffer.appendCompletedChunk(chunk);
@@ -263,7 +260,6 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt,
263260
int ix = intoValue.length;
264261
Object[] chunk = buffer.resetAndStart(intoValue, ix);
265262
JsonToken t;
266-
final TypeDeserializer typeDeser = _elementTypeDeserializer;
267263

268264
try {
269265
while ((t = p.nextToken()) != JsonToken.END_ARRAY) {
@@ -274,10 +270,8 @@ public Object deserialize(JsonParser p, DeserializationContext ctxt,
274270
continue;
275271
}
276272
value = _nullProvider.getNullValue(ctxt);
277-
} else if (typeDeser == null) {
278-
value = _elementDeserializer.deserialize(p, ctxt);
279273
} else {
280-
value = _elementDeserializer.deserializeWithType(p, ctxt, typeDeser);
274+
value = _deserializeNoNullChecks(p, ctxt);
281275
}
282276
if (ix >= chunk.length) {
283277
chunk = buffer.appendCompletedChunk(chunk);
@@ -315,7 +309,7 @@ protected Byte[] deserializeFromBase64(JsonParser p, DeserializationContext ctxt
315309
// But then need to convert to wrappers
316310
Byte[] result = new Byte[b.length];
317311
for (int i = 0, len = b.length; i < len; ++i) {
318-
result[i] = Byte.valueOf(b[i]);
312+
result[i] = b[i];
319313
}
320314
return result;
321315
}
@@ -371,11 +365,7 @@ protected Object handleNonArray(JsonParser p, DeserializationContext ctxt)
371365
// if coercion failed, we can still add it to a list
372366
}
373367

374-
if (_elementTypeDeserializer == null) {
375-
value = _elementDeserializer.deserialize(p, ctxt);
376-
} else {
377-
value = _elementDeserializer.deserializeWithType(p, ctxt, _elementTypeDeserializer);
378-
}
368+
value = _deserializeNoNullChecks(p, ctxt);
379369
}
380370
// Ok: bit tricky, since we may want T[], not just Object[]
381371
Object[] result;
@@ -388,5 +378,20 @@ protected Object handleNonArray(JsonParser p, DeserializationContext ctxt)
388378
result[0] = value;
389379
return result;
390380
}
381+
382+
/**
383+
* Deserialize the content of the map.
384+
* If _elementTypeDeserializer is null, use _elementDeserializer.deserialize; if non-null,
385+
* use _elementDeserializer.deserializeWithType to deserialize value.
386+
* This method only performs deserialization and does not consider _skipNullValues, _nullProvider, etc.
387+
*/
388+
protected Object _deserializeNoNullChecks(JsonParser p, DeserializationContext ctxt)
389+
throws JacksonException
390+
{
391+
if (_elementTypeDeserializer == null) {
392+
return _elementDeserializer.deserialize(p, ctxt);
393+
}
394+
return _elementDeserializer.deserializeWithType(p, ctxt, _elementTypeDeserializer);
395+
}
391396
}
392397

src/main/java/tools/jackson/databind/deser/jdk/StringArrayDeserializer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,25 @@ public final class StringArrayDeserializer
3737
/**
3838
* Value serializer to use, if not the standard one (which is inlined)
3939
*/
40-
protected ValueDeserializer<String> _elementDeserializer;
40+
private final ValueDeserializer<String> _elementDeserializer;
4141

4242
/**
4343
* Handler we need for dealing with null values as elements
4444
*/
45-
protected final NullValueProvider _nullProvider;
45+
private final NullValueProvider _nullProvider;
4646

4747
/**
4848
* Specific override for this instance (from proper, or global per-type overrides)
4949
* to indicate whether single value may be taken to mean an unwrapped one-element array
5050
* or not. If null, left to global defaults.
5151
*/
52-
protected final Boolean _unwrapSingle;
52+
private final Boolean _unwrapSingle;
5353

5454
/**
5555
* Marker flag set if the <code>_nullProvider</code> indicates that all null
5656
* content values should be skipped (instead of being possibly converted).
5757
*/
58-
protected final boolean _skipNullValues;
58+
private final boolean _skipNullValues;
5959

6060
public StringArrayDeserializer() {
6161
this(null, null, null);

src/main/java/tools/jackson/databind/deser/jdk/StringCollectionDeserializer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,20 @@ public final class StringCollectionDeserializer
3232
* Value deserializer to use, if NOT the standard one
3333
* (if it is, will be null).
3434
*/
35-
protected final ValueDeserializer<String> _valueDeserializer;
35+
private final ValueDeserializer<String> _valueDeserializer;
3636

3737
// // Instance construction settings:
3838

3939
/**
4040
* Instantiator used in case custom handling is needed for creation.
4141
*/
42-
protected final ValueInstantiator _valueInstantiator;
42+
private final ValueInstantiator _valueInstantiator;
4343

4444
/**
4545
* Deserializer that is used iff delegate-based creator is
4646
* to be used for deserializing from JSON Object.
4747
*/
48-
protected final ValueDeserializer<Object> _delegateDeserializer;
48+
private final ValueDeserializer<Object> _delegateDeserializer;
4949

5050
// NOTE: no PropertyBasedCreator, as JSON Arrays have no properties
5151

0 commit comments

Comments
 (0)