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/AnnotatedWithParams.java

    package com.fasterxml.jackson.databind.introspect;
    
    import java.lang.annotation.Annotation;
    import java.lang.reflect.Type;
    
    import com.fasterxml.jackson.databind.JavaType;
    
    /**
     * Intermediate base class that encapsulates features that
     * constructors and methods share.
     */
    public abstract class AnnotatedWithParams
        extends AnnotatedMember
    {
        private static final long serialVersionUID = 1L;
    
        /**
         * Annotations associated with parameters of the annotated
         * entity (method or constructor parameters)
         */
        protected final AnnotationMap[] _paramAnnotations;
    
        /*
        /**********************************************************
        /* Life-cycle
        /**********************************************************
         */
    
        protected AnnotatedWithParams(TypeResolutionContext ctxt, AnnotationMap annotations, AnnotationMap[] paramAnnotations)
        {
            super(ctxt, annotations);
            _paramAnnotations = paramAnnotations;
        }
    
        /**
         * @since 2.8.1
         */
        protected AnnotatedWithParams(AnnotatedWithParams base, AnnotationMap[] paramAnnotations) {
            super(base);
            _paramAnnotations = paramAnnotations;
        }
    
        /**
         * Method called to override a method parameter annotation,
         * usually due to a mix-in
         * annotation masking or overriding an annotation 'real' method
         * has.
         */
        public final void addOrOverrideParam(int paramIndex, Annotation a)
        {
            AnnotationMap old = _paramAnnotations[paramIndex];
            if (old == null) {
                old = new AnnotationMap();
                _paramAnnotations[paramIndex] = old;
            }
            old.add(a);
        }
    
        /**
         * Method called by parameter object when an augmented instance is created;
         * needs to replace parameter with new instance
         */
        protected AnnotatedParameter replaceParameterAnnotations(int index, AnnotationMap ann)
        {
            _paramAnnotations[index] = ann;
            return getParameter(index);
        }
    
        /*
        /**********************************************************
        /* Extended API
        /**********************************************************
         */
    
        public final AnnotationMap getParameterAnnotations(int index)
        {
            if (_paramAnnotations != null) {
                if (index >= 0 && index < _paramAnnotations.length) {
                    return _paramAnnotations[index];
                }
            }
            return null;
        }
    
        public final AnnotatedParameter getParameter(int index) {
            return new AnnotatedParameter(this, getParameterType(index),
                    _typeContext, getParameterAnnotations(index), index);
        }
    
        public abstract int getParameterCount();
    
        public abstract Class<?> getRawParameterType(int index);
    
        /**
         * @since 2.7
         */
        public abstract JavaType getParameterType(int index);
    
        /**
         * @deprecated Since 2.7, remove in 2.9
         */
        @Deprecated
        public abstract Type getGenericParameterType(int index);
    
        public final int getAnnotationCount() { return _annotations.size(); }
    
        /**
         * Method that can be used to (try to) call this object without arguments.
         * This may succeed or fail, depending on expected number
         * of arguments: caller needs to take care to pass correct number.
         * Exceptions are thrown directly from actual low-level call.
         *<p>
         * Note: only works for constructors and static methods.
         */
        public abstract Object call() throws Exception;
    
        /**
         * Method that can be used to (try to) call this object with specified arguments.
         * This may succeed or fail, depending on expected number
         * of arguments: caller needs to take care to pass correct number.
         * Exceptions are thrown directly from actual low-level call.
         *<p>
         * Note: only works for constructors and static methods.
         */
        public abstract Object call(Object[] args) throws Exception;
    
        /**
         * Method that can be used to (try to) call this object with single arguments.
         * This may succeed or fail, depending on expected number
         * of arguments: caller needs to take care to pass correct number.
         * Exceptions are thrown directly from actual low-level call.
         *<p>
         * Note: only works for constructors and static methods.
         */
        public abstract Object call1(Object arg) throws Exception;
    }
    

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

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 32085👍, 0💬