Class OptionalHandlerFactory
- java.lang.Object
-
- com.fasterxml.jackson.databind.ext.OptionalHandlerFactory
-
- All Implemented Interfaces:
java.io.Serializable
public class OptionalHandlerFactory extends java.lang.Object implements java.io.Serializable
Helper class used for isolating details of handling optional+external types (javax.xml classes) from standard factories that offer them.Note that 2.7 changed handling to slightly less dynamic, to avoid having to traverse class hierarchy, which turned to be a performance issue in certain cases. Since DOM classes are assumed to exist on all Java 1.6 environments (yes, even on Android/GAE), this part could be simplified by slightly less dynamic lookups.
Also with 2.7 we are supporting JDK 1.7/Java 7 type(s).
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private static Java7Handlers
_jdk7Helper
private static java.lang.Class<?>
CLASS_DOM_DOCUMENT
private static java.lang.Class<?>
CLASS_DOM_NODE
private static java.lang.String
DESERIALIZER_FOR_DOM_DOCUMENT
private static java.lang.String
DESERIALIZER_FOR_DOM_NODE
private static java.lang.String
DESERIALIZERS_FOR_JAVAX_XML
static OptionalHandlerFactory
instance
private static java.lang.String
PACKAGE_PREFIX_JAVAX_XML
private static java.lang.String
SERIALIZER_FOR_DOM_NODE
private static java.lang.String
SERIALIZERS_FOR_JAVAX_XML
private static long
serialVersionUID
-
Constructor Summary
Constructors Modifier Constructor Description protected
OptionalHandlerFactory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description JsonDeserializer<?>
findDeserializer(JavaType type, DeserializationConfig config, BeanDescription beanDesc)
JsonSerializer<?>
findSerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc)
boolean
hasDeserializerFor(java.lang.Class<?> valueType)
private boolean
hasSuperClassStartingWith(java.lang.Class<?> rawType, java.lang.String prefix)
Since 2.7 we only need to check for class extension, as all implemented types are classes, not interfaces.private java.lang.Object
instantiate(java.lang.String className)
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
PACKAGE_PREFIX_JAVAX_XML
private static final java.lang.String PACKAGE_PREFIX_JAVAX_XML
- See Also:
- Constant Field Values
-
SERIALIZERS_FOR_JAVAX_XML
private static final java.lang.String SERIALIZERS_FOR_JAVAX_XML
- See Also:
- Constant Field Values
-
DESERIALIZERS_FOR_JAVAX_XML
private static final java.lang.String DESERIALIZERS_FOR_JAVAX_XML
- See Also:
- Constant Field Values
-
SERIALIZER_FOR_DOM_NODE
private static final java.lang.String SERIALIZER_FOR_DOM_NODE
- See Also:
- Constant Field Values
-
DESERIALIZER_FOR_DOM_DOCUMENT
private static final java.lang.String DESERIALIZER_FOR_DOM_DOCUMENT
- See Also:
- Constant Field Values
-
DESERIALIZER_FOR_DOM_NODE
private static final java.lang.String DESERIALIZER_FOR_DOM_NODE
- See Also:
- Constant Field Values
-
CLASS_DOM_NODE
private static final java.lang.Class<?> CLASS_DOM_NODE
-
CLASS_DOM_DOCUMENT
private static final java.lang.Class<?> CLASS_DOM_DOCUMENT
-
_jdk7Helper
private static final Java7Handlers _jdk7Helper
-
instance
public static final OptionalHandlerFactory instance
-
-
Method Detail
-
findSerializer
public JsonSerializer<?> findSerializer(SerializationConfig config, JavaType type, BeanDescription beanDesc)
-
findDeserializer
public JsonDeserializer<?> findDeserializer(JavaType type, DeserializationConfig config, BeanDescription beanDesc) throws JsonMappingException
- Throws:
JsonMappingException
-
hasDeserializerFor
public boolean hasDeserializerFor(java.lang.Class<?> valueType)
-
instantiate
private java.lang.Object instantiate(java.lang.String className)
-
hasSuperClassStartingWith
private boolean hasSuperClassStartingWith(java.lang.Class<?> rawType, java.lang.String prefix)
Since 2.7 we only need to check for class extension, as all implemented types are classes, not interfaces. This has performance implications for some cases, as we do not need to go over interfaces implemented, just superclasses- Since:
- 2.7
-
-