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.Valid; 010import javax.validation.constraints.NotNull; 011 012import com.commercetools.api.models.common.Image; 013import com.fasterxml.jackson.annotation.*; 014import com.fasterxml.jackson.databind.annotation.*; 015 016import io.vrap.rmf.base.client.utils.Generated; 017 018/** 019 * <p>Generated after a successful Add External Image update action or after the successful upload of an image.</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 * ProductImageAddedMessage productImageAddedMessage = ProductImageAddedMessage.builder() 026 * .id("{id}") 027 * .version(0.3) 028 * .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z")) 029 * .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z")) 030 * .sequenceNumber(0.3) 031 * .resource(resourceBuilder -> resourceBuilder) 032 * .resourceVersion(0.3) 033 * .variantId(0.3) 034 * .image(imageBuilder -> imageBuilder) 035 * .staged(true) 036 * .build() 037 * </code></pre> 038 * </div> 039 */ 040@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 041@JsonDeserialize(as = ProductImageAddedMessageImpl.class) 042public interface ProductImageAddedMessage extends Message { 043 044 /** 045 * discriminator value for ProductImageAddedMessage 046 */ 047 String PRODUCT_IMAGE_ADDED = "ProductImageAdded"; 048 049 /** 050 * <p>Unique identifier of the Product Variant to which the Image was added.</p> 051 * @return variantId 052 */ 053 @NotNull 054 @JsonProperty("variantId") 055 public Long getVariantId(); 056 057 /** 058 * <p>Image that was added.</p> 059 * @return image 060 */ 061 @NotNull 062 @Valid 063 @JsonProperty("image") 064 public Image getImage(); 065 066 /** 067 * <p>Whether the update was only applied to the staged Product Projection.</p> 068 * @return staged 069 */ 070 @NotNull 071 @JsonProperty("staged") 072 public Boolean getStaged(); 073 074 /** 075 * <p>Unique identifier of the Product Variant to which the Image was added.</p> 076 * @param variantId value to be set 077 */ 078 079 public void setVariantId(final Long variantId); 080 081 /** 082 * <p>Image that was added.</p> 083 * @param image value to be set 084 */ 085 086 public void setImage(final Image image); 087 088 /** 089 * <p>Whether the update was only applied to the staged Product Projection.</p> 090 * @param staged value to be set 091 */ 092 093 public void setStaged(final Boolean staged); 094 095 /** 096 * factory method 097 * @return instance of ProductImageAddedMessage 098 */ 099 public static ProductImageAddedMessage of() { 100 return new ProductImageAddedMessageImpl(); 101 } 102 103 /** 104 * factory method to create a shallow copy ProductImageAddedMessage 105 * @param template instance to be copied 106 * @return copy instance 107 */ 108 public static ProductImageAddedMessage of(final ProductImageAddedMessage template) { 109 ProductImageAddedMessageImpl instance = new ProductImageAddedMessageImpl(); 110 instance.setId(template.getId()); 111 instance.setVersion(template.getVersion()); 112 instance.setCreatedAt(template.getCreatedAt()); 113 instance.setLastModifiedAt(template.getLastModifiedAt()); 114 instance.setLastModifiedBy(template.getLastModifiedBy()); 115 instance.setCreatedBy(template.getCreatedBy()); 116 instance.setSequenceNumber(template.getSequenceNumber()); 117 instance.setResource(template.getResource()); 118 instance.setResourceVersion(template.getResourceVersion()); 119 instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers()); 120 instance.setVariantId(template.getVariantId()); 121 instance.setImage(template.getImage()); 122 instance.setStaged(template.getStaged()); 123 return instance; 124 } 125 126 /** 127 * factory method to create a deep copy of ProductImageAddedMessage 128 * @param template instance to be copied 129 * @return copy instance 130 */ 131 @Nullable 132 public static ProductImageAddedMessage deepCopy(@Nullable final ProductImageAddedMessage template) { 133 if (template == null) { 134 return null; 135 } 136 ProductImageAddedMessageImpl instance = new ProductImageAddedMessageImpl(); 137 instance.setId(template.getId()); 138 instance.setVersion(template.getVersion()); 139 instance.setCreatedAt(template.getCreatedAt()); 140 instance.setLastModifiedAt(template.getLastModifiedAt()); 141 instance.setLastModifiedBy( 142 com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy())); 143 instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy())); 144 instance.setSequenceNumber(template.getSequenceNumber()); 145 instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource())); 146 instance.setResourceVersion(template.getResourceVersion()); 147 instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers 148 .deepCopy(template.getResourceUserProvidedIdentifiers())); 149 instance.setVariantId(template.getVariantId()); 150 instance.setImage(com.commercetools.api.models.common.Image.deepCopy(template.getImage())); 151 instance.setStaged(template.getStaged()); 152 return instance; 153 } 154 155 /** 156 * builder factory method for ProductImageAddedMessage 157 * @return builder 158 */ 159 public static ProductImageAddedMessageBuilder builder() { 160 return ProductImageAddedMessageBuilder.of(); 161 } 162 163 /** 164 * create builder for ProductImageAddedMessage instance 165 * @param template instance with prefilled values for the builder 166 * @return builder 167 */ 168 public static ProductImageAddedMessageBuilder builder(final ProductImageAddedMessage template) { 169 return ProductImageAddedMessageBuilder.of(template); 170 } 171 172 /** 173 * accessor map function 174 * @param <T> mapped type 175 * @param helper function to map the object 176 * @return mapped value 177 */ 178 default <T> T withProductImageAddedMessage(Function<ProductImageAddedMessage, T> helper) { 179 return helper.apply(this); 180 } 181 182 /** 183 * gives a TypeReference for usage with Jackson DataBind 184 * @return TypeReference 185 */ 186 public static com.fasterxml.jackson.core.type.TypeReference<ProductImageAddedMessage> typeReference() { 187 return new com.fasterxml.jackson.core.type.TypeReference<ProductImageAddedMessage>() { 188 @Override 189 public String toString() { 190 return "TypeReference<ProductImageAddedMessage>"; 191 } 192 }; 193 } 194}