001
002package com.commercetools.api.models.quote;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009
010import com.commercetools.api.models.common.ResourceIdentifier;
011import com.fasterxml.jackson.annotation.*;
012import com.fasterxml.jackson.databind.annotation.*;
013
014import io.vrap.rmf.base.client.utils.Generated;
015
016/**
017 *  <p>ResourceIdentifier to a Quote.</p>
018 *
019 * <hr>
020 * Example to create an instance using the builder pattern
021 * <div class=code-example>
022 * <pre><code class='java'>
023 *     QuoteResourceIdentifier quoteResourceIdentifier = QuoteResourceIdentifier.builder()
024 *             .build()
025 * </code></pre>
026 * </div>
027 */
028@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
029@JsonDeserialize(as = QuoteResourceIdentifierImpl.class)
030public interface QuoteResourceIdentifier extends ResourceIdentifier, com.commercetools.api.models.Identifiable<Quote> {
031
032    /**
033     * discriminator value for QuoteResourceIdentifier
034     */
035    String QUOTE = "quote";
036
037    /**
038     * factory method
039     * @return instance of QuoteResourceIdentifier
040     */
041    public static QuoteResourceIdentifier of() {
042        return new QuoteResourceIdentifierImpl();
043    }
044
045    /**
046     * factory method to create a shallow copy QuoteResourceIdentifier
047     * @param template instance to be copied
048     * @return copy instance
049     */
050    public static QuoteResourceIdentifier of(final QuoteResourceIdentifier template) {
051        QuoteResourceIdentifierImpl instance = new QuoteResourceIdentifierImpl();
052        instance.setId(template.getId());
053        instance.setKey(template.getKey());
054        return instance;
055    }
056
057    /**
058     * factory method to create a deep copy of QuoteResourceIdentifier
059     * @param template instance to be copied
060     * @return copy instance
061     */
062    @Nullable
063    public static QuoteResourceIdentifier deepCopy(@Nullable final QuoteResourceIdentifier template) {
064        if (template == null) {
065            return null;
066        }
067        QuoteResourceIdentifierImpl instance = new QuoteResourceIdentifierImpl();
068        instance.setId(template.getId());
069        instance.setKey(template.getKey());
070        return instance;
071    }
072
073    /**
074     * builder factory method for QuoteResourceIdentifier
075     * @return builder
076     */
077    public static QuoteResourceIdentifierBuilder builder() {
078        return QuoteResourceIdentifierBuilder.of();
079    }
080
081    /**
082     * create builder for QuoteResourceIdentifier instance
083     * @param template instance with prefilled values for the builder
084     * @return builder
085     */
086    public static QuoteResourceIdentifierBuilder builder(final QuoteResourceIdentifier template) {
087        return QuoteResourceIdentifierBuilder.of(template);
088    }
089
090    /**
091     * accessor map function
092     * @param <T> mapped type
093     * @param helper function to map the object
094     * @return mapped value
095     */
096    default <T> T withQuoteResourceIdentifier(Function<QuoteResourceIdentifier, T> helper) {
097        return helper.apply(this);
098    }
099
100    /**
101     * gives a TypeReference for usage with Jackson DataBind
102     * @return TypeReference
103     */
104    public static com.fasterxml.jackson.core.type.TypeReference<QuoteResourceIdentifier> typeReference() {
105        return new com.fasterxml.jackson.core.type.TypeReference<QuoteResourceIdentifier>() {
106            @Override
107            public String toString() {
108                return "TypeReference<QuoteResourceIdentifier>";
109            }
110        };
111    }
112}