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/exc/PropertyBindingException.java

    package com.fasterxml.jackson.databind.exc;
    
    import java.util.Collection;
    import java.util.Collections;
    import java.util.Iterator;
    
    import com.fasterxml.jackson.core.JsonLocation;
    import com.fasterxml.jackson.core.JsonParser;
    import com.fasterxml.jackson.databind.JsonMappingException;
    
    /**
     * Base class for {@link JsonMappingException}s that are specifically related
     * to problems related to binding an individual property.
     * 
     * @since 2.3
     */
    @SuppressWarnings("serial")
    public abstract class PropertyBindingException
        extends MismatchedInputException // since 2.9
    {
        /**
         * Class that does not contain mapping for the unrecognized property.
         */
        protected final Class<?> _referringClass;
        
        /**
         *<p>
         * Note: redundant information since it is also included in the
         * reference path.
         */
        protected final String _propertyName;
    
        /**
         * Set of ids of properties that are known for the type, if this
         * can be statically determined.
         */
        protected final Collection<Object> _propertyIds;
    
        /**
         * Lazily constructed description of known properties, used for
         * constructing actual message if and as needed.
         */
        protected transient String _propertiesAsString;
    
        /**
         * @since 2.7
         */
        protected PropertyBindingException(JsonParser p, String msg, JsonLocation loc,
                Class<?> referringClass, String propName,
                Collection<Object> propertyIds)
        {
            super(p, msg, loc);
            _referringClass = referringClass;
            _propertyName = propName;
            _propertyIds = propertyIds;
        }
    
        /**
         * @deprecated Since 2.7
         */
        @Deprecated // since 2.7
        protected PropertyBindingException(String msg, JsonLocation loc,
                Class<?> referringClass, String propName,
                Collection<Object> propertyIds)
        {
            this(null, msg, loc, referringClass, propName, propertyIds);
        }
    
        /*
        /**********************************************************
        /* Overrides
        /**********************************************************
         */
    
        /**
         * Somewhat arbitrary limit, but let's try not to create uselessly
         * huge error messages
         */
        private final static int MAX_DESC_LENGTH = 1000;
    
        @Override
        public String getMessageSuffix()
        {
            String suffix = _propertiesAsString;
            if (suffix == null && _propertyIds != null) {
                StringBuilder sb = new StringBuilder(100);
                int len = _propertyIds.size();
                if (len == 1) {
                    sb.append(" (one known property: \"");
                    sb.append(String.valueOf(_propertyIds.iterator().next()));
                    sb.append('"');
                } else {
                    sb.append(" (").append(len).append(" known properties: ");
                    Iterator<Object> it = _propertyIds.iterator();
                    while (it.hasNext()) {
                        sb.append('"');
                        sb.append(String.valueOf(it.next()));
                        sb.append('"');
                        // one other thing: limit max length
                        if (sb.length() > MAX_DESC_LENGTH) {
                            sb.append(" [truncated]");
                            break;
                        }
                        if (it.hasNext()) {
                            sb.append(", ");
                        }
                    }
                }
                sb.append("])");
                _propertiesAsString = suffix = sb.toString();
            }
            return suffix;
        }
    
        /*
        /**********************************************************
        /* Extended API
        /**********************************************************
         */
        
        /**
         * Method for accessing type (class) that is missing definition to allow
         * binding of the unrecognized property.
         */
        public Class<?> getReferringClass() {
            return _referringClass;
        }
        
        /**
         * Convenience method for accessing logical property name that could
         * not be mapped. Note that it is the last path reference in the
         * underlying path.
         */
        public String getPropertyName() {
            return _propertyName;
        }    
        
        public Collection<Object> getKnownPropertyIds()
        {
            if (_propertyIds == null) {
                return null;
            }
            return Collections.unmodifiableCollection(_propertyIds);
        }
    }
    

    com/fasterxml/jackson/databind/exc/PropertyBindingException.java

     

    ⇒ Jackson Annotations Source Code

    ⇐ Download and Install Jackson Binary Package

    ⇑ Downloading and Reviewing jackson-*.jar

    ⇑⇑ Jackson - Java JSON library

    2022-03-29, 31972👍, 0💬