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}