Jackson Annotations Source Code

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

Jackson Annotations Source Code files are provided in the source packge (jackson-annotations-2.12.4-sources.jar). You can download it at Jackson Maven Website.

You can also browse Jackson Annotations Source Code below:

✍: FYIcenter.com


package com.fasterxml.jackson.databind.ser.impl;

import com.fasterxml.jackson.annotation.ObjectIdGenerator;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;

import com.fasterxml.jackson.databind.introspect.ObjectIdInfo;
import com.fasterxml.jackson.databind.ser.*;

public class PropertyBasedObjectIdGenerator
    extends ObjectIdGenerators.PropertyGenerator
    private static final long serialVersionUID = 1L;

    protected final BeanPropertyWriter _property;
    public PropertyBasedObjectIdGenerator(ObjectIdInfo oid, BeanPropertyWriter prop)
        this(oid.getScope(), prop);

    protected PropertyBasedObjectIdGenerator(Class<?> scope, BeanPropertyWriter prop)
        _property = prop;

     * We must override this method, to prevent errors when scopes are the same,
     * but underlying class (on which to access property) is different.
    public boolean canUseFor(ObjectIdGenerator<?> gen) {
        if (gen.getClass() == getClass()) {
            PropertyBasedObjectIdGenerator other = (PropertyBasedObjectIdGenerator) gen;
            if (other.getScope() == _scope) {
                /* 26-Jul-2012, tatu: This is actually not enough, because the property
                 *   accessor within BeanPropertyWriter won't work for other property fields
                 *  (see [https://github.com/FasterXML/jackson-module-jaxb-annotations/issues/9]
                 *  for details).
                 *  So we need to verify that underlying property is actually the same.
                return (other._property == _property);
        return false;
    public Object generateId(Object forPojo) {
        try {
            return _property.get(forPojo);
        } catch (RuntimeException e) {
            throw e;
        } catch (Exception e) {
            throw new IllegalStateException("Problem accessing property '"
                    +_property.getName()+"': "+e.getMessage(), e);

    public ObjectIdGenerator<Object> forScope(Class<?> scope) {
        return (scope == _scope) ? this : new PropertyBasedObjectIdGenerator(scope, _property);

    public ObjectIdGenerator<Object> newForSerialization(Object context) {
        // No state, can return this
        return this;

    public com.fasterxml.jackson.annotation.ObjectIdGenerator.IdKey key(Object key) {
        if (key == null) {
            return null;
        // should we use general type for all; or type of property itself?
        return new IdKey(getClass(), _scope, key);




⇒ Jackson Dataformat Extensions

⇐ Jackson Data Binding Source Code

⇑ Downloading and Reviewing jackson-*.jar

⇑⇑ Jackson - Java JSON library

2022-02-19, 36320👍, 0💬