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 OneOfThree<T0, T1, T2> 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
016  public OneOfThree(T0 value0, T1 value1, T2 value2) {
017    this.value0 = value0;
018    this.value1 = value1;
019    this.value2 = value2;
020  }
021
022  @Override
023  public boolean hasAnyNonNullValue() {
024    return value0 != null || value1 != null || value2 != null;
025  }
026
027  public static class OneOfThreeSerializer extends JsonSerializer<OneOfThree<?, ?, ?>> {
028
029    public OneOfThreeSerializer() {
030      super();
031    }
032
033    @Override
034    public void serialize(
035        OneOfThree<?, ?, ?> itemEntryField, JsonGenerator gen, SerializerProvider provider)
036        throws IOException {
037      if (itemEntryField.value0 != null) {
038        JsonManager.WRITER.writeValue(gen, itemEntryField.value0);
039        return;
040      }
041      if (itemEntryField.value1 != null) {
042        JsonManager.WRITER.writeValue(gen, itemEntryField.value1);
043        return;
044      }
045      if (itemEntryField.value2 != null) {
046        JsonManager.WRITER.writeValue(gen, itemEntryField.value2);
047        return;
048      }
049      gen.writeNull();
050    }
051  }
052}