001package com.box.sdkgen.schemas.v2025r0.shieldlistcontentv2025r0;
002
003import com.box.sdkgen.internal.OneOfFive;
004import com.box.sdkgen.schemas.v2025r0.shieldlistcontentcountryv2025r0.ShieldListContentCountryV2025R0;
005import com.box.sdkgen.schemas.v2025r0.shieldlistcontentdomainv2025r0.ShieldListContentDomainV2025R0;
006import com.box.sdkgen.schemas.v2025r0.shieldlistcontentemailv2025r0.ShieldListContentEmailV2025R0;
007import com.box.sdkgen.schemas.v2025r0.shieldlistcontentintegrationv2025r0.ShieldListContentIntegrationV2025R0;
008import com.box.sdkgen.schemas.v2025r0.shieldlistcontentipv2025r0.ShieldListContentIpV2025R0;
009import com.box.sdkgen.serialization.json.EnumWrapper;
010import com.box.sdkgen.serialization.json.JsonManager;
011import com.fasterxml.jackson.core.JsonParser;
012import com.fasterxml.jackson.databind.DeserializationContext;
013import com.fasterxml.jackson.databind.JsonDeserializer;
014import com.fasterxml.jackson.databind.JsonMappingException;
015import com.fasterxml.jackson.databind.JsonNode;
016import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
017import com.fasterxml.jackson.databind.annotation.JsonSerialize;
018import java.io.IOException;
019
020@JsonDeserialize(using = ShieldListContentV2025R0.ShieldListContentV2025R0Deserializer.class)
021@JsonSerialize(using = OneOfFive.OneOfFiveSerializer.class)
022public class ShieldListContentV2025R0
023    extends OneOfFive<
024        ShieldListContentCountryV2025R0,
025        ShieldListContentDomainV2025R0,
026        ShieldListContentEmailV2025R0,
027        ShieldListContentIpV2025R0,
028        ShieldListContentIntegrationV2025R0> {
029
030  protected final String type;
031
032  public ShieldListContentV2025R0(ShieldListContentCountryV2025R0 shieldListContentCountryV2025R0) {
033    super(shieldListContentCountryV2025R0, null, null, null, null);
034    this.type = EnumWrapper.convertToString(shieldListContentCountryV2025R0.getType());
035  }
036
037  public ShieldListContentV2025R0(ShieldListContentDomainV2025R0 shieldListContentDomainV2025R0) {
038    super(null, shieldListContentDomainV2025R0, null, null, null);
039    this.type = EnumWrapper.convertToString(shieldListContentDomainV2025R0.getType());
040  }
041
042  public ShieldListContentV2025R0(ShieldListContentEmailV2025R0 shieldListContentEmailV2025R0) {
043    super(null, null, shieldListContentEmailV2025R0, null, null);
044    this.type = EnumWrapper.convertToString(shieldListContentEmailV2025R0.getType());
045  }
046
047  public ShieldListContentV2025R0(ShieldListContentIpV2025R0 shieldListContentIpV2025R0) {
048    super(null, null, null, shieldListContentIpV2025R0, null);
049    this.type = EnumWrapper.convertToString(shieldListContentIpV2025R0.getType());
050  }
051
052  public ShieldListContentV2025R0(
053      ShieldListContentIntegrationV2025R0 shieldListContentIntegrationV2025R0) {
054    super(null, null, null, null, shieldListContentIntegrationV2025R0);
055    this.type = EnumWrapper.convertToString(shieldListContentIntegrationV2025R0.getType());
056  }
057
058  public boolean isShieldListContentCountryV2025R0() {
059    return value0 != null;
060  }
061
062  public ShieldListContentCountryV2025R0 getShieldListContentCountryV2025R0() {
063    return value0;
064  }
065
066  public boolean isShieldListContentDomainV2025R0() {
067    return value1 != null;
068  }
069
070  public ShieldListContentDomainV2025R0 getShieldListContentDomainV2025R0() {
071    return value1;
072  }
073
074  public boolean isShieldListContentEmailV2025R0() {
075    return value2 != null;
076  }
077
078  public ShieldListContentEmailV2025R0 getShieldListContentEmailV2025R0() {
079    return value2;
080  }
081
082  public boolean isShieldListContentIpV2025R0() {
083    return value3 != null;
084  }
085
086  public ShieldListContentIpV2025R0 getShieldListContentIpV2025R0() {
087    return value3;
088  }
089
090  public boolean isShieldListContentIntegrationV2025R0() {
091    return value4 != null;
092  }
093
094  public ShieldListContentIntegrationV2025R0 getShieldListContentIntegrationV2025R0() {
095    return value4;
096  }
097
098  public String getType() {
099    return type;
100  }
101
102  static class ShieldListContentV2025R0Deserializer
103      extends JsonDeserializer<ShieldListContentV2025R0> {
104
105    public ShieldListContentV2025R0Deserializer() {
106      super();
107    }
108
109    @Override
110    public ShieldListContentV2025R0 deserialize(JsonParser jp, DeserializationContext ctxt)
111        throws IOException {
112      JsonNode node = JsonManager.jsonToSerializedData(jp);
113      JsonNode discriminant0 = node.get("type");
114      if (!(discriminant0 == null)) {
115        switch (discriminant0.asText()) {
116          case "country":
117            return new ShieldListContentV2025R0(
118                JsonManager.deserialize(node, ShieldListContentCountryV2025R0.class));
119          case "domain":
120            return new ShieldListContentV2025R0(
121                JsonManager.deserialize(node, ShieldListContentDomainV2025R0.class));
122          case "email":
123            return new ShieldListContentV2025R0(
124                JsonManager.deserialize(node, ShieldListContentEmailV2025R0.class));
125          case "ip":
126            return new ShieldListContentV2025R0(
127                JsonManager.deserialize(node, ShieldListContentIpV2025R0.class));
128          case "integration":
129            return new ShieldListContentV2025R0(
130                JsonManager.deserialize(node, ShieldListContentIntegrationV2025R0.class));
131        }
132      }
133      throw new JsonMappingException(jp, "Unable to deserialize ShieldListContentV2025R0");
134    }
135  }
136}