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/type/ClassStack.java

    package com.fasterxml.jackson.databind.type;
    
    import java.util.ArrayList;
    
    import com.fasterxml.jackson.databind.JavaType;
    
    /**
     * Simple helper class used to keep track of 'call stack' for classes being referenced
     * (as well as unbound variables)
     *
     * @since 2.7
     */
    public final class ClassStack
    {
        protected final ClassStack _parent;
        protected final Class<?> _current;
    
        private ArrayList<ResolvedRecursiveType> _selfRefs;
    
        public ClassStack(Class<?> rootType) {
            this(null, rootType);
        }
    
        private ClassStack(ClassStack parent, Class<?> curr) {
            _parent = parent;
            _current = curr;
        }
    
        /**
         * @return New stack frame, if addition is ok; null if not
         */
        public ClassStack child(Class<?> cls) {
            return new ClassStack(this, cls);
        }
    
        /**
         * Method called to indicate that there is a self-reference from
         * deeper down in stack pointing into type this stack frame represents.
         */
        public void addSelfReference(ResolvedRecursiveType ref)
        {
            if (_selfRefs == null) {
                _selfRefs = new ArrayList<ResolvedRecursiveType>();
            }
            _selfRefs.add(ref);
        }
    
        /**
         * Method called when type that this stack frame represents is
         * fully resolved, allowing self-references to be completed
         * (if there are any)
         */
        public void resolveSelfReferences(JavaType resolved)
        {
            if (_selfRefs != null) {
                for (ResolvedRecursiveType ref : _selfRefs) {
                    ref.setReference(resolved);
                }
            }
        }
    
        public ClassStack find(Class<?> cls)
        {
            if (_current == cls) return this;
            for (ClassStack curr = _parent; curr != null; curr = curr._parent) {
                if (curr._current == cls) {
                    return curr;
                }
            }
            return null;
        }
    
        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("[ClassStack (self-refs: ")
                .append((_selfRefs == null) ? "0" : String.valueOf(_selfRefs.size()))
                .append(')')
                        ;
            for (ClassStack curr = this; curr != null; curr = curr._parent) {
                sb.append(' ').append(curr._current.getName());
            }
            sb.append(']');
            return sb.toString();
        }
    }
    

    com/fasterxml/jackson/databind/type/ClassStack.java

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 32119👍, 0💬