001package com.box.sdkgen.schemas.aitextgenagent;
002
003import com.box.sdkgen.internal.OneOfTwo;
004import com.box.sdkgen.schemas.aiagentreference.AiAgentReference;
005import com.box.sdkgen.schemas.aiagenttextgen.AiAgentTextGen;
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 = AiTextGenAgent.AiTextGenAgentDeserializer.class)
018@JsonSerialize(using = OneOfTwo.OneOfTwoSerializer.class)
019public class AiTextGenAgent extends OneOfTwo<AiAgentReference, AiAgentTextGen> {
020
021  protected final String type;
022
023  public AiTextGenAgent(AiAgentReference aiAgentReference) {
024    super(aiAgentReference, null);
025    this.type = EnumWrapper.convertToString(aiAgentReference.getType());
026  }
027
028  public AiTextGenAgent(AiAgentTextGen aiAgentTextGen) {
029    super(null, aiAgentTextGen);
030    this.type = EnumWrapper.convertToString(aiAgentTextGen.getType());
031  }
032
033  public boolean isAiAgentReference() {
034    return value0 != null;
035  }
036
037  public AiAgentReference getAiAgentReference() {
038    return value0;
039  }
040
041  public boolean isAiAgentTextGen() {
042    return value1 != null;
043  }
044
045  public AiAgentTextGen getAiAgentTextGen() {
046    return value1;
047  }
048
049  public String getType() {
050    return type;
051  }
052
053  static class AiTextGenAgentDeserializer extends JsonDeserializer<AiTextGenAgent> {
054
055    public AiTextGenAgentDeserializer() {
056      super();
057    }
058
059    @Override
060    public AiTextGenAgent deserialize(JsonParser jp, DeserializationContext ctxt)
061        throws IOException {
062      JsonNode node = JsonManager.jsonToSerializedData(jp);
063      JsonNode discriminant0 = node.get("type");
064      if (!(discriminant0 == null)) {
065        switch (discriminant0.asText()) {
066          case "ai_agent_id":
067            return new AiTextGenAgent(JsonManager.deserialize(node, AiAgentReference.class));
068          case "ai_agent_text_gen":
069            return new AiTextGenAgent(JsonManager.deserialize(node, AiAgentTextGen.class));
070        }
071      }
072      throw new JsonMappingException(jp, "Unable to deserialize AiTextGenAgent");
073    }
074  }
075}