1 package com.fasterxml.jackson.databind.deser.std; 2 3 import java.io.IOException; 4 5 import com.fasterxml.jackson.core.*; 6 import com.fasterxml.jackson.databind.*; 7 import com.fasterxml.jackson.databind.deser.ContextualDeserializer; 8 9 public class MappingIteratorDeserializer 10 extends StdDeserializer<MappingIterator<Object>> 11 implements ContextualDeserializer 12 { 13 private static final long serialVersionUID = 1L; 14 15 protected final JavaType _valueType; 16 17 protected final JsonDeserializer<Object> _valueDeserializer; 18 MappingIteratorDeserializer(JavaType valueType)19 public MappingIteratorDeserializer(JavaType valueType) { 20 this(valueType, null); 21 } 22 MappingIteratorDeserializer(JavaType valueType, JsonDeserializer<Object> vdeser)23 protected MappingIteratorDeserializer(JavaType valueType, JsonDeserializer<Object> vdeser) { 24 super(MappingIterator.class); 25 _valueType = valueType; 26 _valueDeserializer = vdeser; 27 } 28 29 @Override createContextual(DeserializationContext ctxt, BeanProperty prop)30 public JsonDeserializer<?> createContextual(DeserializationContext ctxt, 31 BeanProperty prop) throws JsonMappingException 32 { 33 JsonDeserializer<Object> deser = ctxt.findContextualValueDeserializer(_valueType, prop); 34 return (deser == _valueDeserializer) ? this 35 : new MappingIteratorDeserializer(_valueType, deser); 36 } 37 38 @Override deserialize(JsonParser p, DeserializationContext ctxt)39 public MappingIterator<Object> deserialize(JsonParser p, 40 DeserializationContext ctxt) throws IOException, 41 JsonProcessingException 42 { 43 MappingIterator<Object> mit = new MappingIterator<Object>(_valueType, p, ctxt, 44 _valueDeserializer, false, null); 45 return mit; 46 } 47 } 48