001
002package com.commercetools.api.models.message;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009import javax.validation.Valid;
010import javax.validation.constraints.NotNull;
011
012import com.commercetools.api.models.order.Delivery;
013import com.fasterxml.jackson.annotation.*;
014import com.fasterxml.jackson.databind.annotation.*;
015
016import io.vrap.rmf.base.client.utils.Generated;
017
018/**
019 *  <p>Generated after a successful Remove Delivery update action.</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 *     DeliveryRemovedMessagePayload deliveryRemovedMessagePayload = DeliveryRemovedMessagePayload.builder()
026 *             .delivery(deliveryBuilder -> deliveryBuilder)
027 *             .build()
028 * </code></pre>
029 * </div>
030 */
031@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
032@JsonDeserialize(as = DeliveryRemovedMessagePayloadImpl.class)
033public interface DeliveryRemovedMessagePayload extends OrderMessagePayload {
034
035    /**
036     * discriminator value for DeliveryRemovedMessagePayload
037     */
038    String DELIVERY_REMOVED = "DeliveryRemoved";
039
040    /**
041     *  <p>The Delivery that was removed from the Order.</p>
042     * @return delivery
043     */
044    @NotNull
045    @Valid
046    @JsonProperty("delivery")
047    public Delivery getDelivery();
048
049    /**
050     *  <p>User-defined unique identifier of the Shipping Method in a Cart with <code>Multiple</code> ShippingMode.</p>
051     * @return shippingKey
052     */
053
054    @JsonProperty("shippingKey")
055    public String getShippingKey();
056
057    /**
058     *  <p>The Delivery that was removed from the Order.</p>
059     * @param delivery value to be set
060     */
061
062    public void setDelivery(final Delivery delivery);
063
064    /**
065     *  <p>User-defined unique identifier of the Shipping Method in a Cart with <code>Multiple</code> ShippingMode.</p>
066     * @param shippingKey value to be set
067     */
068
069    public void setShippingKey(final String shippingKey);
070
071    /**
072     * factory method
073     * @return instance of DeliveryRemovedMessagePayload
074     */
075    public static DeliveryRemovedMessagePayload of() {
076        return new DeliveryRemovedMessagePayloadImpl();
077    }
078
079    /**
080     * factory method to create a shallow copy DeliveryRemovedMessagePayload
081     * @param template instance to be copied
082     * @return copy instance
083     */
084    public static DeliveryRemovedMessagePayload of(final DeliveryRemovedMessagePayload template) {
085        DeliveryRemovedMessagePayloadImpl instance = new DeliveryRemovedMessagePayloadImpl();
086        instance.setDelivery(template.getDelivery());
087        instance.setShippingKey(template.getShippingKey());
088        return instance;
089    }
090
091    /**
092     * factory method to create a deep copy of DeliveryRemovedMessagePayload
093     * @param template instance to be copied
094     * @return copy instance
095     */
096    @Nullable
097    public static DeliveryRemovedMessagePayload deepCopy(@Nullable final DeliveryRemovedMessagePayload template) {
098        if (template == null) {
099            return null;
100        }
101        DeliveryRemovedMessagePayloadImpl instance = new DeliveryRemovedMessagePayloadImpl();
102        instance.setDelivery(com.commercetools.api.models.order.Delivery.deepCopy(template.getDelivery()));
103        instance.setShippingKey(template.getShippingKey());
104        return instance;
105    }
106
107    /**
108     * builder factory method for DeliveryRemovedMessagePayload
109     * @return builder
110     */
111    public static DeliveryRemovedMessagePayloadBuilder builder() {
112        return DeliveryRemovedMessagePayloadBuilder.of();
113    }
114
115    /**
116     * create builder for DeliveryRemovedMessagePayload instance
117     * @param template instance with prefilled values for the builder
118     * @return builder
119     */
120    public static DeliveryRemovedMessagePayloadBuilder builder(final DeliveryRemovedMessagePayload template) {
121        return DeliveryRemovedMessagePayloadBuilder.of(template);
122    }
123
124    /**
125     * accessor map function
126     * @param <T> mapped type
127     * @param helper function to map the object
128     * @return mapped value
129     */
130    default <T> T withDeliveryRemovedMessagePayload(Function<DeliveryRemovedMessagePayload, T> helper) {
131        return helper.apply(this);
132    }
133
134    /**
135     * gives a TypeReference for usage with Jackson DataBind
136     * @return TypeReference
137     */
138    public static com.fasterxml.jackson.core.type.TypeReference<DeliveryRemovedMessagePayload> typeReference() {
139        return new com.fasterxml.jackson.core.type.TypeReference<DeliveryRemovedMessagePayload>() {
140            @Override
141            public String toString() {
142                return "TypeReference<DeliveryRemovedMessagePayload>";
143            }
144        };
145    }
146}