001
002package com.commercetools.api.models.subscription;
003
004import java.util.*;
005import java.util.function.Function;
006
007import io.vrap.rmf.base.client.Builder;
008import io.vrap.rmf.base.client.utils.Generated;
009
010/**
011 * SubscriptionChangeDestinationActionBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     SubscriptionChangeDestinationAction subscriptionChangeDestinationAction = SubscriptionChangeDestinationAction.builder()
017 *             .destination(destinationBuilder -> destinationBuilder)
018 *             .build()
019 * </code></pre>
020 * </div>
021 */
022@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
023public class SubscriptionChangeDestinationActionBuilder implements Builder<SubscriptionChangeDestinationAction> {
024
025    private com.commercetools.api.models.subscription.Destination destination;
026
027    /**
028     *  <p>New value to set. Must not be empty.</p>
029     * @param destination value to be set
030     * @return Builder
031     */
032
033    public SubscriptionChangeDestinationActionBuilder destination(
034            final com.commercetools.api.models.subscription.Destination destination) {
035        this.destination = destination;
036        return this;
037    }
038
039    /**
040     *  <p>New value to set. Must not be empty.</p>
041     * @param builder function to build the destination value
042     * @return Builder
043     */
044
045    public SubscriptionChangeDestinationActionBuilder destination(
046            Function<com.commercetools.api.models.subscription.DestinationBuilder, Builder<? extends com.commercetools.api.models.subscription.Destination>> builder) {
047        this.destination = builder.apply(com.commercetools.api.models.subscription.DestinationBuilder.of()).build();
048        return this;
049    }
050
051    /**
052     *  <p>New value to set. Must not be empty.</p>
053     * @return destination
054     */
055
056    public com.commercetools.api.models.subscription.Destination getDestination() {
057        return this.destination;
058    }
059
060    /**
061     * builds SubscriptionChangeDestinationAction with checking for non-null required values
062     * @return SubscriptionChangeDestinationAction
063     */
064    public SubscriptionChangeDestinationAction build() {
065        Objects.requireNonNull(destination, SubscriptionChangeDestinationAction.class + ": destination is missing");
066        return new SubscriptionChangeDestinationActionImpl(destination);
067    }
068
069    /**
070     * builds SubscriptionChangeDestinationAction without checking for non-null required values
071     * @return SubscriptionChangeDestinationAction
072     */
073    public SubscriptionChangeDestinationAction buildUnchecked() {
074        return new SubscriptionChangeDestinationActionImpl(destination);
075    }
076
077    /**
078     * factory method for an instance of SubscriptionChangeDestinationActionBuilder
079     * @return builder
080     */
081    public static SubscriptionChangeDestinationActionBuilder of() {
082        return new SubscriptionChangeDestinationActionBuilder();
083    }
084
085    /**
086     * create builder for SubscriptionChangeDestinationAction instance
087     * @param template instance with prefilled values for the builder
088     * @return builder
089     */
090    public static SubscriptionChangeDestinationActionBuilder of(final SubscriptionChangeDestinationAction template) {
091        SubscriptionChangeDestinationActionBuilder builder = new SubscriptionChangeDestinationActionBuilder();
092        builder.destination = template.getDestination();
093        return builder;
094    }
095
096}