001package com.box.sdkgen.managers.retentionpolicies;
002
003import com.box.sdkgen.internal.OneOfTwo;
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        CreateRetentionPolicyRequestBodyRetentionLengthField
017            .CreateRetentionPolicyRequestBodyRetentionLengthFieldDeserializer.class)
018@JsonSerialize(using = OneOfTwo.OneOfTwoSerializer.class)
019public class CreateRetentionPolicyRequestBodyRetentionLengthField
020    extends OneOfTwo<String, Integer> {
021
022  public CreateRetentionPolicyRequestBodyRetentionLengthField(String string) {
023    super(string, null);
024  }
025
026  public CreateRetentionPolicyRequestBodyRetentionLengthField(Integer integerNumber) {
027    super(null, integerNumber);
028  }
029
030  public boolean isString() {
031    return value0 != null;
032  }
033
034  public String getString() {
035    return value0;
036  }
037
038  public boolean isIntegerNumber() {
039    return value1 != null;
040  }
041
042  public Integer getIntegerNumber() {
043    return value1;
044  }
045
046  static class CreateRetentionPolicyRequestBodyRetentionLengthFieldDeserializer
047      extends JsonDeserializer<CreateRetentionPolicyRequestBodyRetentionLengthField> {
048
049    public CreateRetentionPolicyRequestBodyRetentionLengthFieldDeserializer() {
050      super();
051    }
052
053    @Override
054    public CreateRetentionPolicyRequestBodyRetentionLengthField deserialize(
055        JsonParser jp, DeserializationContext ctxt) throws IOException {
056      JsonNode node = JsonManager.jsonToSerializedData(jp);
057      if (node.isInt()) {
058        return new CreateRetentionPolicyRequestBodyRetentionLengthField(
059            OneOfTwo.OBJECT_MAPPER.convertValue(node, Integer.class));
060      }
061      try {
062        return new CreateRetentionPolicyRequestBodyRetentionLengthField(
063            OneOfTwo.OBJECT_MAPPER.convertValue(node, String.class));
064      } catch (Exception ignored) {
065      }
066      throw new JsonMappingException(
067          jp, "Unable to deserialize CreateRetentionPolicyRequestBodyRetentionLengthField");
068    }
069  }
070}