All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.iam.model.GroupDetail Maven / Gradle / Ivy

/*
 * Copyright 2014-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.iam.model;

import java.io.Serializable;
import java.time.Instant;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;

/**
 * 

* Contains information about an IAM group, including all of the group's policies. *

*

* This data type is used as a response element in the GetAccountAuthorizationDetails operation. *

*/ @Generated("software.amazon.awssdk:codegen") public final class GroupDetail implements SdkPojo, Serializable, ToCopyableBuilder { private static final SdkField PATH_FIELD = SdkField. builder(MarshallingType.STRING) .getter(getter(GroupDetail::path)).setter(setter(Builder::path)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Path").build()).build(); private static final SdkField GROUP_NAME_FIELD = SdkField. builder(MarshallingType.STRING) .getter(getter(GroupDetail::groupName)).setter(setter(Builder::groupName)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("GroupName").build()).build(); private static final SdkField GROUP_ID_FIELD = SdkField. builder(MarshallingType.STRING) .getter(getter(GroupDetail::groupId)).setter(setter(Builder::groupId)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("GroupId").build()).build(); private static final SdkField ARN_FIELD = SdkField. builder(MarshallingType.STRING) .getter(getter(GroupDetail::arn)).setter(setter(Builder::arn)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("Arn").build()).build(); private static final SdkField CREATE_DATE_FIELD = SdkField. builder(MarshallingType.INSTANT) .getter(getter(GroupDetail::createDate)).setter(setter(Builder::createDate)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("CreateDate").build()).build(); private static final SdkField> GROUP_POLICY_LIST_FIELD = SdkField .> builder(MarshallingType.LIST) .getter(getter(GroupDetail::groupPolicyList)) .setter(setter(Builder::groupPolicyList)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("GroupPolicyList").build(), ListTrait .builder() .memberLocationName(null) .memberFieldInfo( SdkField. builder(MarshallingType.SDK_POJO) .constructor(PolicyDetail::builder) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD) .locationName("member").build()).build()).build()).build(); private static final SdkField> ATTACHED_MANAGED_POLICIES_FIELD = SdkField .> builder(MarshallingType.LIST) .getter(getter(GroupDetail::attachedManagedPolicies)) .setter(setter(Builder::attachedManagedPolicies)) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("AttachedManagedPolicies").build(), ListTrait .builder() .memberLocationName(null) .memberFieldInfo( SdkField. builder(MarshallingType.SDK_POJO) .constructor(AttachedPolicy::builder) .traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD) .locationName("member").build()).build()).build()).build(); private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(PATH_FIELD, GROUP_NAME_FIELD, GROUP_ID_FIELD, ARN_FIELD, CREATE_DATE_FIELD, GROUP_POLICY_LIST_FIELD, ATTACHED_MANAGED_POLICIES_FIELD)); private static final long serialVersionUID = 1L; private final String path; private final String groupName; private final String groupId; private final String arn; private final Instant createDate; private final List groupPolicyList; private final List attachedManagedPolicies; private GroupDetail(BuilderImpl builder) { this.path = builder.path; this.groupName = builder.groupName; this.groupId = builder.groupId; this.arn = builder.arn; this.createDate = builder.createDate; this.groupPolicyList = builder.groupPolicyList; this.attachedManagedPolicies = builder.attachedManagedPolicies; } /** *

* The path to the group. For more information about paths, see IAM Identifiers in the IAM * User Guide. *

* * @return The path to the group. For more information about paths, see IAM Identifiers in the * IAM User Guide. */ public String path() { return path; } /** *

* The friendly name that identifies the group. *

* * @return The friendly name that identifies the group. */ public String groupName() { return groupName; } /** *

* The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in the IAM * User Guide. *

* * @return The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in the * IAM User Guide. */ public String groupId() { return groupId; } /** * Returns the value of the Arn property for this object. * * @return The value of the Arn property for this object. */ public String arn() { return arn; } /** *

* The date and time, in ISO 8601 date-time format, when the group was * created. *

* * @return The date and time, in ISO 8601 date-time format, when the * group was created. */ public Instant createDate() { return createDate; } /** *

* A list of the inline policies embedded in the group. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return A list of the inline policies embedded in the group. */ public List groupPolicyList() { return groupPolicyList; } /** *

* A list of the managed policies attached to the group. *

*

* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException. *

* * @return A list of the managed policies attached to the group. */ public List attachedManagedPolicies() { return attachedManagedPolicies; } @Override public Builder toBuilder() { return new BuilderImpl(this); } public static Builder builder() { return new BuilderImpl(); } public static Class serializableBuilderClass() { return BuilderImpl.class; } @Override public int hashCode() { int hashCode = 1; hashCode = 31 * hashCode + Objects.hashCode(path()); hashCode = 31 * hashCode + Objects.hashCode(groupName()); hashCode = 31 * hashCode + Objects.hashCode(groupId()); hashCode = 31 * hashCode + Objects.hashCode(arn()); hashCode = 31 * hashCode + Objects.hashCode(createDate()); hashCode = 31 * hashCode + Objects.hashCode(groupPolicyList()); hashCode = 31 * hashCode + Objects.hashCode(attachedManagedPolicies()); return hashCode; } @Override public boolean equals(Object obj) { return equalsBySdkFields(obj); } @Override public boolean equalsBySdkFields(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof GroupDetail)) { return false; } GroupDetail other = (GroupDetail) obj; return Objects.equals(path(), other.path()) && Objects.equals(groupName(), other.groupName()) && Objects.equals(groupId(), other.groupId()) && Objects.equals(arn(), other.arn()) && Objects.equals(createDate(), other.createDate()) && Objects.equals(groupPolicyList(), other.groupPolicyList()) && Objects.equals(attachedManagedPolicies(), other.attachedManagedPolicies()); } /** * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be * redacted from this string using a placeholder value. */ @Override public String toString() { return ToString.builder("GroupDetail").add("Path", path()).add("GroupName", groupName()).add("GroupId", groupId()) .add("Arn", arn()).add("CreateDate", createDate()).add("GroupPolicyList", groupPolicyList()) .add("AttachedManagedPolicies", attachedManagedPolicies()).build(); } public Optional getValueForField(String fieldName, Class clazz) { switch (fieldName) { case "Path": return Optional.ofNullable(clazz.cast(path())); case "GroupName": return Optional.ofNullable(clazz.cast(groupName())); case "GroupId": return Optional.ofNullable(clazz.cast(groupId())); case "Arn": return Optional.ofNullable(clazz.cast(arn())); case "CreateDate": return Optional.ofNullable(clazz.cast(createDate())); case "GroupPolicyList": return Optional.ofNullable(clazz.cast(groupPolicyList())); case "AttachedManagedPolicies": return Optional.ofNullable(clazz.cast(attachedManagedPolicies())); default: return Optional.empty(); } } @Override public List> sdkFields() { return SDK_FIELDS; } private static Function getter(Function g) { return obj -> g.apply((GroupDetail) obj); } private static BiConsumer setter(BiConsumer s) { return (obj, val) -> s.accept((Builder) obj, val); } public interface Builder extends SdkPojo, CopyableBuilder { /** *

* The path to the group. For more information about paths, see IAM Identifiers in the * IAM User Guide. *

* * @param path * The path to the group. For more information about paths, see IAM Identifiers in * the IAM User Guide. * @return Returns a reference to this object so that method calls can be chained together. */ Builder path(String path); /** *

* The friendly name that identifies the group. *

* * @param groupName * The friendly name that identifies the group. * @return Returns a reference to this object so that method calls can be chained together. */ Builder groupName(String groupName); /** *

* The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in the * IAM User Guide. *

* * @param groupId * The stable and unique string identifying the group. For more information about IDs, see IAM Identifiers in * the IAM User Guide. * @return Returns a reference to this object so that method calls can be chained together. */ Builder groupId(String groupId); /** * Sets the value of the Arn property for this object. * * @param arn * The new value for the Arn property for this object. * @return Returns a reference to this object so that method calls can be chained together. */ Builder arn(String arn); /** *

* The date and time, in ISO 8601 date-time format, when the group * was created. *

* * @param createDate * The date and time, in ISO 8601 date-time format, when the * group was created. * @return Returns a reference to this object so that method calls can be chained together. */ Builder createDate(Instant createDate); /** *

* A list of the inline policies embedded in the group. *

* * @param groupPolicyList * A list of the inline policies embedded in the group. * @return Returns a reference to this object so that method calls can be chained together. */ Builder groupPolicyList(Collection groupPolicyList); /** *

* A list of the inline policies embedded in the group. *

* * @param groupPolicyList * A list of the inline policies embedded in the group. * @return Returns a reference to this object so that method calls can be chained together. */ Builder groupPolicyList(PolicyDetail... groupPolicyList); /** *

* A list of the inline policies embedded in the group. *

* This is a convenience that creates an instance of the {@link List.Builder} avoiding the need to * create one manually via {@link List#builder()}. * * When the {@link Consumer} completes, {@link List.Builder#build()} is called immediately and its * result is passed to {@link #groupPolicyList(List)}. * * @param groupPolicyList * a consumer that will call methods on {@link List.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #groupPolicyList(List) */ Builder groupPolicyList(Consumer... groupPolicyList); /** *

* A list of the managed policies attached to the group. *

* * @param attachedManagedPolicies * A list of the managed policies attached to the group. * @return Returns a reference to this object so that method calls can be chained together. */ Builder attachedManagedPolicies(Collection attachedManagedPolicies); /** *

* A list of the managed policies attached to the group. *

* * @param attachedManagedPolicies * A list of the managed policies attached to the group. * @return Returns a reference to this object so that method calls can be chained together. */ Builder attachedManagedPolicies(AttachedPolicy... attachedManagedPolicies); /** *

* A list of the managed policies attached to the group. *

* This is a convenience that creates an instance of the {@link List.Builder} avoiding the need * to create one manually via {@link List#builder()}. * * When the {@link Consumer} completes, {@link List.Builder#build()} is called immediately and * its result is passed to {@link #attachedManagedPolicies(List)}. * * @param attachedManagedPolicies * a consumer that will call methods on {@link List.Builder} * @return Returns a reference to this object so that method calls can be chained together. * @see #attachedManagedPolicies(List) */ Builder attachedManagedPolicies(Consumer... attachedManagedPolicies); } static final class BuilderImpl implements Builder { private String path; private String groupName; private String groupId; private String arn; private Instant createDate; private List groupPolicyList = DefaultSdkAutoConstructList.getInstance(); private List attachedManagedPolicies = DefaultSdkAutoConstructList.getInstance(); private BuilderImpl() { } private BuilderImpl(GroupDetail model) { path(model.path); groupName(model.groupName); groupId(model.groupId); arn(model.arn); createDate(model.createDate); groupPolicyList(model.groupPolicyList); attachedManagedPolicies(model.attachedManagedPolicies); } public final String getPath() { return path; } @Override public final Builder path(String path) { this.path = path; return this; } public final void setPath(String path) { this.path = path; } public final String getGroupName() { return groupName; } @Override public final Builder groupName(String groupName) { this.groupName = groupName; return this; } public final void setGroupName(String groupName) { this.groupName = groupName; } public final String getGroupId() { return groupId; } @Override public final Builder groupId(String groupId) { this.groupId = groupId; return this; } public final void setGroupId(String groupId) { this.groupId = groupId; } public final String getArn() { return arn; } @Override public final Builder arn(String arn) { this.arn = arn; return this; } public final void setArn(String arn) { this.arn = arn; } public final Instant getCreateDate() { return createDate; } @Override public final Builder createDate(Instant createDate) { this.createDate = createDate; return this; } public final void setCreateDate(Instant createDate) { this.createDate = createDate; } public final Collection getGroupPolicyList() { return groupPolicyList != null ? groupPolicyList.stream().map(PolicyDetail::toBuilder).collect(Collectors.toList()) : null; } @Override public final Builder groupPolicyList(Collection groupPolicyList) { this.groupPolicyList = _policyDetailListTypeCopier.copy(groupPolicyList); return this; } @Override @SafeVarargs public final Builder groupPolicyList(PolicyDetail... groupPolicyList) { groupPolicyList(Arrays.asList(groupPolicyList)); return this; } @Override @SafeVarargs public final Builder groupPolicyList(Consumer... groupPolicyList) { groupPolicyList(Stream.of(groupPolicyList).map(c -> PolicyDetail.builder().applyMutation(c).build()) .collect(Collectors.toList())); return this; } public final void setGroupPolicyList(Collection groupPolicyList) { this.groupPolicyList = _policyDetailListTypeCopier.copyFromBuilder(groupPolicyList); } public final Collection getAttachedManagedPolicies() { return attachedManagedPolicies != null ? attachedManagedPolicies.stream().map(AttachedPolicy::toBuilder) .collect(Collectors.toList()) : null; } @Override public final Builder attachedManagedPolicies(Collection attachedManagedPolicies) { this.attachedManagedPolicies = _attachedPoliciesListTypeCopier.copy(attachedManagedPolicies); return this; } @Override @SafeVarargs public final Builder attachedManagedPolicies(AttachedPolicy... attachedManagedPolicies) { attachedManagedPolicies(Arrays.asList(attachedManagedPolicies)); return this; } @Override @SafeVarargs public final Builder attachedManagedPolicies(Consumer... attachedManagedPolicies) { attachedManagedPolicies(Stream.of(attachedManagedPolicies) .map(c -> AttachedPolicy.builder().applyMutation(c).build()).collect(Collectors.toList())); return this; } public final void setAttachedManagedPolicies(Collection attachedManagedPolicies) { this.attachedManagedPolicies = _attachedPoliciesListTypeCopier.copyFromBuilder(attachedManagedPolicies); } @Override public GroupDetail build() { return new GroupDetail(this); } @Override public List> sdkFields() { return SDK_FIELDS; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy