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.annotation.JsonProperty; 009import com.fasterxml.jackson.core.JsonGenerator; 010import com.fasterxml.jackson.core.JsonParser; 011import com.fasterxml.jackson.databind.DeserializationContext; 012import com.fasterxml.jackson.databind.JsonDeserializer; 013import com.fasterxml.jackson.databind.JsonNode; 014import com.fasterxml.jackson.databind.JsonSerializer; 015import com.fasterxml.jackson.databind.SerializerProvider; 016import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 017import com.fasterxml.jackson.databind.annotation.JsonSerialize; 018import java.io.IOException; 019import java.util.ArrayList; 020import java.util.List; 021import java.util.Objects; 022 023@JsonFilter("nullablePropertyFilter") 024public class SignTemplateAdditionalInfoField extends SerializableObject { 025 026 /** Non editable fields. */ 027 @JsonDeserialize(using = NonEditableDeserializer.class) 028 @JsonSerialize(using = NonEditableSerializer.class) 029 @JsonProperty("non_editable") 030 protected List<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>> nonEditable; 031 032 /** Required fields. */ 033 protected SignTemplateAdditionalInfoRequiredField required; 034 035 public SignTemplateAdditionalInfoField() { 036 super(); 037 } 038 039 protected SignTemplateAdditionalInfoField(Builder builder) { 040 super(); 041 this.nonEditable = builder.nonEditable; 042 this.required = builder.required; 043 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 044 } 045 046 public List<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>> getNonEditable() { 047 return nonEditable; 048 } 049 050 public SignTemplateAdditionalInfoRequiredField getRequired() { 051 return required; 052 } 053 054 @Override 055 public boolean equals(Object o) { 056 if (this == o) { 057 return true; 058 } 059 if (o == null || getClass() != o.getClass()) { 060 return false; 061 } 062 SignTemplateAdditionalInfoField casted = (SignTemplateAdditionalInfoField) o; 063 return Objects.equals(nonEditable, casted.nonEditable) 064 && Objects.equals(required, casted.required); 065 } 066 067 @Override 068 public int hashCode() { 069 return Objects.hash(nonEditable, required); 070 } 071 072 @Override 073 public String toString() { 074 return "SignTemplateAdditionalInfoField{" 075 + "nonEditable='" 076 + nonEditable 077 + '\'' 078 + ", " 079 + "required='" 080 + required 081 + '\'' 082 + "}"; 083 } 084 085 public static class Builder extends NullableFieldTracker { 086 087 protected List<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>> nonEditable; 088 089 protected SignTemplateAdditionalInfoRequiredField required; 090 091 public Builder nonEditable(List<? extends Valuable> nonEditable) { 092 this.nonEditable = 093 EnumWrapper.wrapValuableEnumList( 094 nonEditable, SignTemplateAdditionalInfoNonEditableField.class); 095 return this; 096 } 097 098 public Builder required(SignTemplateAdditionalInfoRequiredField required) { 099 this.required = required; 100 return this; 101 } 102 103 public SignTemplateAdditionalInfoField build() { 104 return new SignTemplateAdditionalInfoField(this); 105 } 106 } 107 108 public static class NonEditableDeserializer 109 extends JsonDeserializer<List<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>>> { 110 111 public final JsonDeserializer<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>> 112 elementDeserializer; 113 114 public NonEditableDeserializer() { 115 super(); 116 this.elementDeserializer = 117 new SignTemplateAdditionalInfoNonEditableField 118 .SignTemplateAdditionalInfoNonEditableFieldDeserializer(); 119 } 120 121 @Override 122 public List<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>> deserialize( 123 JsonParser p, DeserializationContext ctxt) throws IOException { 124 JsonNode node = p.getCodec().readTree(p); 125 List<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>> elements = new ArrayList<>(); 126 for (JsonNode item : node) { 127 JsonParser pa = item.traverse(p.getCodec()); 128 pa.nextToken(); 129 elements.add(elementDeserializer.deserialize(pa, ctxt)); 130 } 131 return elements; 132 } 133 } 134 135 public static class NonEditableSerializer 136 extends JsonSerializer<List<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>>> { 137 138 public final JsonSerializer<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>> 139 elementSerializer; 140 141 public NonEditableSerializer() { 142 super(); 143 this.elementSerializer = 144 new SignTemplateAdditionalInfoNonEditableField 145 .SignTemplateAdditionalInfoNonEditableFieldSerializer(); 146 } 147 148 @Override 149 public void serialize( 150 List<EnumWrapper<SignTemplateAdditionalInfoNonEditableField>> value, 151 JsonGenerator gen, 152 SerializerProvider serializers) 153 throws IOException { 154 gen.writeStartArray(); 155 for (EnumWrapper<SignTemplateAdditionalInfoNonEditableField> item : value) { 156 elementSerializer.serialize(item, gen, serializers); 157 } 158 gen.writeEndArray(); 159 } 160 } 161}