001 002package com.commercetools.api.models.subscription; 003 004import java.time.*; 005import java.time.ZonedDateTime; 006import java.util.*; 007import java.util.function.Function; 008 009import javax.annotation.Nullable; 010import javax.validation.Valid; 011import javax.validation.constraints.NotNull; 012 013import com.fasterxml.jackson.annotation.*; 014import com.fasterxml.jackson.databind.annotation.*; 015 016import io.vrap.rmf.base.client.utils.Generated; 017 018/** 019 * <p>This payload is sent for a MessageSubscription.</p> 020 * 021 * <hr> 022 * Example to create an instance using the builder pattern 023 * <div class=code-example> 024 * <pre><code class='java'> 025 * MessageDeliveryPayload messageDeliveryPayload = MessageDeliveryPayload.builder() 026 * .projectKey("{projectKey}") 027 * .resource(resourceBuilder -> resourceBuilder) 028 * .id("{id}") 029 * .version(0.3) 030 * .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z")) 031 * .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z")) 032 * .sequenceNumber(0.3) 033 * .resourceVersion(0.3) 034 * .build() 035 * </code></pre> 036 * </div> 037 */ 038@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 039@JsonDeserialize(as = MessageDeliveryPayloadImpl.class) 040public interface MessageDeliveryPayload extends DeliveryPayload { 041 042 /** 043 * discriminator value for MessageDeliveryPayload 044 */ 045 String MESSAGE = "Message"; 046 047 /** 048 * <p>Unique ID of the message.</p> 049 * @return id 050 */ 051 @NotNull 052 @JsonProperty("id") 053 public String getId(); 054 055 /** 056 * <p>Last seen version of the resource.</p> 057 * @return version 058 */ 059 @NotNull 060 @JsonProperty("version") 061 public Long getVersion(); 062 063 /** 064 * <p>Date and time (UTC) the resource was initially created.</p> 065 * @return createdAt 066 */ 067 @NotNull 068 @JsonProperty("createdAt") 069 public ZonedDateTime getCreatedAt(); 070 071 /** 072 * <p>Date and time (UTC) the resource was last modified.</p> 073 * @return lastModifiedAt 074 */ 075 @NotNull 076 @JsonProperty("lastModifiedAt") 077 public ZonedDateTime getLastModifiedAt(); 078 079 /** 080 * <p>Used to ensure all messages of the resource are processed in correct order. The <code>sequenceNumber</code> of the next message of the resource is a successor of the <code>sequenceNumber</code> of the current message.</p> 081 * @return sequenceNumber 082 */ 083 @NotNull 084 @JsonProperty("sequenceNumber") 085 public Long getSequenceNumber(); 086 087 /** 088 * <p>Version of the resource on which the change was performed.</p> 089 * @return resourceVersion 090 */ 091 @NotNull 092 @JsonProperty("resourceVersion") 093 public Long getResourceVersion(); 094 095 /** 096 * <p>If the payload does not fit into the size limit or its format is not accepted by the messaging service, the <code>payloadNotIncluded</code> field is present.</p> 097 * @return payloadNotIncluded 098 */ 099 @Valid 100 @JsonProperty("payloadNotIncluded") 101 public PayloadNotIncluded getPayloadNotIncluded(); 102 103 /** 104 * <p>Unique ID of the message.</p> 105 * @param id value to be set 106 */ 107 108 public void setId(final String id); 109 110 /** 111 * <p>Last seen version of the resource.</p> 112 * @param version value to be set 113 */ 114 115 public void setVersion(final Long version); 116 117 /** 118 * <p>Date and time (UTC) the resource was initially created.</p> 119 * @param createdAt value to be set 120 */ 121 122 public void setCreatedAt(final ZonedDateTime createdAt); 123 124 /** 125 * <p>Date and time (UTC) the resource was last modified.</p> 126 * @param lastModifiedAt value to be set 127 */ 128 129 public void setLastModifiedAt(final ZonedDateTime lastModifiedAt); 130 131 /** 132 * <p>Used to ensure all messages of the resource are processed in correct order. The <code>sequenceNumber</code> of the next message of the resource is a successor of the <code>sequenceNumber</code> of the current message.</p> 133 * @param sequenceNumber value to be set 134 */ 135 136 public void setSequenceNumber(final Long sequenceNumber); 137 138 /** 139 * <p>Version of the resource on which the change was performed.</p> 140 * @param resourceVersion value to be set 141 */ 142 143 public void setResourceVersion(final Long resourceVersion); 144 145 /** 146 * <p>If the payload does not fit into the size limit or its format is not accepted by the messaging service, the <code>payloadNotIncluded</code> field is present.</p> 147 * @param payloadNotIncluded value to be set 148 */ 149 150 public void setPayloadNotIncluded(final PayloadNotIncluded payloadNotIncluded); 151 152 /** 153 * factory method 154 * @return instance of MessageDeliveryPayload 155 */ 156 public static MessageDeliveryPayload of() { 157 return new MessageDeliveryPayloadImpl(); 158 } 159 160 /** 161 * factory method to create a shallow copy MessageDeliveryPayload 162 * @param template instance to be copied 163 * @return copy instance 164 */ 165 public static MessageDeliveryPayload of(final MessageDeliveryPayload template) { 166 MessageDeliveryPayloadImpl instance = new MessageDeliveryPayloadImpl(); 167 instance.setProjectKey(template.getProjectKey()); 168 instance.setResource(template.getResource()); 169 instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers()); 170 instance.setId(template.getId()); 171 instance.setVersion(template.getVersion()); 172 instance.setCreatedAt(template.getCreatedAt()); 173 instance.setLastModifiedAt(template.getLastModifiedAt()); 174 instance.setSequenceNumber(template.getSequenceNumber()); 175 instance.setResourceVersion(template.getResourceVersion()); 176 instance.setPayloadNotIncluded(template.getPayloadNotIncluded()); 177 return instance; 178 } 179 180 /** 181 * factory method to create a deep copy of MessageDeliveryPayload 182 * @param template instance to be copied 183 * @return copy instance 184 */ 185 @Nullable 186 public static MessageDeliveryPayload deepCopy(@Nullable final MessageDeliveryPayload template) { 187 if (template == null) { 188 return null; 189 } 190 MessageDeliveryPayloadImpl instance = new MessageDeliveryPayloadImpl(); 191 instance.setProjectKey(template.getProjectKey()); 192 instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource())); 193 instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers 194 .deepCopy(template.getResourceUserProvidedIdentifiers())); 195 instance.setId(template.getId()); 196 instance.setVersion(template.getVersion()); 197 instance.setCreatedAt(template.getCreatedAt()); 198 instance.setLastModifiedAt(template.getLastModifiedAt()); 199 instance.setSequenceNumber(template.getSequenceNumber()); 200 instance.setResourceVersion(template.getResourceVersion()); 201 instance.setPayloadNotIncluded( 202 com.commercetools.api.models.subscription.PayloadNotIncluded.deepCopy(template.getPayloadNotIncluded())); 203 return instance; 204 } 205 206 /** 207 * builder factory method for MessageDeliveryPayload 208 * @return builder 209 */ 210 public static MessageDeliveryPayloadBuilder builder() { 211 return MessageDeliveryPayloadBuilder.of(); 212 } 213 214 /** 215 * create builder for MessageDeliveryPayload instance 216 * @param template instance with prefilled values for the builder 217 * @return builder 218 */ 219 public static MessageDeliveryPayloadBuilder builder(final MessageDeliveryPayload template) { 220 return MessageDeliveryPayloadBuilder.of(template); 221 } 222 223 /** 224 * accessor map function 225 * @param <T> mapped type 226 * @param helper function to map the object 227 * @return mapped value 228 */ 229 default <T> T withMessageDeliveryPayload(Function<MessageDeliveryPayload, T> helper) { 230 return helper.apply(this); 231 } 232 233 /** 234 * gives a TypeReference for usage with Jackson DataBind 235 * @return TypeReference 236 */ 237 public static com.fasterxml.jackson.core.type.TypeReference<MessageDeliveryPayload> typeReference() { 238 return new com.fasterxml.jackson.core.type.TypeReference<MessageDeliveryPayload>() { 239 @Override 240 public String toString() { 241 return "TypeReference<MessageDeliveryPayload>"; 242 } 243 }; 244 } 245}