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

import java.io.IOException;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.deser.SettableAnyProperty;
import com.fasterxml.jackson.databind.deser.SettableBeanProperty;

Base class for property values that need to be buffered during deserialization.
/** * Base class for property values that need to be buffered during * deserialization. */
public abstract class PropertyValue { public final PropertyValue next;
Value to assign when POJO has been instantiated.
/** * Value to assign when POJO has been instantiated. */
public final Object value; protected PropertyValue(PropertyValue next, Object value) { this.next = next; this.value = value; }
Method called to assign stored value of this property to specified bean instance
/** * Method called to assign stored value of this property to specified * bean instance */
public abstract void assign(Object bean) throws IOException, JsonProcessingException; /* /********************************************************** /* Concrete property value classes /********************************************************** */
Property value that used when assigning value to property using a setter method or direct field access.
/** * Property value that used when assigning value to property using * a setter method or direct field access. */
final static class Regular extends PropertyValue { final SettableBeanProperty _property; public Regular(PropertyValue next, Object value, SettableBeanProperty prop) { super(next, value); _property = prop; } @Override public void assign(Object bean) throws IOException, JsonProcessingException { _property.set(bean, value); } }
Property value type used when storing entries to be added to a POJO using "any setter" (method that takes name and value arguments, allowing setting multiple different properties using single method).
/** * Property value type used when storing entries to be added * to a POJO using "any setter" (method that takes name and * value arguments, allowing setting multiple different * properties using single method). */
final static class Any extends PropertyValue { final SettableAnyProperty _property; final String _propertyName; public Any(PropertyValue next, Object value, SettableAnyProperty prop, String propName) { super(next, value); _property = prop; _propertyName = propName; } @Override public void assign(Object bean) throws IOException, JsonProcessingException { _property.set(bean, _propertyName, value); } }
Property value type used when storing entries to be added to a Map.
/** * Property value type used when storing entries to be added * to a Map. */
final static class Map extends PropertyValue { final Object _key; public Map(PropertyValue next, Object value, Object key) { super(next, value); _key = key; } @SuppressWarnings("unchecked") @Override public void assign(Object bean) throws IOException, JsonProcessingException { ((java.util.Map<Object,Object>) bean).put(_key, value); } } }