001package com.box.sdkgen.schemas.aitaxonomysource; 002 003import com.box.sdkgen.internal.OneOfTwo; 004import com.box.sdkgen.schemas.aitaxonomyfilereference.AiTaxonomyFileReference; 005import com.box.sdkgen.schemas.aitaxonomyreference.AiTaxonomyReference; 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 = AiTaxonomySource.AiTaxonomySourceDeserializer.class) 018@JsonSerialize(using = OneOfTwo.OneOfTwoSerializer.class) 019public class AiTaxonomySource extends OneOfTwo<AiTaxonomyReference, AiTaxonomyFileReference> { 020 021 protected final String type; 022 023 protected final String taxonomyKey; 024 025 public AiTaxonomySource(AiTaxonomyReference aiTaxonomyReference) { 026 super(aiTaxonomyReference, null); 027 this.type = EnumWrapper.convertToString(aiTaxonomyReference.getType()); 028 this.taxonomyKey = aiTaxonomyReference.getTaxonomyKey(); 029 } 030 031 public AiTaxonomySource(AiTaxonomyFileReference aiTaxonomyFileReference) { 032 super(null, aiTaxonomyFileReference); 033 this.type = EnumWrapper.convertToString(aiTaxonomyFileReference.getType()); 034 this.taxonomyKey = aiTaxonomyFileReference.getTaxonomyKey(); 035 } 036 037 public boolean isAiTaxonomyReference() { 038 return value0 != null; 039 } 040 041 public AiTaxonomyReference getAiTaxonomyReference() { 042 return value0; 043 } 044 045 public boolean isAiTaxonomyFileReference() { 046 return value1 != null; 047 } 048 049 public AiTaxonomyFileReference getAiTaxonomyFileReference() { 050 return value1; 051 } 052 053 public String getType() { 054 return type; 055 } 056 057 public String getTaxonomyKey() { 058 return taxonomyKey; 059 } 060 061 static class AiTaxonomySourceDeserializer extends JsonDeserializer<AiTaxonomySource> { 062 063 public AiTaxonomySourceDeserializer() { 064 super(); 065 } 066 067 @Override 068 public AiTaxonomySource deserialize(JsonParser jp, DeserializationContext ctxt) 069 throws IOException { 070 JsonNode node = JsonManager.jsonToSerializedData(jp); 071 JsonNode discriminant0 = node.get("type"); 072 if (!(discriminant0 == null)) { 073 switch (discriminant0.asText()) { 074 case "taxonomy": 075 return new AiTaxonomySource(JsonManager.deserialize(node, AiTaxonomyReference.class)); 076 case "file": 077 return new AiTaxonomySource( 078 JsonManager.deserialize(node, AiTaxonomyFileReference.class)); 079 } 080 } 081 throw new JsonMappingException(jp, "Unable to deserialize AiTaxonomySource"); 082 } 083 } 084}