001 002package com.commercetools.history.models.change_value; 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 * ChangeTargetChangeValue 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 * ChangeTargetChangeValue changeTargetChangeValue = ChangeTargetChangeValue.customLineItemsBuilder() 024 * predicate("{predicate}") 025 * .build() 026 * </code></pre> 027 * </div> 028 */ 029@JsonSubTypes({ 030 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeTargetCustomLineItemsChangeValueImpl.class, name = ChangeTargetCustomLineItemsChangeValue.CUSTOM_LINE_ITEMS), 031 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeTargetLineItemsChangeValueImpl.class, name = ChangeTargetLineItemsChangeValue.LINE_ITEMS), 032 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeTargetMultiBuyCustomLineItemsChangeValueImpl.class, name = ChangeTargetMultiBuyCustomLineItemsChangeValue.MULTI_BUY_CUSTOM_LINE_ITEMS), 033 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeTargetMultiBuyLineItemsChangeValueImpl.class, name = ChangeTargetMultiBuyLineItemsChangeValue.MULTI_BUY_LINE_ITEMS), 034 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeTargetShippingChangeValueImpl.class, name = ChangeTargetShippingChangeValue.SHIPPING) }) 035@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", defaultImpl = ChangeTargetChangeValueImpl.class, visible = true) 036@JsonDeserialize(as = ChangeTargetChangeValueImpl.class) 037@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 038public interface ChangeTargetChangeValue { 039 040 /** 041 * 042 * @return type 043 */ 044 @NotNull 045 @JsonProperty("type") 046 public String getType(); 047 048 /** 049 * factory method to create a deep copy of ChangeTargetChangeValue 050 * @param template instance to be copied 051 * @return copy instance 052 */ 053 @Nullable 054 public static ChangeTargetChangeValue deepCopy(@Nullable final ChangeTargetChangeValue template) { 055 if (template == null) { 056 return null; 057 } 058 if (template instanceof com.commercetools.history.models.change_value.ChangeTargetCustomLineItemsChangeValue) { 059 return com.commercetools.history.models.change_value.ChangeTargetCustomLineItemsChangeValue.deepCopy( 060 (com.commercetools.history.models.change_value.ChangeTargetCustomLineItemsChangeValue) template); 061 } 062 if (template instanceof com.commercetools.history.models.change_value.ChangeTargetLineItemsChangeValue) { 063 return com.commercetools.history.models.change_value.ChangeTargetLineItemsChangeValue.deepCopy( 064 (com.commercetools.history.models.change_value.ChangeTargetLineItemsChangeValue) template); 065 } 066 if (template instanceof com.commercetools.history.models.change_value.ChangeTargetMultiBuyCustomLineItemsChangeValue) { 067 return com.commercetools.history.models.change_value.ChangeTargetMultiBuyCustomLineItemsChangeValue 068 .deepCopy( 069 (com.commercetools.history.models.change_value.ChangeTargetMultiBuyCustomLineItemsChangeValue) template); 070 } 071 if (template instanceof com.commercetools.history.models.change_value.ChangeTargetMultiBuyLineItemsChangeValue) { 072 return com.commercetools.history.models.change_value.ChangeTargetMultiBuyLineItemsChangeValue.deepCopy( 073 (com.commercetools.history.models.change_value.ChangeTargetMultiBuyLineItemsChangeValue) template); 074 } 075 if (template instanceof com.commercetools.history.models.change_value.ChangeTargetShippingChangeValue) { 076 return com.commercetools.history.models.change_value.ChangeTargetShippingChangeValue 077 .deepCopy((com.commercetools.history.models.change_value.ChangeTargetShippingChangeValue) template); 078 } 079 ChangeTargetChangeValueImpl instance = new ChangeTargetChangeValueImpl(); 080 return instance; 081 } 082 083 /** 084 * builder for customLineItems subtype 085 * @return builder 086 */ 087 public static com.commercetools.history.models.change_value.ChangeTargetCustomLineItemsChangeValueBuilder customLineItemsBuilder() { 088 return com.commercetools.history.models.change_value.ChangeTargetCustomLineItemsChangeValueBuilder.of(); 089 } 090 091 /** 092 * builder for lineItems subtype 093 * @return builder 094 */ 095 public static com.commercetools.history.models.change_value.ChangeTargetLineItemsChangeValueBuilder lineItemsBuilder() { 096 return com.commercetools.history.models.change_value.ChangeTargetLineItemsChangeValueBuilder.of(); 097 } 098 099 /** 100 * builder for multiBuyCustomLineItems subtype 101 * @return builder 102 */ 103 public static com.commercetools.history.models.change_value.ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder multiBuyCustomLineItemsBuilder() { 104 return com.commercetools.history.models.change_value.ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder.of(); 105 } 106 107 /** 108 * builder for multiBuyLineItems subtype 109 * @return builder 110 */ 111 public static com.commercetools.history.models.change_value.ChangeTargetMultiBuyLineItemsChangeValueBuilder multiBuyLineItemsBuilder() { 112 return com.commercetools.history.models.change_value.ChangeTargetMultiBuyLineItemsChangeValueBuilder.of(); 113 } 114 115 /** 116 * builder for shipping subtype 117 * @return builder 118 */ 119 public static com.commercetools.history.models.change_value.ChangeTargetShippingChangeValueBuilder shippingBuilder() { 120 return com.commercetools.history.models.change_value.ChangeTargetShippingChangeValueBuilder.of(); 121 } 122 123 /** 124 * accessor map function 125 * @param <T> mapped type 126 * @param helper function to map the object 127 * @return mapped value 128 */ 129 default <T> T withChangeTargetChangeValue(Function<ChangeTargetChangeValue, T> helper) { 130 return helper.apply(this); 131 } 132 133 /** 134 * gives a TypeReference for usage with Jackson DataBind 135 * @return TypeReference 136 */ 137 public static com.fasterxml.jackson.core.type.TypeReference<ChangeTargetChangeValue> typeReference() { 138 return new com.fasterxml.jackson.core.type.TypeReference<ChangeTargetChangeValue>() { 139 @Override 140 public String toString() { 141 return "TypeReference<ChangeTargetChangeValue>"; 142 } 143 }; 144 } 145}