001 002package com.commercetools.importapi.models.orders; 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 * ShippingRateInput 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 * ShippingRateInput shippingRateInput = ShippingRateInput.classificationBuilder() 024 * key("{key}") 025 * label(labelBuilder -> labelBuilder) 026 * .build() 027 * </code></pre> 028 * </div> 029 */ 030@JsonSubTypes({ 031 @JsonSubTypes.Type(value = com.commercetools.importapi.models.orders.ClassificationShippingRateInputImpl.class, name = ClassificationShippingRateInput.CLASSIFICATION), 032 @JsonSubTypes.Type(value = com.commercetools.importapi.models.orders.ScoreShippingRateInputImpl.class, name = ScoreShippingRateInput.SCORE) }) 033@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", defaultImpl = ShippingRateInputImpl.class, visible = true) 034@JsonDeserialize(as = ShippingRateInputImpl.class) 035@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 036public interface ShippingRateInput { 037 038 /** 039 * 040 * @return type 041 */ 042 @NotNull 043 @JsonProperty("type") 044 public ShippingRateInputType getType(); 045 046 /** 047 * factory method to create a deep copy of ShippingRateInput 048 * @param template instance to be copied 049 * @return copy instance 050 */ 051 @Nullable 052 public static ShippingRateInput deepCopy(@Nullable final ShippingRateInput template) { 053 if (template == null) { 054 return null; 055 } 056 if (template instanceof com.commercetools.importapi.models.orders.ClassificationShippingRateInput) { 057 return com.commercetools.importapi.models.orders.ClassificationShippingRateInput 058 .deepCopy((com.commercetools.importapi.models.orders.ClassificationShippingRateInput) template); 059 } 060 if (template instanceof com.commercetools.importapi.models.orders.ScoreShippingRateInput) { 061 return com.commercetools.importapi.models.orders.ScoreShippingRateInput 062 .deepCopy((com.commercetools.importapi.models.orders.ScoreShippingRateInput) template); 063 } 064 ShippingRateInputImpl instance = new ShippingRateInputImpl(); 065 return instance; 066 } 067 068 /** 069 * builder for classification subtype 070 * @return builder 071 */ 072 public static com.commercetools.importapi.models.orders.ClassificationShippingRateInputBuilder classificationBuilder() { 073 return com.commercetools.importapi.models.orders.ClassificationShippingRateInputBuilder.of(); 074 } 075 076 /** 077 * builder for score subtype 078 * @return builder 079 */ 080 public static com.commercetools.importapi.models.orders.ScoreShippingRateInputBuilder scoreBuilder() { 081 return com.commercetools.importapi.models.orders.ScoreShippingRateInputBuilder.of(); 082 } 083 084 /** 085 * accessor map function 086 * @param <T> mapped type 087 * @param helper function to map the object 088 * @return mapped value 089 */ 090 default <T> T withShippingRateInput(Function<ShippingRateInput, T> helper) { 091 return helper.apply(this); 092 } 093 094 /** 095 * gives a TypeReference for usage with Jackson DataBind 096 * @return TypeReference 097 */ 098 public static com.fasterxml.jackson.core.type.TypeReference<ShippingRateInput> typeReference() { 099 return new com.fasterxml.jackson.core.type.TypeReference<ShippingRateInput>() { 100 @Override 101 public String toString() { 102 return "TypeReference<ShippingRateInput>"; 103 } 104 }; 105 } 106}