001package com.box.sdkgen.schemas.retentionpolicymaxextensionlengthrequest;
002
003import com.box.sdkgen.internal.OneOfThree;
004import com.box.sdkgen.serialization.json.JsonManager;
005import com.fasterxml.jackson.core.JsonParser;
006import com.fasterxml.jackson.databind.DeserializationContext;
007import com.fasterxml.jackson.databind.JsonDeserializer;
008import com.fasterxml.jackson.databind.JsonMappingException;
009import com.fasterxml.jackson.databind.JsonNode;
010import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
011import com.fasterxml.jackson.databind.annotation.JsonSerialize;
012import java.io.IOException;
013
014@JsonDeserialize(
015    using =
016        RetentionPolicyMaxExtensionLengthRequest
017            .RetentionPolicyMaxExtensionLengthRequestDeserializer.class)
018@JsonSerialize(using = OneOfThree.OneOfThreeSerializer.class)
019public class RetentionPolicyMaxExtensionLengthRequest
020    extends OneOfThree<RetentionPolicyMaxExtensionLengthRequestEnum, String, Integer> {
021
022  public RetentionPolicyMaxExtensionLengthRequest(
023      RetentionPolicyMaxExtensionLengthRequestEnum retentionPolicyMaxExtensionLengthRequestEnum) {
024    super(retentionPolicyMaxExtensionLengthRequestEnum, null, null);
025  }
026
027  public RetentionPolicyMaxExtensionLengthRequest(String string) {
028    super(null, string, null);
029  }
030
031  public RetentionPolicyMaxExtensionLengthRequest(Integer integerNumber) {
032    super(null, null, integerNumber);
033  }
034
035  public boolean isRetentionPolicyMaxExtensionLengthRequestEnum() {
036    return value0 != null;
037  }
038
039  public RetentionPolicyMaxExtensionLengthRequestEnum
040      getRetentionPolicyMaxExtensionLengthRequestEnum() {
041    return value0;
042  }
043
044  public boolean isString() {
045    return value1 != null;
046  }
047
048  public String getString() {
049    return value1;
050  }
051
052  public boolean isIntegerNumber() {
053    return value2 != null;
054  }
055
056  public Integer getIntegerNumber() {
057    return value2;
058  }
059
060  static class RetentionPolicyMaxExtensionLengthRequestDeserializer
061      extends JsonDeserializer<RetentionPolicyMaxExtensionLengthRequest> {
062
063    public RetentionPolicyMaxExtensionLengthRequestDeserializer() {
064      super();
065    }
066
067    @Override
068    public RetentionPolicyMaxExtensionLengthRequest deserialize(
069        JsonParser jp, DeserializationContext ctxt) throws IOException {
070      JsonNode node = JsonManager.jsonToSerializedData(jp);
071      if (node.isInt()) {
072        return new RetentionPolicyMaxExtensionLengthRequest(
073            OneOfThree.OBJECT_MAPPER.convertValue(node, Integer.class));
074      }
075      try {
076        return new RetentionPolicyMaxExtensionLengthRequest(
077            OneOfThree.OBJECT_MAPPER.convertValue(
078                node, RetentionPolicyMaxExtensionLengthRequestEnum.class));
079      } catch (Exception ignored) {
080      }
081      try {
082        return new RetentionPolicyMaxExtensionLengthRequest(
083            OneOfThree.OBJECT_MAPPER.convertValue(node, String.class));
084      } catch (Exception ignored) {
085      }
086      throw new JsonMappingException(
087          jp, "Unable to deserialize RetentionPolicyMaxExtensionLengthRequest");
088    }
089  }
090}