001
002package com.commercetools.history.models.common;
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 * InheritedAssociateRoleAssignmentBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     InheritedAssociateRoleAssignment inheritedAssociateRoleAssignment = InheritedAssociateRoleAssignment.builder()
017 *             .associateRole(associateRoleBuilder -> associateRoleBuilder)
018 *             .source(sourceBuilder -> sourceBuilder)
019 *             .build()
020 * </code></pre>
021 * </div>
022 */
023@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
024public class InheritedAssociateRoleAssignmentBuilder implements Builder<InheritedAssociateRoleAssignment> {
025
026    private com.commercetools.history.models.common.KeyReference associateRole;
027
028    private com.commercetools.history.models.common.KeyReference source;
029
030    /**
031     * set the value to the associateRole using the builder function
032     * @param builder function to build the associateRole value
033     * @return Builder
034     */
035
036    public InheritedAssociateRoleAssignmentBuilder associateRole(
037            Function<com.commercetools.history.models.common.KeyReferenceBuilder, com.commercetools.history.models.common.KeyReferenceBuilder> builder) {
038        this.associateRole = builder.apply(com.commercetools.history.models.common.KeyReferenceBuilder.of()).build();
039        return this;
040    }
041
042    /**
043     * set the value to the associateRole using the builder function
044     * @param builder function to build the associateRole value
045     * @return Builder
046     */
047
048    public InheritedAssociateRoleAssignmentBuilder withAssociateRole(
049            Function<com.commercetools.history.models.common.KeyReferenceBuilder, com.commercetools.history.models.common.KeyReference> builder) {
050        this.associateRole = builder.apply(com.commercetools.history.models.common.KeyReferenceBuilder.of());
051        return this;
052    }
053
054    /**
055     * set the value to the associateRole
056     * @param associateRole value to be set
057     * @return Builder
058     */
059
060    public InheritedAssociateRoleAssignmentBuilder associateRole(
061            final com.commercetools.history.models.common.KeyReference associateRole) {
062        this.associateRole = associateRole;
063        return this;
064    }
065
066    /**
067     * set the value to the source using the builder function
068     * @param builder function to build the source value
069     * @return Builder
070     */
071
072    public InheritedAssociateRoleAssignmentBuilder source(
073            Function<com.commercetools.history.models.common.KeyReferenceBuilder, com.commercetools.history.models.common.KeyReferenceBuilder> builder) {
074        this.source = builder.apply(com.commercetools.history.models.common.KeyReferenceBuilder.of()).build();
075        return this;
076    }
077
078    /**
079     * set the value to the source using the builder function
080     * @param builder function to build the source value
081     * @return Builder
082     */
083
084    public InheritedAssociateRoleAssignmentBuilder withSource(
085            Function<com.commercetools.history.models.common.KeyReferenceBuilder, com.commercetools.history.models.common.KeyReference> builder) {
086        this.source = builder.apply(com.commercetools.history.models.common.KeyReferenceBuilder.of());
087        return this;
088    }
089
090    /**
091     * set the value to the source
092     * @param source value to be set
093     * @return Builder
094     */
095
096    public InheritedAssociateRoleAssignmentBuilder source(
097            final com.commercetools.history.models.common.KeyReference source) {
098        this.source = source;
099        return this;
100    }
101
102    /**
103     * value of associateRole}
104     * @return associateRole
105     */
106
107    public com.commercetools.history.models.common.KeyReference getAssociateRole() {
108        return this.associateRole;
109    }
110
111    /**
112     * value of source}
113     * @return source
114     */
115
116    public com.commercetools.history.models.common.KeyReference getSource() {
117        return this.source;
118    }
119
120    /**
121     * builds InheritedAssociateRoleAssignment with checking for non-null required values
122     * @return InheritedAssociateRoleAssignment
123     */
124    public InheritedAssociateRoleAssignment build() {
125        Objects.requireNonNull(associateRole, InheritedAssociateRoleAssignment.class + ": associateRole is missing");
126        Objects.requireNonNull(source, InheritedAssociateRoleAssignment.class + ": source is missing");
127        return new InheritedAssociateRoleAssignmentImpl(associateRole, source);
128    }
129
130    /**
131     * builds InheritedAssociateRoleAssignment without checking for non-null required values
132     * @return InheritedAssociateRoleAssignment
133     */
134    public InheritedAssociateRoleAssignment buildUnchecked() {
135        return new InheritedAssociateRoleAssignmentImpl(associateRole, source);
136    }
137
138    /**
139     * factory method for an instance of InheritedAssociateRoleAssignmentBuilder
140     * @return builder
141     */
142    public static InheritedAssociateRoleAssignmentBuilder of() {
143        return new InheritedAssociateRoleAssignmentBuilder();
144    }
145
146    /**
147     * create builder for InheritedAssociateRoleAssignment instance
148     * @param template instance with prefilled values for the builder
149     * @return builder
150     */
151    public static InheritedAssociateRoleAssignmentBuilder of(final InheritedAssociateRoleAssignment template) {
152        InheritedAssociateRoleAssignmentBuilder builder = new InheritedAssociateRoleAssignmentBuilder();
153        builder.associateRole = template.getAssociateRole();
154        builder.source = template.getSource();
155        return builder;
156    }
157
158}