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