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}