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.commercetools.api.models.product.Attribute;
013import com.fasterxml.jackson.annotation.*;
014import com.fasterxml.jackson.databind.annotation.*;
015
016import io.vrap.rmf.base.client.utils.Generated;
017
018/**
019 *  <p>Returned when the <code>Unique</code> AttributeConstraint criteria are not met during an Update Product request.</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 *     DuplicateAttributeValueError duplicateAttributeValueError = DuplicateAttributeValueError.builder()
026 *             .message("{message}")
027 *             .attribute(attributeBuilder -> attributeBuilder)
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 = DuplicateAttributeValueErrorImpl.class)
034public interface DuplicateAttributeValueError extends ErrorObject {
035
036    /**
037     * discriminator value for DuplicateAttributeValueError
038     */
039    String DUPLICATE_ATTRIBUTE_VALUE = "DuplicateAttributeValue";
040
041    /**
042     *
043     * @return code
044     */
045    @NotNull
046    @JsonProperty("code")
047    public String getCode();
048
049    /**
050     *  <p><code>"Attribute can't have the same value in a different variant."</code></p>
051     * @return message
052     */
053    @NotNull
054    @JsonProperty("message")
055    public String getMessage();
056
057    /**
058     *  <p>Conflicting Attributes.</p>
059     * @return attribute
060     */
061    @NotNull
062    @Valid
063    @JsonProperty("attribute")
064    public Attribute getAttribute();
065
066    /**
067     *  <p><code>"Attribute can't have the same value in a different variant."</code></p>
068     * @param message value to be set
069     */
070
071    public void setMessage(final String message);
072
073    /**
074     *  <p>Conflicting Attributes.</p>
075     * @param attribute value to be set
076     */
077
078    public void setAttribute(final Attribute attribute);
079
080    /**
081     * factory method
082     * @return instance of DuplicateAttributeValueError
083     */
084    public static DuplicateAttributeValueError of() {
085        return new DuplicateAttributeValueErrorImpl();
086    }
087
088    /**
089     * factory method to create a shallow copy DuplicateAttributeValueError
090     * @param template instance to be copied
091     * @return copy instance
092     */
093    public static DuplicateAttributeValueError of(final DuplicateAttributeValueError template) {
094        DuplicateAttributeValueErrorImpl instance = new DuplicateAttributeValueErrorImpl();
095        instance.setMessage(template.getMessage());
096        Optional.ofNullable(template.values()).ifPresent(t -> t.forEach(instance::setValue));
097        instance.setAttribute(template.getAttribute());
098        return instance;
099    }
100
101    /**
102     * factory method to create a deep copy of DuplicateAttributeValueError
103     * @param template instance to be copied
104     * @return copy instance
105     */
106    @Nullable
107    public static DuplicateAttributeValueError deepCopy(@Nullable final DuplicateAttributeValueError template) {
108        if (template == null) {
109            return null;
110        }
111        DuplicateAttributeValueErrorImpl instance = new DuplicateAttributeValueErrorImpl();
112        instance.setMessage(template.getMessage());
113        Optional.ofNullable(template.values()).ifPresent(t -> t.forEach(instance::setValue));
114        instance.setAttribute(com.commercetools.api.models.product.Attribute.deepCopy(template.getAttribute()));
115        return instance;
116    }
117
118    /**
119     * builder factory method for DuplicateAttributeValueError
120     * @return builder
121     */
122    public static DuplicateAttributeValueErrorBuilder builder() {
123        return DuplicateAttributeValueErrorBuilder.of();
124    }
125
126    /**
127     * create builder for DuplicateAttributeValueError instance
128     * @param template instance with prefilled values for the builder
129     * @return builder
130     */
131    public static DuplicateAttributeValueErrorBuilder builder(final DuplicateAttributeValueError template) {
132        return DuplicateAttributeValueErrorBuilder.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 withDuplicateAttributeValueError(Function<DuplicateAttributeValueError, 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<DuplicateAttributeValueError> typeReference() {
150        return new com.fasterxml.jackson.core.type.TypeReference<DuplicateAttributeValueError>() {
151            @Override
152            public String toString() {
153                return "TypeReference<DuplicateAttributeValueError>";
154            }
155        };
156    }
157}