com.fasterxml.jackson.databind.deser.impl.PropertyValue Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
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.
*/
public abstract class PropertyValue
{
public final PropertyValue next;
/**
* 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
*/
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.
*/
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).
*/
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.
*/
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