blob: 88426e877af59a8c4ccccd514691e0a699fe72e7 [file] [log] [blame]
package org.codehaus.jackson.map.deser.std;
import java.io.IOException;
import java.util.concurrent.atomic.AtomicReference;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.*;
import org.codehaus.jackson.type.JavaType;
public class AtomicReferenceDeserializer
extends StdScalarDeserializer<AtomicReference<?>>
implements ResolvableDeserializer
{
/**
* Type of value that we reference
*/
protected final JavaType _referencedType;
protected final BeanProperty _property;
protected JsonDeserializer<?> _valueDeserializer;
/**
* @param referencedType Parameterization of this reference
*/
public AtomicReferenceDeserializer(JavaType referencedType, BeanProperty property)
{
super(AtomicReference.class);
_referencedType = referencedType;
_property = property;
}
@Override
public AtomicReference<?> deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
return new AtomicReference<Object>(_valueDeserializer.deserialize(jp, ctxt));
}
@Override
public void resolve(DeserializationConfig config, DeserializerProvider provider)
throws JsonMappingException
{
_valueDeserializer = provider.findValueDeserializer(config, _referencedType, _property);
}
}