Jackson Data Binding Source Code

Jackson is "the Java JSON library" or "the best JSON parser for Java". Or simply as "JSON for Java".

  • Jackson Data Binding module allows you to converts JSON to and from POJO (Plain Old Java Object) using property accessor or using annotations.
  • Jackson Databind Source Code files are provided in the source packge (jackson-databind-2.12.4-sources.jar). You can download it at Jackson Maven Website.

    You can also browse Jackson Databind Source Code below:

    ✍: FYIcenter.com

    com/fasterxml/jackson/databind/introspect/ClassIntrospector.java

    package com.fasterxml.jackson.databind.introspect;
    
    import com.fasterxml.jackson.databind.BeanDescription;
    import com.fasterxml.jackson.databind.DeserializationConfig;
    import com.fasterxml.jackson.databind.JavaType;
    import com.fasterxml.jackson.databind.SerializationConfig;
    import com.fasterxml.jackson.databind.cfg.MapperConfig;
    
    /**
     * Helper class used to introspect features of POJO value classes
     * used with Jackson. The main use is for finding out
     * POJO construction (creator) and value access (getters, setters)
     * methods and annotations that define configuration of using
     * those methods.
     */
    public abstract class ClassIntrospector
    {
        /*
        /**********************************************************
        /* Helper interfaces
        /**********************************************************
         */
    
        /**
         * Interface used for decoupling details of how mix-in annotation
         * definitions are accessed (via this interface), and how
         * they are stored (defined by classes that implement the interface)
         */
        public interface MixInResolver
        {
            /**
             * Method that will check if there are "mix-in" classes (with mix-in
             * annotations) for given class
             */
            public Class<?> findMixInClassFor(Class<?> cls);
    
            /**
             * Method called to create a new, non-shared copy, to be used by different
             * <code>ObjectMapper</code> instance, and one that should not be connected
             * to this instance, if resolver has mutable state.
             * If resolver is immutable may simply return `this`.
             * 
             * @since 2.6
             */
            public MixInResolver copy();
        }
    
        protected ClassIntrospector() { }
    
        /**
         * Method that may be needed when `copy()`ing `ObjectMapper` instances.
         *
         * @since 2.9.6
         */
        public abstract ClassIntrospector copy();
    
        /*
        /**********************************************************
        /* Public API: factory methods
        /**********************************************************
         */
    
        /**
         * Factory method that constructs an introspector that has all
         * information needed for serialization purposes.
         */
        public abstract BeanDescription forSerialization(SerializationConfig cfg,
        		JavaType type, MixInResolver r);
    
        /**
         * Factory method that constructs an introspector that has all
         * information needed for deserialization purposes.
         */
        public abstract BeanDescription forDeserialization(DeserializationConfig cfg,
        		JavaType type, MixInResolver r);
    
        /**
         * Factory method that constructs an introspector that has all
         * information needed for constructing deserializers that use
         * intermediate Builder objects.
         *
         * @since 2.12
         */
        public abstract BeanDescription forDeserializationWithBuilder(DeserializationConfig cfg,
                JavaType builderType, MixInResolver r, BeanDescription valueTypeDesc);
    
        /**
         * @deprecated Since 2.12 use overload that take value type description
         */
        @Deprecated
        public abstract BeanDescription forDeserializationWithBuilder(DeserializationConfig cfg,
                JavaType builderType, MixInResolver r);
    
        /**
         * Factory method that constructs an introspector that has
         * information necessary for creating instances of given
         * class ("creator"), as well as class annotations, but
         * no information on member methods
         */
        public abstract BeanDescription forCreation(DeserializationConfig cfg, JavaType type,
                MixInResolver r);
    
        /**
         * Factory method that constructs an introspector that only has
         * information regarding annotations class itself (or its supertypes) has,
         * but nothing on methods or constructors.
         */
        public abstract BeanDescription forClassAnnotations(MapperConfig<?> cfg, JavaType type,
                MixInResolver r);
    
        /**
         * Factory method that constructs an introspector that only has
         * information regarding annotations class itself has (but NOT including
         * its supertypes), but nothing on methods or constructors.
         */
        public abstract BeanDescription forDirectClassAnnotations(MapperConfig<?> cfg, JavaType type,
                MixInResolver r);
    }
    

    com/fasterxml/jackson/databind/introspect/ClassIntrospector.java

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 32060👍, 0💬