001package com.box.sdkgen.managers.webhooks; 002 003import com.box.sdkgen.internal.SerializableObject; 004import com.box.sdkgen.serialization.json.EnumWrapper; 005import com.box.sdkgen.serialization.json.Valuable; 006import com.fasterxml.jackson.annotation.JsonFilter; 007import com.fasterxml.jackson.annotation.JsonProperty; 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 CreateWebhookRequestBody extends SerializableObject { 024 025 /** The item that will trigger the webhook. */ 026 protected final CreateWebhookRequestBodyTargetField target; 027 028 /** The URL that is notified by this webhook. */ 029 protected final 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 final List<EnumWrapper<CreateWebhookRequestBodyTriggersField>> triggers; 035 036 public CreateWebhookRequestBody( 037 @JsonProperty("target") CreateWebhookRequestBodyTargetField target, 038 @JsonProperty("address") String address, 039 @JsonProperty("triggers") List<? extends Valuable> triggers) { 040 super(); 041 this.target = target; 042 this.address = address; 043 this.triggers = 044 EnumWrapper.wrapValuableEnumList(triggers, CreateWebhookRequestBodyTriggersField.class); 045 } 046 047 public CreateWebhookRequestBodyTargetField getTarget() { 048 return target; 049 } 050 051 public String getAddress() { 052 return address; 053 } 054 055 public List<EnumWrapper<CreateWebhookRequestBodyTriggersField>> getTriggers() { 056 return triggers; 057 } 058 059 @Override 060 public boolean equals(Object o) { 061 if (this == o) { 062 return true; 063 } 064 if (o == null || getClass() != o.getClass()) { 065 return false; 066 } 067 CreateWebhookRequestBody casted = (CreateWebhookRequestBody) o; 068 return Objects.equals(target, casted.target) 069 && Objects.equals(address, casted.address) 070 && Objects.equals(triggers, casted.triggers); 071 } 072 073 @Override 074 public int hashCode() { 075 return Objects.hash(target, address, triggers); 076 } 077 078 @Override 079 public String toString() { 080 return "CreateWebhookRequestBody{" 081 + "target='" 082 + target 083 + '\'' 084 + ", " 085 + "address='" 086 + address 087 + '\'' 088 + ", " 089 + "triggers='" 090 + triggers 091 + '\'' 092 + "}"; 093 } 094 095 public static class TriggersDeserializer 096 extends JsonDeserializer<List<EnumWrapper<CreateWebhookRequestBodyTriggersField>>> { 097 098 public final JsonDeserializer<EnumWrapper<CreateWebhookRequestBodyTriggersField>> 099 elementDeserializer; 100 101 public TriggersDeserializer() { 102 super(); 103 this.elementDeserializer = 104 new CreateWebhookRequestBodyTriggersField 105 .CreateWebhookRequestBodyTriggersFieldDeserializer(); 106 } 107 108 @Override 109 public List<EnumWrapper<CreateWebhookRequestBodyTriggersField>> deserialize( 110 JsonParser p, DeserializationContext ctxt) throws IOException { 111 JsonNode node = p.getCodec().readTree(p); 112 List<EnumWrapper<CreateWebhookRequestBodyTriggersField>> elements = new ArrayList<>(); 113 for (JsonNode item : node) { 114 JsonParser pa = item.traverse(p.getCodec()); 115 pa.nextToken(); 116 elements.add(elementDeserializer.deserialize(pa, ctxt)); 117 } 118 return elements; 119 } 120 } 121 122 public static class TriggersSerializer 123 extends JsonSerializer<List<EnumWrapper<CreateWebhookRequestBodyTriggersField>>> { 124 125 public final JsonSerializer<EnumWrapper<CreateWebhookRequestBodyTriggersField>> 126 elementSerializer; 127 128 public TriggersSerializer() { 129 super(); 130 this.elementSerializer = 131 new CreateWebhookRequestBodyTriggersField 132 .CreateWebhookRequestBodyTriggersFieldSerializer(); 133 } 134 135 @Override 136 public void serialize( 137 List<EnumWrapper<CreateWebhookRequestBodyTriggersField>> value, 138 JsonGenerator gen, 139 SerializerProvider serializers) 140 throws IOException { 141 gen.writeStartArray(); 142 for (EnumWrapper<CreateWebhookRequestBodyTriggersField> item : value) { 143 elementSerializer.serialize(item, gen, serializers); 144 } 145 gen.writeEndArray(); 146 } 147 } 148}