| package com.fasterxml.jackson.databind.deser.std; |
| |
| import java.io.IOException; |
| |
| import com.fasterxml.jackson.core.JsonParser; |
| import com.fasterxml.jackson.core.JsonProcessingException; |
| import com.fasterxml.jackson.databind.DeserializationContext; |
| import com.fasterxml.jackson.databind.annotation.JacksonStdImpl; |
| import com.fasterxml.jackson.databind.util.TokenBuffer; |
| |
| /** |
| * We also want to directly support deserialization of {@link TokenBuffer}. |
| *<p> |
| * Note that we use scalar deserializer base just because we claim |
| * to be of scalar for type information inclusion purposes; actual |
| * underlying content can be of any (Object, Array, scalar) type. |
| *<p> |
| * Since 2.3, another important thing is that possible native ids |
| * (type id, object id) should be properly copied even when converting |
| * with {@link TokenBuffer}. Such ids are supported if (and only if!) |
| * source {@link JsonParser} supports them. |
| */ |
| @JacksonStdImpl |
| public class TokenBufferDeserializer |
| extends StdScalarDeserializer<TokenBuffer> |
| { |
| private static final long serialVersionUID = 1L; |
| |
| public final static TokenBufferDeserializer instance = new TokenBufferDeserializer(); |
| |
| public TokenBufferDeserializer() { super(TokenBuffer.class); } |
| |
| @Override |
| public TokenBuffer deserialize(JsonParser jp, DeserializationContext ctxt) |
| throws IOException, JsonProcessingException |
| { |
| TokenBuffer tb = new TokenBuffer(jp); |
| // quite simple, given that TokenBuffer is a JsonGenerator: |
| tb.copyCurrentStructure(jp); |
| return tb; |
| } |
| } |