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}