package org.springframework.social.instagram.api.impl; import java.io.IOException; import org.codehaus.jackson.JsonParser; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.annotate.JsonCreator; import org.codehaus.jackson.annotate.JsonIgnoreProperties; import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.DeserializationContext; import org.codehaus.jackson.map.JsonDeserializer; import org.codehaus.jackson.map.annotate.JsonDeserialize; import org.springframework.social.instagram.api.Relationship.IncomingStatus; import org.springframework.social.instagram.api.Relationship.OutgoingStatus; @JsonIgnoreProperties(ignoreUnknown=true) public class RelationshipMixin { @JsonCreator RelationshipMixin( @JsonProperty("outgoing_status") @JsonDeserialize(using=OutgoingDeserializer.class) OutgoingStatus outgoingStatus, @JsonProperty("incoming_status") @JsonDeserialize(using=IncomingDeserializer.class) IncomingStatus incomingStatus) {} private static class OutgoingDeserializer extends JsonDeserializer<OutgoingStatus> { @Override public OutgoingStatus deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { return OutgoingStatus.valueOf(jp.getText().toUpperCase()); } } private static class IncomingDeserializer extends JsonDeserializer<IncomingStatus> { @Override public IncomingStatus deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { return IncomingStatus.valueOf(jp.getText().toUpperCase()); } } }