package com.fasterxml.jackson.databind.introspect; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.ObjectIdGenerator; /** * Container object that encapsulates information usually * derived from {@link JsonIdentityInfo} annotation or its * custom alternatives */ public class ObjectIdInfo { protected final String _propertyName; protected final Class<? extends ObjectIdGenerator<?>> _generator; protected final Class<?> _scope; protected final boolean _alwaysAsId; public ObjectIdInfo(String prop, Class<?> scope, Class<? extends ObjectIdGenerator<?>> gen) { this(prop, scope, gen, false); } protected ObjectIdInfo(String prop, Class<?> scope, Class<? extends ObjectIdGenerator<?>> gen, boolean alwaysAsId) { _propertyName = prop; _scope = scope; _generator = gen; _alwaysAsId = alwaysAsId; } public ObjectIdInfo withAlwaysAsId(boolean state) { if (_alwaysAsId == state) { return this; } return new ObjectIdInfo(_propertyName, _scope, _generator, state); } public String getPropertyName() { return _propertyName; } public Class<?> getScope() { return _scope; } public Class<? extends ObjectIdGenerator<?>> getGeneratorType() { return _generator; } public boolean getAlwaysAsId() { return _alwaysAsId; } @Override public String toString() { return "ObjectIdInfo: propName="+_propertyName +", scope="+(_scope == null ? "null" : _scope.getName()) +", generatorType="+(_generator == null ? "null" : _generator.getName()) +", alwaysAsId="+_alwaysAsId; } }