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

import java.util.concurrent.atomic.AtomicReference;

import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;

public class AtomicReferenceDeserializer
    extends ReferenceTypeDeserializer<AtomicReference<Object>>
{
    private static final long serialVersionUID = 1L;

    /*
    /**********************************************************
    /* Life-cycle
    /**********************************************************
     */

    
Since:2.9
/** * @since 2.9 */
public AtomicReferenceDeserializer(JavaType fullType, ValueInstantiator inst, TypeDeserializer typeDeser, JsonDeserializer<?> deser) { super(fullType, inst, typeDeser, deser); } /* /********************************************************** /* Abstract method implementations /********************************************************** */ @Override public AtomicReferenceDeserializer withResolved(TypeDeserializer typeDeser, JsonDeserializer<?> valueDeser) { return new AtomicReferenceDeserializer(_fullType, _valueInstantiator, typeDeser, valueDeser); } @Override public AtomicReference<Object> getNullValue(DeserializationContext ctxt) { return new AtomicReference<Object>(); } @Override public Object getEmptyValue(DeserializationContext ctxt) { return new AtomicReference<Object>(); } @Override public AtomicReference<Object> referenceValue(Object contents) { return new AtomicReference<Object>(contents); } @Override public Object getReferenced(AtomicReference<Object> reference) { return reference.get(); } @Override // since 2.9 public AtomicReference<Object> updateReference(AtomicReference<Object> reference, Object contents) { reference.set(contents); return reference; } @Override // since 2.9 public Boolean supportsUpdate(DeserializationConfig config) { // yes; regardless of value deserializer reference itself may be updated return Boolean.TRUE; } }