Class 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 Detail

      • 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
    • Constructor Detail

      • OptionalHandlerFactory

        protected OptionalHandlerFactory()
    • Method Detail

      • 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