001package com.box.sdkgen.internal;
002
003import com.box.sdkgen.serialization.json.JsonManager;
004import com.fasterxml.jackson.core.JsonGenerator;
005import com.fasterxml.jackson.databind.JsonSerializer;
006import com.fasterxml.jackson.databind.ObjectMapper;
007import com.fasterxml.jackson.databind.SerializerProvider;
008import java.io.IOException;
009
010public class OneOfTwo<T0, T1> extends SerializableObject implements OneOfUnion {
011  protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
012  protected T0 value0;
013  protected T1 value1;
014
015  public OneOfTwo(T0 value0, T1 value1) {
016    this.value0 = value0;
017    this.value1 = value1;
018  }
019
020  @Override
021  public boolean hasAnyNonNullValue() {
022    return value0 != null || value1 != null;
023  }
024
025  public static class OneOfTwoSerializer extends JsonSerializer<OneOfTwo<?, ?>> {
026
027    public OneOfTwoSerializer() {
028      super();
029    }
030
031    @Override
032    public void serialize(
033        OneOfTwo<?, ?> itemEntryField, JsonGenerator gen, SerializerProvider provider)
034        throws IOException {
035      if (itemEntryField.value0 != null) {
036        JsonManager.WRITER.writeValue(gen, itemEntryField.value0);
037        return;
038      }
039      if (itemEntryField.value1 != null) {
040        JsonManager.WRITER.writeValue(gen, itemEntryField.value1);
041        return;
042      }
043      gen.writeNull();
044    }
045  }
046}