001package com.box.sdkgen.schemas.aiagent;
002
003import com.box.sdkgen.internal.OneOfFour;
004import com.box.sdkgen.schemas.aiagentask.AiAgentAsk;
005import com.box.sdkgen.schemas.aiagentextract.AiAgentExtract;
006import com.box.sdkgen.schemas.aiagentextractstructured.AiAgentExtractStructured;
007import com.box.sdkgen.schemas.aiagenttextgen.AiAgentTextGen;
008import com.box.sdkgen.serialization.json.EnumWrapper;
009import com.box.sdkgen.serialization.json.JsonManager;
010import com.fasterxml.jackson.core.JsonParser;
011import com.fasterxml.jackson.databind.DeserializationContext;
012import com.fasterxml.jackson.databind.JsonDeserializer;
013import com.fasterxml.jackson.databind.JsonMappingException;
014import com.fasterxml.jackson.databind.JsonNode;
015import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
016import com.fasterxml.jackson.databind.annotation.JsonSerialize;
017import java.io.IOException;
018
019@JsonDeserialize(using = AiAgent.AiAgentDeserializer.class)
020@JsonSerialize(using = OneOfFour.OneOfFourSerializer.class)
021public class AiAgent
022    extends OneOfFour<AiAgentAsk, AiAgentTextGen, AiAgentExtract, AiAgentExtractStructured> {
023
024  protected final String type;
025
026  public AiAgent(AiAgentAsk aiAgentAsk) {
027    super(aiAgentAsk, null, null, null);
028    this.type = EnumWrapper.convertToString(aiAgentAsk.getType());
029  }
030
031  public AiAgent(AiAgentTextGen aiAgentTextGen) {
032    super(null, aiAgentTextGen, null, null);
033    this.type = EnumWrapper.convertToString(aiAgentTextGen.getType());
034  }
035
036  public AiAgent(AiAgentExtract aiAgentExtract) {
037    super(null, null, aiAgentExtract, null);
038    this.type = EnumWrapper.convertToString(aiAgentExtract.getType());
039  }
040
041  public AiAgent(AiAgentExtractStructured aiAgentExtractStructured) {
042    super(null, null, null, aiAgentExtractStructured);
043    this.type = EnumWrapper.convertToString(aiAgentExtractStructured.getType());
044  }
045
046  public boolean isAiAgentAsk() {
047    return value0 != null;
048  }
049
050  public AiAgentAsk getAiAgentAsk() {
051    return value0;
052  }
053
054  public boolean isAiAgentTextGen() {
055    return value1 != null;
056  }
057
058  public AiAgentTextGen getAiAgentTextGen() {
059    return value1;
060  }
061
062  public boolean isAiAgentExtract() {
063    return value2 != null;
064  }
065
066  public AiAgentExtract getAiAgentExtract() {
067    return value2;
068  }
069
070  public boolean isAiAgentExtractStructured() {
071    return value3 != null;
072  }
073
074  public AiAgentExtractStructured getAiAgentExtractStructured() {
075    return value3;
076  }
077
078  public String getType() {
079    return type;
080  }
081
082  static class AiAgentDeserializer extends JsonDeserializer<AiAgent> {
083
084    public AiAgentDeserializer() {
085      super();
086    }
087
088    @Override
089    public AiAgent deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
090      JsonNode node = JsonManager.jsonToSerializedData(jp);
091      JsonNode discriminant0 = node.get("type");
092      if (!(discriminant0 == null)) {
093        switch (discriminant0.asText()) {
094          case "ai_agent_ask":
095            return new AiAgent(JsonManager.deserialize(node, AiAgentAsk.class));
096          case "ai_agent_text_gen":
097            return new AiAgent(JsonManager.deserialize(node, AiAgentTextGen.class));
098          case "ai_agent_extract":
099            return new AiAgent(JsonManager.deserialize(node, AiAgentExtract.class));
100          case "ai_agent_extract_structured":
101            return new AiAgent(JsonManager.deserialize(node, AiAgentExtractStructured.class));
102        }
103      }
104      throw new JsonMappingException(jp, "Unable to deserialize AiAgent");
105    }
106  }
107}