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 OneOfFour<T0, T1, T2, T3> extends SerializableObject implements OneOfUnion {
011  protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
012  protected T0 value0;
013  protected T1 value1;
014  protected T2 value2;
015  protected T3 value3;
016
017  public OneOfFour(T0 value0, T1 value1, T2 value2, T3 value3) {
018    this.value0 = value0;
019    this.value1 = value1;
020    this.value2 = value2;
021    this.value3 = value3;
022  }
023
024  @Override
025  public boolean hasAnyNonNullValue() {
026    return value0 != null || value1 != null || value2 != null || value3 != null;
027  }
028
029  public static class OneOfFourSerializer extends JsonSerializer<OneOfFour<?, ?, ?, ?>> {
030
031    public OneOfFourSerializer() {
032      super();
033    }
034
035    @Override
036    public void serialize(
037        OneOfFour<?, ?, ?, ?> itemEntryField, JsonGenerator gen, SerializerProvider provider)
038        throws IOException {
039      if (itemEntryField.value0 != null) {
040        JsonManager.WRITER.writeValue(gen, itemEntryField.value0);
041        return;
042      }
043      if (itemEntryField.value1 != null) {
044        JsonManager.WRITER.writeValue(gen, itemEntryField.value1);
045        return;
046      }
047      if (itemEntryField.value2 != null) {
048        JsonManager.WRITER.writeValue(gen, itemEntryField.value2);
049        return;
050      }
051      if (itemEntryField.value3 != null) {
052        JsonManager.WRITER.writeValue(gen, itemEntryField.value3);
053        return;
054      }
055      gen.writeNull();
056    }
057  }
058}