package com.fasterxml.jackson.datatype.jaxrs;

import java.io.IOException;

import javax.ws.rs.core.Link;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;

import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;

Since:2.8
/** * @since 2.8 */
public class LinkDeserializer extends StdScalarDeserializer<Link> { private static final long serialVersionUID = 1L; public LinkDeserializer() { super(Link.class); } @Override public Link deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String text = p.getValueAsString(); if (text != null) { // has String representation // should we check for empty, and if so, should it become null-value/empty-value? return Link.valueOf(text); } JsonToken t = p.getCurrentToken(); if (t == JsonToken.START_ARRAY && ctxt.isEnabled(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS)) { p.nextToken(); final Link value = deserialize(p, ctxt); if (p.nextToken() != JsonToken.END_ARRAY) { handleMissingEndArrayForSingle(p, ctxt); } return value; } if (t == JsonToken.VALUE_EMBEDDED_OBJECT) { Object ob = p.getEmbeddedObject(); if (ob == null) { return null; } if (ob instanceof Link) { return (Link) ob; } } return (Link) ctxt.handleUnexpectedToken(_valueClass, p); } }