001package com.box.sdkgen.schemas.aitaxonomysource;
002
003import com.box.sdkgen.internal.OneOfTwo;
004import com.box.sdkgen.schemas.aitaxonomyfilereference.AiTaxonomyFileReference;
005import com.box.sdkgen.schemas.aitaxonomyreference.AiTaxonomyReference;
006import com.box.sdkgen.serialization.json.EnumWrapper;
007import com.box.sdkgen.serialization.json.JsonManager;
008import com.fasterxml.jackson.core.JsonParser;
009import com.fasterxml.jackson.databind.DeserializationContext;
010import com.fasterxml.jackson.databind.JsonDeserializer;
011import com.fasterxml.jackson.databind.JsonMappingException;
012import com.fasterxml.jackson.databind.JsonNode;
013import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
014import com.fasterxml.jackson.databind.annotation.JsonSerialize;
015import java.io.IOException;
016
017@JsonDeserialize(using = AiTaxonomySource.AiTaxonomySourceDeserializer.class)
018@JsonSerialize(using = OneOfTwo.OneOfTwoSerializer.class)
019public class AiTaxonomySource extends OneOfTwo<AiTaxonomyReference, AiTaxonomyFileReference> {
020
021  protected final String type;
022
023  protected final String taxonomyKey;
024
025  public AiTaxonomySource(AiTaxonomyReference aiTaxonomyReference) {
026    super(aiTaxonomyReference, null);
027    this.type = EnumWrapper.convertToString(aiTaxonomyReference.getType());
028    this.taxonomyKey = aiTaxonomyReference.getTaxonomyKey();
029  }
030
031  public AiTaxonomySource(AiTaxonomyFileReference aiTaxonomyFileReference) {
032    super(null, aiTaxonomyFileReference);
033    this.type = EnumWrapper.convertToString(aiTaxonomyFileReference.getType());
034    this.taxonomyKey = aiTaxonomyFileReference.getTaxonomyKey();
035  }
036
037  public boolean isAiTaxonomyReference() {
038    return value0 != null;
039  }
040
041  public AiTaxonomyReference getAiTaxonomyReference() {
042    return value0;
043  }
044
045  public boolean isAiTaxonomyFileReference() {
046    return value1 != null;
047  }
048
049  public AiTaxonomyFileReference getAiTaxonomyFileReference() {
050    return value1;
051  }
052
053  public String getType() {
054    return type;
055  }
056
057  public String getTaxonomyKey() {
058    return taxonomyKey;
059  }
060
061  static class AiTaxonomySourceDeserializer extends JsonDeserializer<AiTaxonomySource> {
062
063    public AiTaxonomySourceDeserializer() {
064      super();
065    }
066
067    @Override
068    public AiTaxonomySource deserialize(JsonParser jp, DeserializationContext ctxt)
069        throws IOException {
070      JsonNode node = JsonManager.jsonToSerializedData(jp);
071      JsonNode discriminant0 = node.get("type");
072      if (!(discriminant0 == null)) {
073        switch (discriminant0.asText()) {
074          case "taxonomy":
075            return new AiTaxonomySource(JsonManager.deserialize(node, AiTaxonomyReference.class));
076          case "file":
077            return new AiTaxonomySource(
078                JsonManager.deserialize(node, AiTaxonomyFileReference.class));
079        }
080      }
081      throw new JsonMappingException(jp, "Unable to deserialize AiTaxonomySource");
082    }
083  }
084}