001package com.box.sdkgen.managers.webhooks; 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 UpdateWebhookByIdRequestBody extends SerializableObject { 024 025 /** The item that will trigger the webhook. */ 026 protected UpdateWebhookByIdRequestBodyTargetField target; 027 028 /** The URL that is notified by this webhook. */ 029 protected String address; 030 031 /** An array of event names that this webhook is to be triggered for. */ 032 @JsonDeserialize(using = TriggersDeserializer.class) 033 @JsonSerialize(using = TriggersSerializer.class) 034 protected List<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>> triggers; 035 036 public UpdateWebhookByIdRequestBody() { 037 super(); 038 } 039 040 protected UpdateWebhookByIdRequestBody(Builder builder) { 041 super(); 042 this.target = builder.target; 043 this.address = builder.address; 044 this.triggers = builder.triggers; 045 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 046 } 047 048 public UpdateWebhookByIdRequestBodyTargetField getTarget() { 049 return target; 050 } 051 052 public String getAddress() { 053 return address; 054 } 055 056 public List<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>> getTriggers() { 057 return triggers; 058 } 059 060 @Override 061 public boolean equals(Object o) { 062 if (this == o) { 063 return true; 064 } 065 if (o == null || getClass() != o.getClass()) { 066 return false; 067 } 068 UpdateWebhookByIdRequestBody casted = (UpdateWebhookByIdRequestBody) o; 069 return Objects.equals(target, casted.target) 070 && Objects.equals(address, casted.address) 071 && Objects.equals(triggers, casted.triggers); 072 } 073 074 @Override 075 public int hashCode() { 076 return Objects.hash(target, address, triggers); 077 } 078 079 @Override 080 public String toString() { 081 return "UpdateWebhookByIdRequestBody{" 082 + "target='" 083 + target 084 + '\'' 085 + ", " 086 + "address='" 087 + address 088 + '\'' 089 + ", " 090 + "triggers='" 091 + triggers 092 + '\'' 093 + "}"; 094 } 095 096 public static class Builder extends NullableFieldTracker { 097 098 protected UpdateWebhookByIdRequestBodyTargetField target; 099 100 protected String address; 101 102 protected List<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>> triggers; 103 104 public Builder target(UpdateWebhookByIdRequestBodyTargetField target) { 105 this.target = target; 106 return this; 107 } 108 109 public Builder address(String address) { 110 this.address = address; 111 return this; 112 } 113 114 public Builder triggers(List<? extends Valuable> triggers) { 115 this.triggers = 116 EnumWrapper.wrapValuableEnumList( 117 triggers, UpdateWebhookByIdRequestBodyTriggersField.class); 118 return this; 119 } 120 121 public UpdateWebhookByIdRequestBody build() { 122 return new UpdateWebhookByIdRequestBody(this); 123 } 124 } 125 126 public static class TriggersDeserializer 127 extends JsonDeserializer<List<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>>> { 128 129 public final JsonDeserializer<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>> 130 elementDeserializer; 131 132 public TriggersDeserializer() { 133 super(); 134 this.elementDeserializer = 135 new UpdateWebhookByIdRequestBodyTriggersField 136 .UpdateWebhookByIdRequestBodyTriggersFieldDeserializer(); 137 } 138 139 @Override 140 public List<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>> deserialize( 141 JsonParser p, DeserializationContext ctxt) throws IOException { 142 JsonNode node = p.getCodec().readTree(p); 143 List<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>> elements = new ArrayList<>(); 144 for (JsonNode item : node) { 145 JsonParser pa = item.traverse(p.getCodec()); 146 pa.nextToken(); 147 elements.add(elementDeserializer.deserialize(pa, ctxt)); 148 } 149 return elements; 150 } 151 } 152 153 public static class TriggersSerializer 154 extends JsonSerializer<List<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>>> { 155 156 public final JsonSerializer<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>> 157 elementSerializer; 158 159 public TriggersSerializer() { 160 super(); 161 this.elementSerializer = 162 new UpdateWebhookByIdRequestBodyTriggersField 163 .UpdateWebhookByIdRequestBodyTriggersFieldSerializer(); 164 } 165 166 @Override 167 public void serialize( 168 List<EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField>> value, 169 JsonGenerator gen, 170 SerializerProvider serializers) 171 throws IOException { 172 gen.writeStartArray(); 173 for (EnumWrapper<UpdateWebhookByIdRequestBodyTriggersField> item : value) { 174 elementSerializer.serialize(item, gen, serializers); 175 } 176 gen.writeEndArray(); 177 } 178 } 179}