protected void addObjectIdReader(DeserializationContext paramDeserializationContext, BeanDescription paramBeanDescription, BeanDeserializerBuilder paramBeanDeserializerBuilder) { ObjectIdInfo localObjectIdInfo = paramBeanDescription.getObjectIdInfo(); if (localObjectIdInfo == null) return; Class localClass = localObjectIdInfo.getGeneratorType(); SettableBeanProperty localSettableBeanProperty1; JavaType localJavaType2; Object localObject; if (localClass == ObjectIdGenerators.PropertyGenerator.class) { String str = localObjectIdInfo.getPropertyName(); SettableBeanProperty localSettableBeanProperty2 = paramBeanDeserializerBuilder.findProperty(str); localSettableBeanProperty1 = localSettableBeanProperty2; if (localSettableBeanProperty2 == null) throw new IllegalArgumentException("Invalid Object Id definition for " + paramBeanDescription.getBeanClass().getName() + ": can not find property with name '" + str + "'"); localJavaType2 = localSettableBeanProperty1.getType(); localObject = new PropertyBasedObjectIdGenerator(localObjectIdInfo.getScope()); } else { JavaType localJavaType1 = paramDeserializationContext.constructType(localClass); localJavaType2 = paramDeserializationContext.getTypeFactory().findTypeParameters(localJavaType1, ObjectIdGenerator.class)[0]; localSettableBeanProperty1 = null; localObject = paramDeserializationContext.objectIdGeneratorInstance(paramBeanDescription.getClassInfo(), localObjectIdInfo); } JsonDeserializer localJsonDeserializer = paramDeserializationContext.findRootValueDeserializer(localJavaType2); paramBeanDeserializerBuilder.setObjectIdReader(ObjectIdReader.construct(localJavaType2, localObjectIdInfo.getPropertyName(), (ObjectIdGenerator)localObject, localJsonDeserializer, localSettableBeanProperty1)); }
public BeanDeserializerBase(BeanDeserializerBase paramBeanDeserializerBase, ObjectIdReader paramObjectIdReader) { super(paramBeanDeserializerBase._beanType); this._classAnnotations = paramBeanDeserializerBase._classAnnotations; this._beanType = paramBeanDeserializerBase._beanType; this._valueInstantiator = paramBeanDeserializerBase._valueInstantiator; this._delegateDeserializer = paramBeanDeserializerBase._delegateDeserializer; this._propertyBasedCreator = paramBeanDeserializerBase._propertyBasedCreator; this._backRefs = paramBeanDeserializerBase._backRefs; this._ignorableProps = paramBeanDeserializerBase._ignorableProps; this._ignoreAllUnknown = paramBeanDeserializerBase._ignoreAllUnknown; this._anySetter = paramBeanDeserializerBase._anySetter; this._injectables = paramBeanDeserializerBase._injectables; this._nonStandardCreation = paramBeanDeserializerBase._nonStandardCreation; this._unwrappedPropertyHandler = paramBeanDeserializerBase._unwrappedPropertyHandler; this._needViewProcesing = paramBeanDeserializerBase._needViewProcesing; this._serializationShape = paramBeanDeserializerBase._serializationShape; this._vanillaProcessing = paramBeanDeserializerBase._vanillaProcessing; this._objectIdReader = paramObjectIdReader; if (paramObjectIdReader == null) { this._beanProperties = paramBeanDeserializerBase._beanProperties; return; } ObjectIdValueProperty localObjectIdValueProperty = new ObjectIdValueProperty(paramObjectIdReader, true); this._beanProperties = paramBeanDeserializerBase._beanProperties.withProperty(localObjectIdValueProperty); }
protected void addObjectIdReader(DeserializationContext ctxt, BeanDescription beanDesc, BeanDeserializerBuilder builder) throws JsonMappingException { ObjectIdInfo objectIdInfo = beanDesc.getObjectIdInfo(); if (objectIdInfo == null) { return; } Class<?> implClass = objectIdInfo.getGeneratorType(); JavaType idType; SettableBeanProperty idProp; ObjectIdGenerator<?> gen; // Just one special case: Property-based generator is trickier if (implClass == ObjectIdGenerators.PropertyGenerator.class) { // most special one, needs extra work String propName = objectIdInfo.getPropertyName(); idProp = builder.findProperty(propName); if (idProp == null) { throw new IllegalArgumentException("Invalid Object Id definition for " +beanDesc.getBeanClass().getName()+": can not find property with name '"+propName+"'"); } idType = idProp.getType(); gen = new PropertyBasedObjectIdGenerator(objectIdInfo.getScope()); } else { JavaType type = ctxt.constructType(implClass); idType = ctxt.getTypeFactory().findTypeParameters(type, ObjectIdGenerator.class)[0]; idProp = null; gen = ctxt.objectIdGeneratorInstance(beanDesc.getClassInfo(), objectIdInfo); } // also: unlike with value deserializers, let's just resolve one we need here JsonDeserializer<?> deser = ctxt.findRootValueDeserializer(idType); builder.setObjectIdReader(ObjectIdReader.construct(idType, objectIdInfo.getPropertyName(), gen, deser, idProp)); }
public DataBinderDeserializer(BeanDeserializerBase source, ObjectIdReader objectIdReader) { super(source, objectIdReader); }
EntityBeanDeserializer(BeanDeserializerBase source, ObjectIdReader reader) { super(source, reader); }
public ObjectIdReader getObjectIdReader() { return null; }
public BeanDeserializer(BeanDeserializerBase paramBeanDeserializerBase, ObjectIdReader paramObjectIdReader) { super(paramBeanDeserializerBase, paramObjectIdReader); }
public BeanDeserializer withObjectIdReader(ObjectIdReader paramObjectIdReader) { return new BeanDeserializer(this, paramObjectIdReader); }
public ObjectIdReader getObjectIdReader() { return this._delegatee.getObjectIdReader(); }
public ObjectIdReader getObjectIdReader() { return this._objectIdReader; }
public BuilderBasedDeserializer(BuilderBasedDeserializer paramBuilderBasedDeserializer, ObjectIdReader paramObjectIdReader) { super(paramBuilderBasedDeserializer, paramObjectIdReader); this._buildMethod = paramBuilderBasedDeserializer._buildMethod; }
public BuilderBasedDeserializer withObjectIdReader(ObjectIdReader paramObjectIdReader) { return new BuilderBasedDeserializer(this, paramObjectIdReader); }
public void setObjectIdReader(ObjectIdReader paramObjectIdReader) { this._objectIdReader = paramObjectIdReader; }
public JsonDeserializer<?> createContextual(DeserializationContext paramDeserializationContext, BeanProperty paramBeanProperty) { ObjectIdReader localObjectIdReader = this._objectIdReader; AnnotationIntrospector localAnnotationIntrospector = paramDeserializationContext.getAnnotationIntrospector(); AnnotatedMember localAnnotatedMember; if ((paramBeanProperty == null) || (localAnnotationIntrospector == null)) localAnnotatedMember = null; else localAnnotatedMember = paramBeanProperty.getMember(); String[] arrayOfString = null; if (paramBeanProperty != null) { arrayOfString = null; if (localAnnotationIntrospector != null) { arrayOfString = localAnnotationIntrospector.findPropertiesToIgnore(localAnnotatedMember); ObjectIdInfo localObjectIdInfo1 = localAnnotationIntrospector.findObjectIdInfo(localAnnotatedMember); if (localObjectIdInfo1 != null) { ObjectIdInfo localObjectIdInfo2 = localAnnotationIntrospector.findObjectReferenceInfo(localAnnotatedMember, localObjectIdInfo1); Class localClass = localObjectIdInfo2.getGeneratorType(); SettableBeanProperty localSettableBeanProperty1; JavaType localJavaType2; Object localObject; if (localClass == ObjectIdGenerators.PropertyGenerator.class) { String str = localObjectIdInfo2.getPropertyName(); SettableBeanProperty localSettableBeanProperty2 = findProperty(str); localSettableBeanProperty1 = localSettableBeanProperty2; if (localSettableBeanProperty2 == null) throw new IllegalArgumentException("Invalid Object Id definition for " + getBeanClass().getName() + ": can not find property with name '" + str + "'"); localJavaType2 = localSettableBeanProperty1.getType(); localObject = new PropertyBasedObjectIdGenerator(localObjectIdInfo2.getScope()); } else { JavaType localJavaType1 = paramDeserializationContext.constructType(localClass); localJavaType2 = paramDeserializationContext.getTypeFactory().findTypeParameters(localJavaType1, ObjectIdGenerator.class)[0]; localSettableBeanProperty1 = null; localObject = paramDeserializationContext.objectIdGeneratorInstance(localAnnotatedMember, localObjectIdInfo2); } JsonDeserializer localJsonDeserializer = paramDeserializationContext.findRootValueDeserializer(localJavaType2); localObjectIdReader = ObjectIdReader.construct(localJavaType2, localObjectIdInfo2.getPropertyName(), (ObjectIdGenerator)localObject, localJsonDeserializer, localSettableBeanProperty1); } } } BeanDeserializerBase localBeanDeserializerBase = this; if ((localObjectIdReader != null) && (localObjectIdReader != this._objectIdReader)) localBeanDeserializerBase = localBeanDeserializerBase.withObjectIdReader(localObjectIdReader); if ((arrayOfString != null) && (arrayOfString.length != 0)) localBeanDeserializerBase = localBeanDeserializerBase.withIgnorableProperties(ArrayBuilders.setAndArray(localBeanDeserializerBase._ignorableProps, arrayOfString)); JsonFormat.Shape localShape = null; if (localAnnotatedMember != null) { JsonFormat.Value localValue = localAnnotationIntrospector.findFormat(localAnnotatedMember); localShape = null; if (localValue != null) localShape = localValue.getShape(); } if (localShape == null) localShape = this._serializationShape; if (localShape == JsonFormat.Shape.ARRAY) localBeanDeserializerBase = localBeanDeserializerBase.asArrayDeserializer(); return localBeanDeserializerBase; }
@Override public ObjectIdReader getObjectIdReader() { return _delegatee.getObjectIdReader(); }
public void setObjectIdReader(ObjectIdReader r) { _objectIdReader = r; }
public ObjectIdReader getObjectIdReader() { return _objectIdReader; }
/** * {@inheritDoc} * * Uses {@link DataBinderDeserializer} */ @Override public BeanDeserializerBase withObjectIdReader(ObjectIdReader objectIdReader) { return new DataBinderDeserializer(this, objectIdReader); }
/** * Accessor that can be used to check whether this deserializer * is expecting to possibly get an Object Identifier value instead of full value * serialization, and if so, should be able to resolve it to actual * Object instance to return as deserialized value. *<p> * Default implementation returns null, as support can not be implemented * generically. Some standard deserializers (most notably * {@link com.fasterxml.jackson.databind.deser.BeanDeserializer}) * do implement this feature, and may return reader instance, depending on exact * configuration of instance (which is based on type, and referring property). * * @return ObjectIdReader used for resolving possible Object Identifier * value, instead of full value serialization, if deserializer can do that; * null if no Object Id is expected. * * @since 2.0 */ public ObjectIdReader getObjectIdReader() { return null; }
/** * Overridden to return true for those instances that are * handling value for which Object Identity handling is enabled * (either via value type or referring property). */ @Override public ObjectIdReader getObjectIdReader() { return _objectIdReader; }
public abstract BeanDeserializerBase withObjectIdReader(ObjectIdReader paramObjectIdReader);