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.Valid;
010import javax.validation.constraints.NotNull;
011
012import com.fasterxml.jackson.annotation.*;
013import com.fasterxml.jackson.databind.annotation.*;
014
015import io.vrap.rmf.base.client.utils.Generated;
016
017/**
018 *  <p>Returned when a Product Variant value conflicts with an existing one during an Update Product request.</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 *     DuplicateVariantValuesError duplicateVariantValuesError = DuplicateVariantValuesError.builder()
025 *             .message("{message}")
026 *             .variantValues(variantValuesBuilder -> variantValuesBuilder)
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 = DuplicateVariantValuesErrorImpl.class)
033public interface DuplicateVariantValuesError extends ErrorObject {
034
035    /**
036     * discriminator value for DuplicateVariantValuesError
037     */
038    String DUPLICATE_VARIANT_VALUES = "DuplicateVariantValues";
039
040    /**
041     *
042     * @return code
043     */
044    @NotNull
045    @JsonProperty("code")
046    public String getCode();
047
048    /**
049     *  <p><code>"A duplicate combination of the variant values (sku, key, images, prices, attributes) exists."</code></p>
050     * @return message
051     */
052    @NotNull
053    @JsonProperty("message")
054    public String getMessage();
055
056    /**
057     *  <p>Every Product Variant must have a distinct combination of SKU, prices, and custom Attribute values.</p>
058     * @return variantValues
059     */
060    @NotNull
061    @Valid
062    @JsonProperty("variantValues")
063    public VariantValues getVariantValues();
064
065    /**
066     *  <p><code>"A duplicate combination of the variant values (sku, key, images, prices, attributes) exists."</code></p>
067     * @param message value to be set
068     */
069
070    public void setMessage(final String message);
071
072    /**
073     *  <p>Every Product Variant must have a distinct combination of SKU, prices, and custom Attribute values.</p>
074     * @param variantValues value to be set
075     */
076
077    public void setVariantValues(final VariantValues variantValues);
078
079    /**
080     * factory method
081     * @return instance of DuplicateVariantValuesError
082     */
083    public static DuplicateVariantValuesError of() {
084        return new DuplicateVariantValuesErrorImpl();
085    }
086
087    /**
088     * factory method to create a shallow copy DuplicateVariantValuesError
089     * @param template instance to be copied
090     * @return copy instance
091     */
092    public static DuplicateVariantValuesError of(final DuplicateVariantValuesError template) {
093        DuplicateVariantValuesErrorImpl instance = new DuplicateVariantValuesErrorImpl();
094        instance.setMessage(template.getMessage());
095        Optional.ofNullable(template.values()).ifPresent(t -> t.forEach(instance::setValue));
096        instance.setVariantValues(template.getVariantValues());
097        return instance;
098    }
099
100    /**
101     * factory method to create a deep copy of DuplicateVariantValuesError
102     * @param template instance to be copied
103     * @return copy instance
104     */
105    @Nullable
106    public static DuplicateVariantValuesError deepCopy(@Nullable final DuplicateVariantValuesError template) {
107        if (template == null) {
108            return null;
109        }
110        DuplicateVariantValuesErrorImpl instance = new DuplicateVariantValuesErrorImpl();
111        instance.setMessage(template.getMessage());
112        Optional.ofNullable(template.values()).ifPresent(t -> t.forEach(instance::setValue));
113        instance.setVariantValues(
114            com.commercetools.api.models.error.VariantValues.deepCopy(template.getVariantValues()));
115        return instance;
116    }
117
118    /**
119     * builder factory method for DuplicateVariantValuesError
120     * @return builder
121     */
122    public static DuplicateVariantValuesErrorBuilder builder() {
123        return DuplicateVariantValuesErrorBuilder.of();
124    }
125
126    /**
127     * create builder for DuplicateVariantValuesError instance
128     * @param template instance with prefilled values for the builder
129     * @return builder
130     */
131    public static DuplicateVariantValuesErrorBuilder builder(final DuplicateVariantValuesError template) {
132        return DuplicateVariantValuesErrorBuilder.of(template);
133    }
134
135    /**
136     * accessor map function
137     * @param <T> mapped type
138     * @param helper function to map the object
139     * @return mapped value
140     */
141    default <T> T withDuplicateVariantValuesError(Function<DuplicateVariantValuesError, T> helper) {
142        return helper.apply(this);
143    }
144
145    /**
146     * gives a TypeReference for usage with Jackson DataBind
147     * @return TypeReference
148     */
149    public static com.fasterxml.jackson.core.type.TypeReference<DuplicateVariantValuesError> typeReference() {
150        return new com.fasterxml.jackson.core.type.TypeReference<DuplicateVariantValuesError>() {
151            @Override
152            public String toString() {
153                return "TypeReference<DuplicateVariantValuesError>";
154            }
155        };
156    }
157}