001 002package com.commercetools.history.models.label; 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>Provides descriptive information specific to the resource.</p> 018 * 019 * <hr> 020 * Example to create a subtype instance using the builder pattern 021 * <div class=code-example> 022 * <pre><code class='java'> 023 * Label label = Label.associateRoleLabelBuilder() 024 * key("{key}") 025 * name("{name}") 026 * .build() 027 * </code></pre> 028 * </div> 029 */ 030@JsonSubTypes({ 031 @JsonSubTypes.Type(value = com.commercetools.history.models.label.AssociateRoleLabelImpl.class, name = AssociateRoleLabel.ASSOCIATE_ROLE_LABEL), 032 @JsonSubTypes.Type(value = com.commercetools.history.models.label.BusinessUnitLabelImpl.class, name = BusinessUnitLabel.BUSINESS_UNIT_LABEL), 033 @JsonSubTypes.Type(value = com.commercetools.history.models.label.CustomObjectLabelImpl.class, name = CustomObjectLabel.CUSTOM_OBJECT_LABEL), 034 @JsonSubTypes.Type(value = com.commercetools.history.models.label.CustomerLabelImpl.class, name = CustomerLabel.CUSTOMER_LABEL), 035 @JsonSubTypes.Type(value = com.commercetools.history.models.label.LocalizedLabelImpl.class, name = LocalizedLabel.LOCALIZED_LABEL), 036 @JsonSubTypes.Type(value = com.commercetools.history.models.label.OrderLabelImpl.class, name = OrderLabel.ORDER_LABEL), 037 @JsonSubTypes.Type(value = com.commercetools.history.models.label.PaymentLabelImpl.class, name = PaymentLabel.PAYMENT_LABEL), 038 @JsonSubTypes.Type(value = com.commercetools.history.models.label.ProductLabelImpl.class, name = ProductLabel.PRODUCT_LABEL), 039 @JsonSubTypes.Type(value = com.commercetools.history.models.label.QuoteLabelImpl.class, name = QuoteLabel.QUOTE_LABEL), 040 @JsonSubTypes.Type(value = com.commercetools.history.models.label.QuoteRequestLabelImpl.class, name = QuoteRequestLabel.QUOTE_REQUEST_LABEL), 041 @JsonSubTypes.Type(value = com.commercetools.history.models.label.ReviewLabelImpl.class, name = ReviewLabel.REVIEW_LABEL), 042 @JsonSubTypes.Type(value = com.commercetools.history.models.label.StagedQuoteLabelImpl.class, name = StagedQuoteLabel.STAGED_QUOTE_LABEL), 043 @JsonSubTypes.Type(value = com.commercetools.history.models.label.StringLabelImpl.class, name = StringLabel.STRING_LABEL) }) 044@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", defaultImpl = LabelImpl.class, visible = true) 045@JsonDeserialize(as = LabelImpl.class) 046@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 047public interface Label { 048 049 /** 050 * 051 * @return type 052 */ 053 @NotNull 054 @JsonProperty("type") 055 public String getType(); 056 057 /** 058 * factory method to create a deep copy of Label 059 * @param template instance to be copied 060 * @return copy instance 061 */ 062 @Nullable 063 public static Label deepCopy(@Nullable final Label template) { 064 if (template == null) { 065 return null; 066 } 067 if (template instanceof com.commercetools.history.models.label.AssociateRoleLabel) { 068 return com.commercetools.history.models.label.AssociateRoleLabel 069 .deepCopy((com.commercetools.history.models.label.AssociateRoleLabel) template); 070 } 071 if (template instanceof com.commercetools.history.models.label.BusinessUnitLabel) { 072 return com.commercetools.history.models.label.BusinessUnitLabel 073 .deepCopy((com.commercetools.history.models.label.BusinessUnitLabel) template); 074 } 075 if (template instanceof com.commercetools.history.models.label.CustomObjectLabel) { 076 return com.commercetools.history.models.label.CustomObjectLabel 077 .deepCopy((com.commercetools.history.models.label.CustomObjectLabel) template); 078 } 079 if (template instanceof com.commercetools.history.models.label.CustomerLabel) { 080 return com.commercetools.history.models.label.CustomerLabel 081 .deepCopy((com.commercetools.history.models.label.CustomerLabel) template); 082 } 083 if (template instanceof com.commercetools.history.models.label.LocalizedLabel) { 084 return com.commercetools.history.models.label.LocalizedLabel 085 .deepCopy((com.commercetools.history.models.label.LocalizedLabel) template); 086 } 087 if (template instanceof com.commercetools.history.models.label.OrderLabel) { 088 return com.commercetools.history.models.label.OrderLabel 089 .deepCopy((com.commercetools.history.models.label.OrderLabel) template); 090 } 091 if (template instanceof com.commercetools.history.models.label.PaymentLabel) { 092 return com.commercetools.history.models.label.PaymentLabel 093 .deepCopy((com.commercetools.history.models.label.PaymentLabel) template); 094 } 095 if (template instanceof com.commercetools.history.models.label.ProductLabel) { 096 return com.commercetools.history.models.label.ProductLabel 097 .deepCopy((com.commercetools.history.models.label.ProductLabel) template); 098 } 099 if (template instanceof com.commercetools.history.models.label.QuoteLabel) { 100 return com.commercetools.history.models.label.QuoteLabel 101 .deepCopy((com.commercetools.history.models.label.QuoteLabel) template); 102 } 103 if (template instanceof com.commercetools.history.models.label.QuoteRequestLabel) { 104 return com.commercetools.history.models.label.QuoteRequestLabel 105 .deepCopy((com.commercetools.history.models.label.QuoteRequestLabel) template); 106 } 107 if (template instanceof com.commercetools.history.models.label.ReviewLabel) { 108 return com.commercetools.history.models.label.ReviewLabel 109 .deepCopy((com.commercetools.history.models.label.ReviewLabel) template); 110 } 111 if (template instanceof com.commercetools.history.models.label.StagedQuoteLabel) { 112 return com.commercetools.history.models.label.StagedQuoteLabel 113 .deepCopy((com.commercetools.history.models.label.StagedQuoteLabel) template); 114 } 115 if (template instanceof com.commercetools.history.models.label.StringLabel) { 116 return com.commercetools.history.models.label.StringLabel 117 .deepCopy((com.commercetools.history.models.label.StringLabel) template); 118 } 119 LabelImpl instance = new LabelImpl(); 120 return instance; 121 } 122 123 /** 124 * builder for associateRoleLabel subtype 125 * @return builder 126 */ 127 public static com.commercetools.history.models.label.AssociateRoleLabelBuilder associateRoleLabelBuilder() { 128 return com.commercetools.history.models.label.AssociateRoleLabelBuilder.of(); 129 } 130 131 /** 132 * builder for businessUnitLabel subtype 133 * @return builder 134 */ 135 public static com.commercetools.history.models.label.BusinessUnitLabelBuilder businessUnitLabelBuilder() { 136 return com.commercetools.history.models.label.BusinessUnitLabelBuilder.of(); 137 } 138 139 /** 140 * builder for customObjectLabel subtype 141 * @return builder 142 */ 143 public static com.commercetools.history.models.label.CustomObjectLabelBuilder customObjectLabelBuilder() { 144 return com.commercetools.history.models.label.CustomObjectLabelBuilder.of(); 145 } 146 147 /** 148 * builder for customerLabel subtype 149 * @return builder 150 */ 151 public static com.commercetools.history.models.label.CustomerLabelBuilder customerLabelBuilder() { 152 return com.commercetools.history.models.label.CustomerLabelBuilder.of(); 153 } 154 155 /** 156 * builder for localizedLabel subtype 157 * @return builder 158 */ 159 public static com.commercetools.history.models.label.LocalizedLabelBuilder localizedLabelBuilder() { 160 return com.commercetools.history.models.label.LocalizedLabelBuilder.of(); 161 } 162 163 /** 164 * builder for orderLabel subtype 165 * @return builder 166 */ 167 public static com.commercetools.history.models.label.OrderLabelBuilder orderLabelBuilder() { 168 return com.commercetools.history.models.label.OrderLabelBuilder.of(); 169 } 170 171 /** 172 * builder for paymentLabel subtype 173 * @return builder 174 */ 175 public static com.commercetools.history.models.label.PaymentLabelBuilder paymentLabelBuilder() { 176 return com.commercetools.history.models.label.PaymentLabelBuilder.of(); 177 } 178 179 /** 180 * builder for productLabel subtype 181 * @return builder 182 */ 183 public static com.commercetools.history.models.label.ProductLabelBuilder productLabelBuilder() { 184 return com.commercetools.history.models.label.ProductLabelBuilder.of(); 185 } 186 187 /** 188 * builder for quoteLabel subtype 189 * @return builder 190 */ 191 public static com.commercetools.history.models.label.QuoteLabelBuilder quoteLabelBuilder() { 192 return com.commercetools.history.models.label.QuoteLabelBuilder.of(); 193 } 194 195 /** 196 * builder for quoteRequestLabel subtype 197 * @return builder 198 */ 199 public static com.commercetools.history.models.label.QuoteRequestLabelBuilder quoteRequestLabelBuilder() { 200 return com.commercetools.history.models.label.QuoteRequestLabelBuilder.of(); 201 } 202 203 /** 204 * builder for reviewLabel subtype 205 * @return builder 206 */ 207 public static com.commercetools.history.models.label.ReviewLabelBuilder reviewLabelBuilder() { 208 return com.commercetools.history.models.label.ReviewLabelBuilder.of(); 209 } 210 211 /** 212 * builder for stagedQuoteLabel subtype 213 * @return builder 214 */ 215 public static com.commercetools.history.models.label.StagedQuoteLabelBuilder stagedQuoteLabelBuilder() { 216 return com.commercetools.history.models.label.StagedQuoteLabelBuilder.of(); 217 } 218 219 /** 220 * builder for stringLabel subtype 221 * @return builder 222 */ 223 public static com.commercetools.history.models.label.StringLabelBuilder stringLabelBuilder() { 224 return com.commercetools.history.models.label.StringLabelBuilder.of(); 225 } 226 227 /** 228 * accessor map function 229 * @param <T> mapped type 230 * @param helper function to map the object 231 * @return mapped value 232 */ 233 default <T> T withLabel(Function<Label, T> helper) { 234 return helper.apply(this); 235 } 236 237 /** 238 * gives a TypeReference for usage with Jackson DataBind 239 * @return TypeReference 240 */ 241 public static com.fasterxml.jackson.core.type.TypeReference<Label> typeReference() { 242 return new com.fasterxml.jackson.core.type.TypeReference<Label>() { 243 @Override 244 public String toString() { 245 return "TypeReference<Label>"; 246 } 247 }; 248 } 249}