001package com.box.sdkgen.schemas.signtemplate;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.serialization.json.EnumWrapper;
006import com.box.sdkgen.serialization.json.Valuable;
007import com.fasterxml.jackson.annotation.JsonFilter;
008import com.fasterxml.jackson.core.JsonGenerator;
009import com.fasterxml.jackson.core.JsonParser;
010import com.fasterxml.jackson.databind.DeserializationContext;
011import com.fasterxml.jackson.databind.JsonDeserializer;
012import com.fasterxml.jackson.databind.JsonNode;
013import com.fasterxml.jackson.databind.JsonSerializer;
014import com.fasterxml.jackson.databind.SerializerProvider;
015import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
016import com.fasterxml.jackson.databind.annotation.JsonSerialize;
017import java.io.IOException;
018import java.util.ArrayList;
019import java.util.List;
020import java.util.Objects;
021
022@JsonFilter("nullablePropertyFilter")
023public class SignTemplateAdditionalInfoRequiredField extends SerializableObject {
024
025  /** Required signer fields. */
026  @JsonDeserialize(using = SignersDeserializer.class)
027  @JsonSerialize(using = SignersSerializer.class)
028  protected List<List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>> signers;
029
030  public SignTemplateAdditionalInfoRequiredField() {
031    super();
032  }
033
034  protected SignTemplateAdditionalInfoRequiredField(Builder builder) {
035    super();
036    this.signers = builder.signers;
037    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
038  }
039
040  public List<List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>> getSigners() {
041    return signers;
042  }
043
044  @Override
045  public boolean equals(Object o) {
046    if (this == o) {
047      return true;
048    }
049    if (o == null || getClass() != o.getClass()) {
050      return false;
051    }
052    SignTemplateAdditionalInfoRequiredField casted = (SignTemplateAdditionalInfoRequiredField) o;
053    return Objects.equals(signers, casted.signers);
054  }
055
056  @Override
057  public int hashCode() {
058    return Objects.hash(signers);
059  }
060
061  @Override
062  public String toString() {
063    return "SignTemplateAdditionalInfoRequiredField{" + "signers='" + signers + '\'' + "}";
064  }
065
066  public static class Builder extends NullableFieldTracker {
067
068    protected List<List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>> signers;
069
070    public Builder signers(List<List<? extends Valuable>> signers) {
071      this.signers =
072          EnumWrapper.wrapValuableEnumListOfLists(
073              signers, SignTemplateAdditionalInfoRequiredSignersField.class);
074      return this;
075    }
076
077    public SignTemplateAdditionalInfoRequiredField build() {
078      return new SignTemplateAdditionalInfoRequiredField(this);
079    }
080  }
081
082  public static class SignersDeserializer
083      extends JsonDeserializer<
084          List<List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>>> {
085
086    public final JsonDeserializer<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>
087        elementDeserializer;
088
089    public SignersDeserializer() {
090      super();
091      this.elementDeserializer =
092          new SignTemplateAdditionalInfoRequiredSignersField
093              .SignTemplateAdditionalInfoRequiredSignersFieldDeserializer();
094    }
095
096    @Override
097    public List<List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>> deserialize(
098        JsonParser p, DeserializationContext ctxt) throws IOException {
099      JsonNode node = p.getCodec().readTree(p);
100      List<List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>> elements =
101          new ArrayList<>();
102      for (JsonNode item : node) {
103        List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>> innerElements =
104            new ArrayList<>();
105        for (JsonNode innerItem : item) {
106          JsonParser pa = innerItem.traverse(p.getCodec());
107          pa.nextToken();
108          innerElements.add(elementDeserializer.deserialize(pa, ctxt));
109        }
110        elements.add(innerElements);
111      }
112      return elements;
113    }
114  }
115
116  public static class SignersSerializer
117      extends JsonSerializer<
118          List<List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>>> {
119
120    public final JsonSerializer<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>
121        elementSerializer;
122
123    public SignersSerializer() {
124      super();
125      this.elementSerializer =
126          new SignTemplateAdditionalInfoRequiredSignersField
127              .SignTemplateAdditionalInfoRequiredSignersFieldSerializer();
128    }
129
130    @Override
131    public void serialize(
132        List<List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>>> value,
133        JsonGenerator gen,
134        SerializerProvider serializers)
135        throws IOException {
136      gen.writeStartArray();
137      for (List<EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField>> item : value) {
138        gen.writeStartArray();
139        for (EnumWrapper<SignTemplateAdditionalInfoRequiredSignersField> innerItem : item) {
140          elementSerializer.serialize(innerItem, gen, serializers);
141        }
142        gen.writeEndArray();
143      }
144      gen.writeEndArray();
145    }
146  }
147}