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}