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 *     GraphQLDuplicateVariantValuesError graphQLDuplicateVariantValuesError = GraphQLDuplicateVariantValuesError.builder()
025 *             .variantValues(variantValuesBuilder -> variantValuesBuilder)
026 *             .build()
027 * </code></pre>
028 * </div>
029 */
030@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
031@JsonDeserialize(as = GraphQLDuplicateVariantValuesErrorImpl.class)
032public interface GraphQLDuplicateVariantValuesError extends GraphQLErrorObject {
033
034    /**
035     * discriminator value for GraphQLDuplicateVariantValuesError
036     */
037    String DUPLICATE_VARIANT_VALUES = "DuplicateVariantValues";
038
039    /**
040     *
041     * @return code
042     */
043    @NotNull
044    @JsonProperty("code")
045    public String getCode();
046
047    /**
048     *  <p>Every Product Variant must have a distinct combination of SKU, prices, and custom Attribute values.</p>
049     * @return variantValues
050     */
051    @NotNull
052    @Valid
053    @JsonProperty("variantValues")
054    public VariantValues getVariantValues();
055
056    /**
057     *  <p>Every Product Variant must have a distinct combination of SKU, prices, and custom Attribute values.</p>
058     * @param variantValues value to be set
059     */
060
061    public void setVariantValues(final VariantValues variantValues);
062
063    /**
064     * factory method
065     * @return instance of GraphQLDuplicateVariantValuesError
066     */
067    public static GraphQLDuplicateVariantValuesError of() {
068        return new GraphQLDuplicateVariantValuesErrorImpl();
069    }
070
071    /**
072     * factory method to create a shallow copy GraphQLDuplicateVariantValuesError
073     * @param template instance to be copied
074     * @return copy instance
075     */
076    public static GraphQLDuplicateVariantValuesError of(final GraphQLDuplicateVariantValuesError template) {
077        GraphQLDuplicateVariantValuesErrorImpl instance = new GraphQLDuplicateVariantValuesErrorImpl();
078        Optional.ofNullable(template.values()).ifPresent(t -> t.forEach(instance::setValue));
079        instance.setVariantValues(template.getVariantValues());
080        return instance;
081    }
082
083    /**
084     * factory method to create a deep copy of GraphQLDuplicateVariantValuesError
085     * @param template instance to be copied
086     * @return copy instance
087     */
088    @Nullable
089    public static GraphQLDuplicateVariantValuesError deepCopy(
090            @Nullable final GraphQLDuplicateVariantValuesError template) {
091        if (template == null) {
092            return null;
093        }
094        GraphQLDuplicateVariantValuesErrorImpl instance = new GraphQLDuplicateVariantValuesErrorImpl();
095        Optional.ofNullable(template.values()).ifPresent(t -> t.forEach(instance::setValue));
096        instance.setVariantValues(
097            com.commercetools.api.models.error.VariantValues.deepCopy(template.getVariantValues()));
098        return instance;
099    }
100
101    /**
102     * builder factory method for GraphQLDuplicateVariantValuesError
103     * @return builder
104     */
105    public static GraphQLDuplicateVariantValuesErrorBuilder builder() {
106        return GraphQLDuplicateVariantValuesErrorBuilder.of();
107    }
108
109    /**
110     * create builder for GraphQLDuplicateVariantValuesError instance
111     * @param template instance with prefilled values for the builder
112     * @return builder
113     */
114    public static GraphQLDuplicateVariantValuesErrorBuilder builder(final GraphQLDuplicateVariantValuesError template) {
115        return GraphQLDuplicateVariantValuesErrorBuilder.of(template);
116    }
117
118    /**
119     * accessor map function
120     * @param <T> mapped type
121     * @param helper function to map the object
122     * @return mapped value
123     */
124    default <T> T withGraphQLDuplicateVariantValuesError(Function<GraphQLDuplicateVariantValuesError, T> helper) {
125        return helper.apply(this);
126    }
127
128    /**
129     * gives a TypeReference for usage with Jackson DataBind
130     * @return TypeReference
131     */
132    public static com.fasterxml.jackson.core.type.TypeReference<GraphQLDuplicateVariantValuesError> typeReference() {
133        return new com.fasterxml.jackson.core.type.TypeReference<GraphQLDuplicateVariantValuesError>() {
134            @Override
135            public String toString() {
136                return "TypeReference<GraphQLDuplicateVariantValuesError>";
137            }
138        };
139    }
140}