1 package com.fasterxml.jackson.datatype.jdk8;
2
3 import java.util.*;
4
5 import com.fasterxml.jackson.databind.*;
6 import com.fasterxml.jackson.databind.deser.Deserializers;
7 import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
8 import com.fasterxml.jackson.databind.type.ReferenceType;
9
10 public class Jdk8Deserializers
11     extends Deserializers.Base
12     implements java.io.Serializable
13 {
14     private static final long serialVersionUID = 1L;
15
16     @Override // since 2.7
17     public JsonDeserializer<?> findReferenceDeserializer(ReferenceType refType,
18             DeserializationConfig config, BeanDescription beanDesc,
19             TypeDeserializer contentTypeDeserializer, JsonDeserializer<?> contentDeserializer)
20     {
21         if (refType.hasRawClass(Optional.class)) {
22             return new OptionalDeserializer(refType, null, contentTypeDeserializer,contentDeserializer);
23         }
24         // 21-Oct-2015, tatu: Should probably consider possibility of custom deserializer being
25         //    added to property; if so, `contentDeserializer` would not be null.
26         //    Room for future improvement
27         
28         if (refType.hasRawClass(OptionalInt.class)) {
29             return OptionalIntDeserializer.INSTANCE;
30         }
31         if (refType.hasRawClass(OptionalLong.class)) {
32             return OptionalLongDeserializer.INSTANCE;
33         }
34         if (refType.hasRawClass(OptionalDouble.class)) {
35             return OptionalDoubleDeserializer.INSTANCE;
36         }
37         return null;
38     }
39 }
40