1
1
package com .fasterxml .jackson .databind .deser .std ;
2
2
3
3
import java .io .IOException ;
4
+ import java .util .Collection ;
4
5
5
6
import com .fasterxml .jackson .core .JsonParser ;
6
7
9
10
import com .fasterxml .jackson .databind .deser .ResolvableDeserializer ;
10
11
import com .fasterxml .jackson .databind .jsontype .TypeDeserializer ;
11
12
import com .fasterxml .jackson .databind .type .LogicalType ;
13
+ import com .fasterxml .jackson .databind .util .AccessPattern ;
12
14
import com .fasterxml .jackson .databind .util .ClassUtil ;
13
15
import com .fasterxml .jackson .databind .util .Converter ;
14
16
@@ -210,11 +212,6 @@ protected Object _handleIncompatibleUpdateValue(JsonParser p, DeserializationCon
210
212
/**********************************************************
211
213
*/
212
214
213
- @ Override
214
- public JsonDeserializer <?> getDelegatee () {
215
- return _delegateDeserializer ;
216
- }
217
-
218
215
@ Override
219
216
public Class <?> handledType () {
220
217
return _delegateDeserializer .handledType ();
@@ -224,7 +221,45 @@ public Class<?> handledType() {
224
221
public LogicalType logicalType () {
225
222
return _delegateDeserializer .logicalType ();
226
223
}
227
-
224
+
225
+ // Let's assume we should be cachable if delegate is
226
+ @ Override
227
+ public boolean isCachable () {
228
+ return (_delegateDeserializer != null ) && _delegateDeserializer .isCachable ();
229
+ }
230
+
231
+ @ Override
232
+ public JsonDeserializer <?> getDelegatee () {
233
+ return _delegateDeserializer ;
234
+ }
235
+
236
+ @ Override
237
+ public Collection <Object > getKnownPropertyNames () {
238
+ return _delegateDeserializer .getKnownPropertyNames ();
239
+ }
240
+
241
+ /*
242
+ /**********************************************************
243
+ /* Null/empty/absent accessors
244
+ /**********************************************************
245
+ */
246
+
247
+ @ Override
248
+ public T getNullValue (DeserializationContext ctxt ) throws JsonMappingException {
249
+ return _convertIfNonNull (_delegateDeserializer .getNullValue (ctxt ));
250
+ }
251
+
252
+ @ Override
253
+ public AccessPattern getNullAccessPattern () {
254
+ return _delegateDeserializer .getNullAccessPattern ();
255
+ }
256
+
257
+ /*
258
+ /**********************************************************
259
+ /* Other accessors
260
+ /**********************************************************
261
+ */
262
+
228
263
@ Override // since 2.9
229
264
public Boolean supportsUpdate (DeserializationConfig config ) {
230
265
return _delegateDeserializer .supportsUpdate (config );
@@ -251,4 +286,16 @@ public Boolean supportsUpdate(DeserializationConfig config) {
251
286
protected T convertValue (Object delegateValue ) {
252
287
return _converter .convert (delegateValue );
253
288
}
289
+
290
+ /*
291
+ /**********************************************************
292
+ /* Helper methods
293
+ /**********************************************************
294
+ */
295
+
296
+ // @since 2.14.2
297
+ protected T _convertIfNonNull (Object delegateValue ) {
298
+ return (delegateValue == null ) ? null
299
+ : _converter .convert (delegateValue );
300
+ }
254
301
}
0 commit comments