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.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>Generated after a successful Revert Staged Changes update action.</p>
018 *
019 * <hr>
020 * Example to create an instance using the builder pattern
021 * <div class=code-example>
022 * <pre><code class='java'>
023 *     ProductRevertedStagedChangesMessage productRevertedStagedChangesMessage = ProductRevertedStagedChangesMessage.builder()
024 *             .id("{id}")
025 *             .version(0.3)
026 *             .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
027 *             .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
028 *             .sequenceNumber(0.3)
029 *             .resource(resourceBuilder -> resourceBuilder)
030 *             .resourceVersion(0.3)
031 *             .plusRemovedImageUrls(removedImageUrlsBuilder -> removedImageUrlsBuilder)
032 *             .build()
033 * </code></pre>
034 * </div>
035 */
036@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
037@JsonDeserialize(as = ProductRevertedStagedChangesMessageImpl.class)
038public interface ProductRevertedStagedChangesMessage extends Message {
039
040    /**
041     * discriminator value for ProductRevertedStagedChangesMessage
042     */
043    String PRODUCT_REVERTED_STAGED_CHANGES = "ProductRevertedStagedChanges";
044
045    /**
046     *  <p>List of image URLs that were removed during the Revert Staged Changes update action.</p>
047     * @return removedImageUrls
048     */
049    @NotNull
050    @JsonProperty("removedImageUrls")
051    public List<String> getRemovedImageUrls();
052
053    /**
054     *  <p>List of image URLs that were removed during the Revert Staged Changes update action.</p>
055     * @param removedImageUrls values to be set
056     */
057
058    @JsonIgnore
059    public void setRemovedImageUrls(final String... removedImageUrls);
060
061    /**
062     *  <p>List of image URLs that were removed during the Revert Staged Changes update action.</p>
063     * @param removedImageUrls values to be set
064     */
065
066    public void setRemovedImageUrls(final List<String> removedImageUrls);
067
068    /**
069     * factory method
070     * @return instance of ProductRevertedStagedChangesMessage
071     */
072    public static ProductRevertedStagedChangesMessage of() {
073        return new ProductRevertedStagedChangesMessageImpl();
074    }
075
076    /**
077     * factory method to create a shallow copy ProductRevertedStagedChangesMessage
078     * @param template instance to be copied
079     * @return copy instance
080     */
081    public static ProductRevertedStagedChangesMessage of(final ProductRevertedStagedChangesMessage template) {
082        ProductRevertedStagedChangesMessageImpl instance = new ProductRevertedStagedChangesMessageImpl();
083        instance.setId(template.getId());
084        instance.setVersion(template.getVersion());
085        instance.setCreatedAt(template.getCreatedAt());
086        instance.setLastModifiedAt(template.getLastModifiedAt());
087        instance.setLastModifiedBy(template.getLastModifiedBy());
088        instance.setCreatedBy(template.getCreatedBy());
089        instance.setSequenceNumber(template.getSequenceNumber());
090        instance.setResource(template.getResource());
091        instance.setResourceVersion(template.getResourceVersion());
092        instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers());
093        instance.setRemovedImageUrls(template.getRemovedImageUrls());
094        return instance;
095    }
096
097    /**
098     * factory method to create a deep copy of ProductRevertedStagedChangesMessage
099     * @param template instance to be copied
100     * @return copy instance
101     */
102    @Nullable
103    public static ProductRevertedStagedChangesMessage deepCopy(
104            @Nullable final ProductRevertedStagedChangesMessage template) {
105        if (template == null) {
106            return null;
107        }
108        ProductRevertedStagedChangesMessageImpl instance = new ProductRevertedStagedChangesMessageImpl();
109        instance.setId(template.getId());
110        instance.setVersion(template.getVersion());
111        instance.setCreatedAt(template.getCreatedAt());
112        instance.setLastModifiedAt(template.getLastModifiedAt());
113        instance.setLastModifiedBy(
114            com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy()));
115        instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy()));
116        instance.setSequenceNumber(template.getSequenceNumber());
117        instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource()));
118        instance.setResourceVersion(template.getResourceVersion());
119        instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers
120                .deepCopy(template.getResourceUserProvidedIdentifiers()));
121        instance.setRemovedImageUrls(
122            Optional.ofNullable(template.getRemovedImageUrls()).map(ArrayList::new).orElse(null));
123        return instance;
124    }
125
126    /**
127     * builder factory method for ProductRevertedStagedChangesMessage
128     * @return builder
129     */
130    public static ProductRevertedStagedChangesMessageBuilder builder() {
131        return ProductRevertedStagedChangesMessageBuilder.of();
132    }
133
134    /**
135     * create builder for ProductRevertedStagedChangesMessage instance
136     * @param template instance with prefilled values for the builder
137     * @return builder
138     */
139    public static ProductRevertedStagedChangesMessageBuilder builder(
140            final ProductRevertedStagedChangesMessage template) {
141        return ProductRevertedStagedChangesMessageBuilder.of(template);
142    }
143
144    /**
145     * accessor map function
146     * @param <T> mapped type
147     * @param helper function to map the object
148     * @return mapped value
149     */
150    default <T> T withProductRevertedStagedChangesMessage(Function<ProductRevertedStagedChangesMessage, T> helper) {
151        return helper.apply(this);
152    }
153
154    /**
155     * gives a TypeReference for usage with Jackson DataBind
156     * @return TypeReference
157     */
158    public static com.fasterxml.jackson.core.type.TypeReference<ProductRevertedStagedChangesMessage> typeReference() {
159        return new com.fasterxml.jackson.core.type.TypeReference<ProductRevertedStagedChangesMessage>() {
160            @Override
161            public String toString() {
162                return "TypeReference<ProductRevertedStagedChangesMessage>";
163            }
164        };
165    }
166}