com.fitbur.fasterxml.jackson.databind.InjectableValues Maven / Gradle / Ivy
package com.fitbur.fasterxml.jackson.databind;
import java.util.*;
/**
* Abstract class that com.fitburfines API for objects that provide value to
* "inject" during com.fitburserialization. An instance of this object
*/
public abstract class InjectableValues
{
/**
* Method called to find value identified by id valueId
to
* inject as value of specified property during com.fitburserialization, passing
* POJO instance in which value will be injected if it is available
* (will be available when injected via field or setter; not available
* when injected via constructor or factory method argument).
*
* @param valueId Object that identifies value to inject; may be a simple
* name or more com.fitburplex identifier object, whatever provider needs
* @param ctxt Deserialization context
* @param forProperty Bean property in which value is to be injected
* @param beanInstance Bean instance that contains property to inject,
* if available; null if bean has not yet been constructed.
*/
public abstract Object findInjectableValue(Object valueId,
DeserializationContext ctxt, BeanProperty forProperty,
Object beanInstance);
/*
/**********************************************************
/* Standard implementation
/**********************************************************
*/
/**
* Simple standard implementation which uses a simple Map to
* store values to inject, identified by simple String keys.
*/
public static class Std
extends InjectableValues
implements java.io.Serializable
{
private static final long serialVersionUID = 1L;
protected final Map _values;
public Std() {
this(new HashMap());
}
public Std(Map values) {
_values = values;
}
public Std addValue(String key, Object value)
{
_values.put(key, value);
return this;
}
public Std addValue(Class> classKey, Object value)
{
_values.put(classKey.getName(), value);
return this;
}
@Override
public Object findInjectableValue(Object valueId,
DeserializationContext ctxt, BeanProperty forProperty,
Object beanInstance)
{
if (!(valueId instanceof String)) {
String type = (valueId == null) ? "[null]" : valueId.getClass().getName();
throw new IllegalArgumentException("Unrecognized inject value id type ("+type+"), expecting String");
}
String key = (String) valueId;
Object ob = _values.get(key);
if (ob == null && !_values.containsKey(key)) {
throw new IllegalArgumentException("No injectable id with value '"+key+"' found (for property '"
+forProperty.getName()+"')");
}
return ob;
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy