001
002package com.commercetools.api.models.message;
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.commercetools.api.models.associate_role.Permission;
012import com.fasterxml.jackson.annotation.*;
013import com.fasterxml.jackson.databind.annotation.*;
014
015import io.vrap.rmf.base.client.utils.Generated;
016
017/**
018 *  <p>Generated after a successful Remove Permissions update action.</p>
019 *
020 * <hr>
021 * Example to create an instance using the builder pattern
022 * <div class=code-example>
023 * <pre><code class='java'>
024 *     AssociateRolePermissionRemovedMessage associateRolePermissionRemovedMessage = AssociateRolePermissionRemovedMessage.builder()
025 *             .id("{id}")
026 *             .version(0.3)
027 *             .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
028 *             .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
029 *             .sequenceNumber(0.3)
030 *             .resource(resourceBuilder -> resourceBuilder)
031 *             .resourceVersion(0.3)
032 *             .permission(Permission.ADD_CHILD_UNITS)
033 *             .build()
034 * </code></pre>
035 * </div>
036 */
037@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
038@JsonDeserialize(as = AssociateRolePermissionRemovedMessageImpl.class)
039public interface AssociateRolePermissionRemovedMessage extends Message {
040
041    /**
042     * discriminator value for AssociateRolePermissionRemovedMessage
043     */
044    String ASSOCIATE_ROLE_PERMISSION_REMOVED = "AssociateRolePermissionRemoved";
045
046    /**
047     *  <p>The Permission that was removed from the AssociateRole.</p>
048     * @return permission
049     */
050    @NotNull
051    @JsonProperty("permission")
052    public Permission getPermission();
053
054    /**
055     *  <p>The Permission that was removed from the AssociateRole.</p>
056     * @param permission value to be set
057     */
058
059    public void setPermission(final Permission permission);
060
061    /**
062     * factory method
063     * @return instance of AssociateRolePermissionRemovedMessage
064     */
065    public static AssociateRolePermissionRemovedMessage of() {
066        return new AssociateRolePermissionRemovedMessageImpl();
067    }
068
069    /**
070     * factory method to create a shallow copy AssociateRolePermissionRemovedMessage
071     * @param template instance to be copied
072     * @return copy instance
073     */
074    public static AssociateRolePermissionRemovedMessage of(final AssociateRolePermissionRemovedMessage template) {
075        AssociateRolePermissionRemovedMessageImpl instance = new AssociateRolePermissionRemovedMessageImpl();
076        instance.setId(template.getId());
077        instance.setVersion(template.getVersion());
078        instance.setCreatedAt(template.getCreatedAt());
079        instance.setLastModifiedAt(template.getLastModifiedAt());
080        instance.setLastModifiedBy(template.getLastModifiedBy());
081        instance.setCreatedBy(template.getCreatedBy());
082        instance.setSequenceNumber(template.getSequenceNumber());
083        instance.setResource(template.getResource());
084        instance.setResourceVersion(template.getResourceVersion());
085        instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers());
086        instance.setPermission(template.getPermission());
087        return instance;
088    }
089
090    /**
091     * factory method to create a deep copy of AssociateRolePermissionRemovedMessage
092     * @param template instance to be copied
093     * @return copy instance
094     */
095    @Nullable
096    public static AssociateRolePermissionRemovedMessage deepCopy(
097            @Nullable final AssociateRolePermissionRemovedMessage template) {
098        if (template == null) {
099            return null;
100        }
101        AssociateRolePermissionRemovedMessageImpl instance = new AssociateRolePermissionRemovedMessageImpl();
102        instance.setId(template.getId());
103        instance.setVersion(template.getVersion());
104        instance.setCreatedAt(template.getCreatedAt());
105        instance.setLastModifiedAt(template.getLastModifiedAt());
106        instance.setLastModifiedBy(
107            com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy()));
108        instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy()));
109        instance.setSequenceNumber(template.getSequenceNumber());
110        instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource()));
111        instance.setResourceVersion(template.getResourceVersion());
112        instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers
113                .deepCopy(template.getResourceUserProvidedIdentifiers()));
114        instance.setPermission(template.getPermission());
115        return instance;
116    }
117
118    /**
119     * builder factory method for AssociateRolePermissionRemovedMessage
120     * @return builder
121     */
122    public static AssociateRolePermissionRemovedMessageBuilder builder() {
123        return AssociateRolePermissionRemovedMessageBuilder.of();
124    }
125
126    /**
127     * create builder for AssociateRolePermissionRemovedMessage instance
128     * @param template instance with prefilled values for the builder
129     * @return builder
130     */
131    public static AssociateRolePermissionRemovedMessageBuilder builder(
132            final AssociateRolePermissionRemovedMessage template) {
133        return AssociateRolePermissionRemovedMessageBuilder.of(template);
134    }
135
136    /**
137     * accessor map function
138     * @param <T> mapped type
139     * @param helper function to map the object
140     * @return mapped value
141     */
142    default <T> T withAssociateRolePermissionRemovedMessage(Function<AssociateRolePermissionRemovedMessage, T> helper) {
143        return helper.apply(this);
144    }
145
146    /**
147     * gives a TypeReference for usage with Jackson DataBind
148     * @return TypeReference
149     */
150    public static com.fasterxml.jackson.core.type.TypeReference<AssociateRolePermissionRemovedMessage> typeReference() {
151        return new com.fasterxml.jackson.core.type.TypeReference<AssociateRolePermissionRemovedMessage>() {
152            @Override
153            public String toString() {
154                return "TypeReference<AssociateRolePermissionRemovedMessage>";
155            }
156        };
157    }
158}