001package com.box.sdkgen.schemas.metadatafiltervalue;
002
003import com.box.sdkgen.internal.OneOfFive;
004import com.box.sdkgen.schemas.metadatafieldfilterdaterange.MetadataFieldFilterDateRange;
005import com.box.sdkgen.schemas.metadatafieldfilterfloatrange.MetadataFieldFilterFloatRange;
006import com.box.sdkgen.serialization.json.JsonManager;
007import com.fasterxml.jackson.core.JsonParser;
008import com.fasterxml.jackson.databind.DeserializationContext;
009import com.fasterxml.jackson.databind.JsonDeserializer;
010import com.fasterxml.jackson.databind.JsonMappingException;
011import com.fasterxml.jackson.databind.JsonNode;
012import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
013import com.fasterxml.jackson.databind.annotation.JsonSerialize;
014import java.io.IOException;
015import java.util.List;
016
017@JsonDeserialize(using = MetadataFilterValue.MetadataFilterValueDeserializer.class)
018@JsonSerialize(using = OneOfFive.OneOfFiveSerializer.class)
019public class MetadataFilterValue
020    extends OneOfFive<
021        String, Double, List<String>, MetadataFieldFilterFloatRange, MetadataFieldFilterDateRange> {
022
023  public MetadataFilterValue(String string) {
024    super(string, null, null, null, null);
025  }
026
027  public MetadataFilterValue(Double doubleNumber) {
028    super(null, doubleNumber, null, null, null);
029  }
030
031  public MetadataFilterValue(List<String> listOfString) {
032    super(null, null, listOfString, null, null);
033  }
034
035  public MetadataFilterValue(MetadataFieldFilterFloatRange metadataFieldFilterFloatRange) {
036    super(null, null, null, metadataFieldFilterFloatRange, null);
037  }
038
039  public MetadataFilterValue(MetadataFieldFilterDateRange metadataFieldFilterDateRange) {
040    super(null, null, null, null, metadataFieldFilterDateRange);
041  }
042
043  public boolean isString() {
044    return value0 != null;
045  }
046
047  public String getString() {
048    return value0;
049  }
050
051  public boolean isDoubleNumber() {
052    return value1 != null;
053  }
054
055  public Double getDoubleNumber() {
056    return value1;
057  }
058
059  public boolean isListOfString() {
060    return value2 != null;
061  }
062
063  public List<String> getListOfString() {
064    return value2;
065  }
066
067  public boolean isMetadataFieldFilterFloatRange() {
068    return value3 != null;
069  }
070
071  public MetadataFieldFilterFloatRange getMetadataFieldFilterFloatRange() {
072    return value3;
073  }
074
075  public boolean isMetadataFieldFilterDateRange() {
076    return value4 != null;
077  }
078
079  public MetadataFieldFilterDateRange getMetadataFieldFilterDateRange() {
080    return value4;
081  }
082
083  static class MetadataFilterValueDeserializer extends JsonDeserializer<MetadataFilterValue> {
084
085    public MetadataFilterValueDeserializer() {
086      super();
087    }
088
089    @Override
090    public MetadataFilterValue deserialize(JsonParser jp, DeserializationContext ctxt)
091        throws IOException {
092      JsonNode node = JsonManager.jsonToSerializedData(jp);
093      try {
094        return new MetadataFilterValue(
095            OneOfFive.OBJECT_MAPPER.convertValue(node, MetadataFieldFilterFloatRange.class));
096      } catch (Exception ignored) {
097      }
098      try {
099        return new MetadataFilterValue(
100            OneOfFive.OBJECT_MAPPER.convertValue(node, MetadataFieldFilterDateRange.class));
101      } catch (Exception ignored) {
102      }
103      try {
104        return new MetadataFilterValue(OneOfFive.OBJECT_MAPPER.convertValue(node, Double.class));
105      } catch (Exception ignored) {
106      }
107      try {
108        return new MetadataFilterValue(OneOfFive.OBJECT_MAPPER.convertValue(node, List.class));
109      } catch (Exception ignored) {
110      }
111      try {
112        return new MetadataFilterValue(OneOfFive.OBJECT_MAPPER.convertValue(node, String.class));
113      } catch (Exception ignored) {
114      }
115      throw new JsonMappingException(jp, "Unable to deserialize MetadataFilterValue");
116    }
117  }
118}