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