001package com.box.sdkgen.schemas.metadatainstancevalue;
002
003import com.box.sdkgen.internal.OneOfFour;
004import com.box.sdkgen.serialization.json.JsonManager;
005import com.fasterxml.jackson.core.JsonParser;
006import com.fasterxml.jackson.databind.DeserializationContext;
007import com.fasterxml.jackson.databind.JsonDeserializer;
008import com.fasterxml.jackson.databind.JsonMappingException;
009import com.fasterxml.jackson.databind.JsonNode;
010import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
011import com.fasterxml.jackson.databind.annotation.JsonSerialize;
012import java.io.IOException;
013import java.util.List;
014
015@JsonDeserialize(using = MetadataInstanceValue.MetadataInstanceValueDeserializer.class)
016@JsonSerialize(using = OneOfFour.OneOfFourSerializer.class)
017public class MetadataInstanceValue extends OneOfFour<String, Long, Double, List<String>> {
018
019  public MetadataInstanceValue(String string) {
020    super(string, null, null, null);
021  }
022
023  public MetadataInstanceValue(Long longNumber) {
024    super(null, longNumber, null, null);
025  }
026
027  public MetadataInstanceValue(Double doubleNumber) {
028    super(null, null, doubleNumber, null);
029  }
030
031  public MetadataInstanceValue(List<String> listOfString) {
032    super(null, null, null, listOfString);
033  }
034
035  public boolean isString() {
036    return value0 != null;
037  }
038
039  public String getString() {
040    return value0;
041  }
042
043  public boolean isLongNumber() {
044    return value1 != null;
045  }
046
047  public Long getLongNumber() {
048    return value1;
049  }
050
051  public boolean isDoubleNumber() {
052    return value2 != null;
053  }
054
055  public Double getDoubleNumber() {
056    return value2;
057  }
058
059  public boolean isListOfString() {
060    return value3 != null;
061  }
062
063  public List<String> getListOfString() {
064    return value3;
065  }
066
067  static class MetadataInstanceValueDeserializer extends JsonDeserializer<MetadataInstanceValue> {
068
069    public MetadataInstanceValueDeserializer() {
070      super();
071    }
072
073    @Override
074    public MetadataInstanceValue deserialize(JsonParser jp, DeserializationContext ctxt)
075        throws IOException {
076      JsonNode node = JsonManager.jsonToSerializedData(jp);
077      try {
078        return new MetadataInstanceValue(OneOfFour.OBJECT_MAPPER.convertValue(node, Long.class));
079      } catch (Exception ignored) {
080      }
081      try {
082        return new MetadataInstanceValue(OneOfFour.OBJECT_MAPPER.convertValue(node, Double.class));
083      } catch (Exception ignored) {
084      }
085      try {
086        return new MetadataInstanceValue(OneOfFour.OBJECT_MAPPER.convertValue(node, List.class));
087      } catch (Exception ignored) {
088      }
089      try {
090        return new MetadataInstanceValue(OneOfFour.OBJECT_MAPPER.convertValue(node, String.class));
091      } catch (Exception ignored) {
092      }
093      throw new JsonMappingException(jp, "Unable to deserialize MetadataInstanceValue");
094    }
095  }
096}