@@ -1568,7 +1568,7 @@ protected JsonDeserializer<?> findOptionalStdDeserializer(DeserializationContext
1568
1568
{
1569
1569
return OptionalHandlerFactory .instance .findDeserializer (ctxt .getConfig (), type );
1570
1570
}
1571
-
1571
+
1572
1572
/*
1573
1573
/**********************************************************************
1574
1574
/* DeserializerFactory impl (partial): key deserializers
@@ -1728,7 +1728,7 @@ public JsonDeserializer<?> findDefaultDeserializer(DeserializationContext ctxt,
1728
1728
String clsName = rawType .getName ();
1729
1729
if (rawType .isPrimitive () || clsName .startsWith ("java." )) {
1730
1730
// Primitives/wrappers, other Numbers:
1731
- JsonDeserializer <?> deser = NumberDeserializers .find (rawType , clsName );
1731
+ JsonDeserializer <?> deser = NumberDeserializers .find (rawType );
1732
1732
if (deser == null ) {
1733
1733
deser = DateDeserializers .find (rawType , clsName );
1734
1734
}
@@ -1747,6 +1747,45 @@ public JsonDeserializer<?> findDefaultDeserializer(DeserializationContext ctxt,
1747
1747
return StdJdkDeserializers .find (rawType , clsName );
1748
1748
}
1749
1749
1750
+ /**
1751
+ * Method that can be used to check if databind module has deserializer
1752
+ * for given (likely JDK) type: explicit meaning that it is not automatically
1753
+ * generated for POJO.
1754
+ *<p>
1755
+ * This matches {@link Deserializers#hasDeserializerFor(Class)} method.
1756
+ *
1757
+ * @since 3.0
1758
+ */
1759
+ protected boolean hasExplicitDeserializerFor (Class <?> valueType ) {
1760
+ // Yes, we handle all Enum types
1761
+ if (Enum .class .isAssignableFrom (valueType )) {
1762
+ return true ;
1763
+ }
1764
+ // Numbers?
1765
+ final String clsName = valueType .getName ();
1766
+ if (clsName .startsWith ("java." )) {
1767
+ if (Number .class .isAssignableFrom (valueType )) {
1768
+ return NumberDeserializers .find (valueType ) != null ;
1769
+ }
1770
+ if ((valueType == CLASS_STRING )
1771
+ || (valueType == Boolean .class )
1772
+ || (valueType == EnumMap .class )
1773
+ || (valueType == AtomicReference .class )
1774
+ ) {
1775
+ return true ;
1776
+ }
1777
+ if (DateDeserializers .hasDeserializerFor (valueType )) {
1778
+ return true ;
1779
+ }
1780
+ } else if (clsName .startsWith ("com.fasterxml." )) {
1781
+ return JsonNode .class .isAssignableFrom (valueType )
1782
+ || (valueType == TokenBuffer .class );
1783
+ } else {
1784
+ return OptionalHandlerFactory .instance .hasDeserializerFor (valueType );
1785
+ }
1786
+ return false ;
1787
+ }
1788
+
1750
1789
private JavaType _findRemappedType (DeserializationConfig config , Class <?> rawType )
1751
1790
throws JsonMappingException
1752
1791
{
0 commit comments