001package com.box.sdkgen.schemas.aiaskagent;
002
003import com.box.sdkgen.internal.OneOfTwo;
004import com.box.sdkgen.schemas.aiagentask.AiAgentAsk;
005import com.box.sdkgen.schemas.aiagentreference.AiAgentReference;
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 = AiAskAgent.AiAskAgentDeserializer.class)
018@JsonSerialize(using = OneOfTwo.OneOfTwoSerializer.class)
019public class AiAskAgent extends OneOfTwo<AiAgentReference, AiAgentAsk> {
020
021  protected final String type;
022
023  public AiAskAgent(AiAgentReference aiAgentReference) {
024    super(aiAgentReference, null);
025    this.type = EnumWrapper.convertToString(aiAgentReference.getType());
026  }
027
028  public AiAskAgent(AiAgentAsk aiAgentAsk) {
029    super(null, aiAgentAsk);
030    this.type = EnumWrapper.convertToString(aiAgentAsk.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 isAiAgentAsk() {
042    return value1 != null;
043  }
044
045  public AiAgentAsk getAiAgentAsk() {
046    return value1;
047  }
048
049  public String getType() {
050    return type;
051  }
052
053  static class AiAskAgentDeserializer extends JsonDeserializer<AiAskAgent> {
054
055    public AiAskAgentDeserializer() {
056      super();
057    }
058
059    @Override
060    public AiAskAgent deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
061      JsonNode node = JsonManager.jsonToSerializedData(jp);
062      JsonNode discriminant0 = node.get("type");
063      if (!(discriminant0 == null)) {
064        switch (discriminant0.asText()) {
065          case "ai_agent_id":
066            return new AiAskAgent(JsonManager.deserialize(node, AiAgentReference.class));
067          case "ai_agent_ask":
068            return new AiAskAgent(JsonManager.deserialize(node, AiAgentAsk.class));
069        }
070      }
071      throw new JsonMappingException(jp, "Unable to deserialize AiAskAgent");
072    }
073  }
074}