@@ -193,7 +193,7 @@ private JavaType _mapAbstractType2(DeserializationConfig config, JavaType type)
193
193
194
194
/*
195
195
/**********************************************************
196
- /* JsonDeserializerFactory impl (partial): ValueInstantiators
196
+ /* DeserializerFactory impl (partial): ValueInstantiators
197
197
/**********************************************************
198
198
*/
199
199
@@ -1108,7 +1108,7 @@ protected PropertyMetadata _getSetterInfo(DeserializationContext ctxt,
1108
1108
1109
1109
/*
1110
1110
/**********************************************************
1111
- /* JsonDeserializerFactory impl: array deserializers
1111
+ /* DeserializerFactory impl: array deserializers
1112
1112
/**********************************************************
1113
1113
*/
1114
1114
@@ -1154,7 +1154,7 @@ public JsonDeserializer<?> createArrayDeserializer(DeserializationContext ctxt,
1154
1154
1155
1155
/*
1156
1156
/**********************************************************************
1157
- /* JsonDeserializerFactory impl: Collection(-like) deserializers
1157
+ /* DeserializerFactory impl: Collection(-like) deserializers
1158
1158
/**********************************************************************
1159
1159
*/
1160
1160
@@ -1283,7 +1283,7 @@ public JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationConte
1283
1283
1284
1284
/*
1285
1285
/**********************************************************
1286
- /* JsonDeserializerFactory impl: Map(-like) deserializers
1286
+ /* DeserializerFactory impl: Map(-like) deserializers
1287
1287
/**********************************************************
1288
1288
*/
1289
1289
@@ -1443,7 +1443,7 @@ public JsonDeserializer<?> createMapLikeDeserializer(DeserializationContext ctxt
1443
1443
1444
1444
/*
1445
1445
/**********************************************************
1446
- /* JsonDeserializerFactory impl: other types
1446
+ /* DeserializerFactory impl: other types
1447
1447
/**********************************************************
1448
1448
*/
1449
1449
@@ -1560,7 +1560,7 @@ public JsonDeserializer<?> createReferenceDeserializer(DeserializationContext ct
1560
1560
1561
1561
/*
1562
1562
/**********************************************************
1563
- /* JsonDeserializerFactory impl (partial): type deserializers
1563
+ /* DeserializerFactory impl (partial): type deserializers
1564
1564
/**********************************************************
1565
1565
*/
1566
1566
@@ -1616,13 +1616,13 @@ protected JsonDeserializer<?> findOptionalStdDeserializer(DeserializationContext
1616
1616
{
1617
1617
return OptionalHandlerFactory .instance .findDeserializer (type , ctxt .getConfig (), beanDesc );
1618
1618
}
1619
-
1619
+
1620
1620
/*
1621
1621
/**********************************************************
1622
- /* JsonDeserializerFactory impl (partial): key deserializers
1622
+ /* DeserializerFactory impl (partial): key deserializers
1623
1623
/**********************************************************
1624
1624
*/
1625
-
1625
+
1626
1626
@ Override
1627
1627
public KeyDeserializer createKeyDeserializer (DeserializationContext ctxt ,
1628
1628
JavaType type )
@@ -1718,6 +1718,44 @@ private KeyDeserializer _createEnumKeyDeserializer(DeserializationContext ctxt,
1718
1718
return StdKeyDeserializers .constructEnumKeyDeserializer (enumRes );
1719
1719
}
1720
1720
1721
+ /*
1722
+ /**********************************************************
1723
+ /* DeserializerFactory impl: checking explicitly registered desers
1724
+ /**********************************************************
1725
+ */
1726
+
1727
+ @ Override
1728
+ public boolean hasExplicitDeserializerFor (DeserializationConfig config ,
1729
+ Class <?> valueType ) {
1730
+ // Yes, we handle all Enum types
1731
+ if (Enum .class .isAssignableFrom (valueType )) {
1732
+ return true ;
1733
+ }
1734
+ // Numbers?
1735
+ final String clsName = valueType .getName ();
1736
+ if (clsName .startsWith ("java." )) {
1737
+ if (Number .class .isAssignableFrom (valueType )) {
1738
+ return NumberDeserializers .find (valueType , clsName ) != null ;
1739
+ }
1740
+ if ((valueType == CLASS_STRING )
1741
+ || (valueType == Boolean .class )
1742
+ || (valueType == EnumMap .class )
1743
+ || (valueType == AtomicReference .class )
1744
+ ) {
1745
+ return true ;
1746
+ }
1747
+ if (DateDeserializers .hasDeserializerFor (valueType )) {
1748
+ return true ;
1749
+ }
1750
+ } else if (clsName .startsWith ("com.fasterxml." )) {
1751
+ return JsonNode .class .isAssignableFrom (valueType )
1752
+ || (valueType == TokenBuffer .class );
1753
+ } else {
1754
+ return OptionalHandlerFactory .instance .hasDeserializerFor (valueType );
1755
+ }
1756
+ return false ;
1757
+ }
1758
+
1721
1759
/*
1722
1760
/**********************************************************
1723
1761
/* Extended API
0 commit comments