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 * ChangeValueChangeValue 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 * ChangeValueChangeValue changeValueChangeValue = ChangeValueChangeValue.absoluteBuilder() 024 * plusMoney(moneyBuilder -> moneyBuilder) 025 * .build() 026 * </code></pre> 027 * </div> 028 */ 029@JsonSubTypes({ 030 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeValueAbsoluteChangeValueImpl.class, name = ChangeValueAbsoluteChangeValue.ABSOLUTE), 031 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeValueExternalChangeValueImpl.class, name = ChangeValueExternalChangeValue.EXTERNAL), 032 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeValueGiftLineItemChangeValueImpl.class, name = ChangeValueGiftLineItemChangeValue.GIFT_LINE_ITEM), 033 @JsonSubTypes.Type(value = com.commercetools.history.models.change_value.ChangeValueRelativeChangeValueImpl.class, name = ChangeValueRelativeChangeValue.RELATIVE) }) 034@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type", defaultImpl = ChangeValueChangeValueImpl.class, visible = true) 035@JsonDeserialize(as = ChangeValueChangeValueImpl.class) 036@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 037public interface ChangeValueChangeValue { 038 039 /** 040 * 041 * @return type 042 */ 043 @NotNull 044 @JsonProperty("type") 045 public String getType(); 046 047 /** 048 * factory method to create a deep copy of ChangeValueChangeValue 049 * @param template instance to be copied 050 * @return copy instance 051 */ 052 @Nullable 053 public static ChangeValueChangeValue deepCopy(@Nullable final ChangeValueChangeValue template) { 054 if (template == null) { 055 return null; 056 } 057 if (template instanceof com.commercetools.history.models.change_value.ChangeValueAbsoluteChangeValue) { 058 return com.commercetools.history.models.change_value.ChangeValueAbsoluteChangeValue 059 .deepCopy((com.commercetools.history.models.change_value.ChangeValueAbsoluteChangeValue) template); 060 } 061 if (template instanceof com.commercetools.history.models.change_value.ChangeValueExternalChangeValue) { 062 return com.commercetools.history.models.change_value.ChangeValueExternalChangeValue 063 .deepCopy((com.commercetools.history.models.change_value.ChangeValueExternalChangeValue) template); 064 } 065 if (template instanceof com.commercetools.history.models.change_value.ChangeValueGiftLineItemChangeValue) { 066 return com.commercetools.history.models.change_value.ChangeValueGiftLineItemChangeValue.deepCopy( 067 (com.commercetools.history.models.change_value.ChangeValueGiftLineItemChangeValue) template); 068 } 069 if (template instanceof com.commercetools.history.models.change_value.ChangeValueRelativeChangeValue) { 070 return com.commercetools.history.models.change_value.ChangeValueRelativeChangeValue 071 .deepCopy((com.commercetools.history.models.change_value.ChangeValueRelativeChangeValue) template); 072 } 073 ChangeValueChangeValueImpl instance = new ChangeValueChangeValueImpl(); 074 return instance; 075 } 076 077 /** 078 * builder for absolute subtype 079 * @return builder 080 */ 081 public static com.commercetools.history.models.change_value.ChangeValueAbsoluteChangeValueBuilder absoluteBuilder() { 082 return com.commercetools.history.models.change_value.ChangeValueAbsoluteChangeValueBuilder.of(); 083 } 084 085 /** 086 * builder for external subtype 087 * @return builder 088 */ 089 public static com.commercetools.history.models.change_value.ChangeValueExternalChangeValueBuilder externalBuilder() { 090 return com.commercetools.history.models.change_value.ChangeValueExternalChangeValueBuilder.of(); 091 } 092 093 /** 094 * builder for giftLineItem subtype 095 * @return builder 096 */ 097 public static com.commercetools.history.models.change_value.ChangeValueGiftLineItemChangeValueBuilder giftLineItemBuilder() { 098 return com.commercetools.history.models.change_value.ChangeValueGiftLineItemChangeValueBuilder.of(); 099 } 100 101 /** 102 * builder for relative subtype 103 * @return builder 104 */ 105 public static com.commercetools.history.models.change_value.ChangeValueRelativeChangeValueBuilder relativeBuilder() { 106 return com.commercetools.history.models.change_value.ChangeValueRelativeChangeValueBuilder.of(); 107 } 108 109 /** 110 * accessor map function 111 * @param <T> mapped type 112 * @param helper function to map the object 113 * @return mapped value 114 */ 115 default <T> T withChangeValueChangeValue(Function<ChangeValueChangeValue, T> helper) { 116 return helper.apply(this); 117 } 118 119 /** 120 * gives a TypeReference for usage with Jackson DataBind 121 * @return TypeReference 122 */ 123 public static com.fasterxml.jackson.core.type.TypeReference<ChangeValueChangeValue> typeReference() { 124 return new com.fasterxml.jackson.core.type.TypeReference<ChangeValueChangeValue>() { 125 @Override 126 public String toString() { 127 return "TypeReference<ChangeValueChangeValue>"; 128 } 129 }; 130 } 131}