001
002package com.commercetools.api.models.error;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009import javax.validation.constraints.NotNull;
010
011import com.fasterxml.jackson.annotation.*;
012import com.fasterxml.jackson.databind.annotation.*;
013
014import io.vrap.rmf.base.client.utils.Generated;
015
016/**
017 *  <p>Returned when Line Item or Custom Line Item quantities set under ItemShippingDetails do not match the sum of the quantities in their respective shipping details.</p>
018 *  <p>The error is returned as a failed response to the Create Order from Cart and Create Order in Store from Cart requests.</p>
019 *
020 * <hr>
021 * Example to create an instance using the builder pattern
022 * <div class=code-example>
023 * <pre><code class='java'>
024 *     InvalidItemShippingDetailsError invalidItemShippingDetailsError = InvalidItemShippingDetailsError.builder()
025 *             .message("{message}")
026 *             .subject("{subject}")
027 *             .itemId("{itemId}")
028 *             .build()
029 * </code></pre>
030 * </div>
031 */
032@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
033@JsonDeserialize(as = InvalidItemShippingDetailsErrorImpl.class)
034public interface InvalidItemShippingDetailsError extends ErrorObject {
035
036    /**
037     * discriminator value for InvalidItemShippingDetailsError
038     */
039    String INVALID_ITEM_SHIPPING_DETAILS = "InvalidItemShippingDetails";
040
041    /**
042     *
043     * @return code
044     */
045    @NotNull
046    @JsonProperty("code")
047    public String getCode();
048
049    /**
050     *  <p><code>"Inconsistent shipping details for $subject with ID $itemId. $subject quantity is $itemQuantity and shippingTargets quantity sum is $quantitySum."</code></p>
051     * @return message
052     */
053    @NotNull
054    @JsonProperty("message")
055    public String getMessage();
056
057    /**
058     *  <p><code>"LineItem"</code> or <code>"CustomLineItem"</code></p>
059     * @return subject
060     */
061    @NotNull
062    @JsonProperty("subject")
063    public String getSubject();
064
065    /**
066     *  <p>Unique identifier of the Line Item or Custom Line Item.</p>
067     * @return itemId
068     */
069    @NotNull
070    @JsonProperty("itemId")
071    public String getItemId();
072
073    /**
074     *  <p><code>"Inconsistent shipping details for $subject with ID $itemId. $subject quantity is $itemQuantity and shippingTargets quantity sum is $quantitySum."</code></p>
075     * @param message value to be set
076     */
077
078    public void setMessage(final String message);
079
080    /**
081     *  <p><code>"LineItem"</code> or <code>"CustomLineItem"</code></p>
082     * @param subject value to be set
083     */
084
085    public void setSubject(final String subject);
086
087    /**
088     *  <p>Unique identifier of the Line Item or Custom Line Item.</p>
089     * @param itemId value to be set
090     */
091
092    public void setItemId(final String itemId);
093
094    /**
095     * factory method
096     * @return instance of InvalidItemShippingDetailsError
097     */
098    public static InvalidItemShippingDetailsError of() {
099        return new InvalidItemShippingDetailsErrorImpl();
100    }
101
102    /**
103     * factory method to create a shallow copy InvalidItemShippingDetailsError
104     * @param template instance to be copied
105     * @return copy instance
106     */
107    public static InvalidItemShippingDetailsError of(final InvalidItemShippingDetailsError template) {
108        InvalidItemShippingDetailsErrorImpl instance = new InvalidItemShippingDetailsErrorImpl();
109        instance.setMessage(template.getMessage());
110        Optional.ofNullable(template.values()).ifPresent(t -> t.forEach(instance::setValue));
111        instance.setSubject(template.getSubject());
112        instance.setItemId(template.getItemId());
113        return instance;
114    }
115
116    /**
117     * factory method to create a deep copy of InvalidItemShippingDetailsError
118     * @param template instance to be copied
119     * @return copy instance
120     */
121    @Nullable
122    public static InvalidItemShippingDetailsError deepCopy(@Nullable final InvalidItemShippingDetailsError template) {
123        if (template == null) {
124            return null;
125        }
126        InvalidItemShippingDetailsErrorImpl instance = new InvalidItemShippingDetailsErrorImpl();
127        instance.setMessage(template.getMessage());
128        Optional.ofNullable(template.values()).ifPresent(t -> t.forEach(instance::setValue));
129        instance.setSubject(template.getSubject());
130        instance.setItemId(template.getItemId());
131        return instance;
132    }
133
134    /**
135     * builder factory method for InvalidItemShippingDetailsError
136     * @return builder
137     */
138    public static InvalidItemShippingDetailsErrorBuilder builder() {
139        return InvalidItemShippingDetailsErrorBuilder.of();
140    }
141
142    /**
143     * create builder for InvalidItemShippingDetailsError instance
144     * @param template instance with prefilled values for the builder
145     * @return builder
146     */
147    public static InvalidItemShippingDetailsErrorBuilder builder(final InvalidItemShippingDetailsError template) {
148        return InvalidItemShippingDetailsErrorBuilder.of(template);
149    }
150
151    /**
152     * accessor map function
153     * @param <T> mapped type
154     * @param helper function to map the object
155     * @return mapped value
156     */
157    default <T> T withInvalidItemShippingDetailsError(Function<InvalidItemShippingDetailsError, T> helper) {
158        return helper.apply(this);
159    }
160
161    /**
162     * gives a TypeReference for usage with Jackson DataBind
163     * @return TypeReference
164     */
165    public static com.fasterxml.jackson.core.type.TypeReference<InvalidItemShippingDetailsError> typeReference() {
166        return new com.fasterxml.jackson.core.type.TypeReference<InvalidItemShippingDetailsError>() {
167            @Override
168            public String toString() {
169                return "TypeReference<InvalidItemShippingDetailsError>";
170            }
171        };
172    }
173}