diff --git a/smithy-aws-iam-traits/src/main/java/software/amazon/smithy/aws/iam/traits/ServiceResolvedConditionKeysTrait.java b/smithy-aws-iam-traits/src/main/java/software/amazon/smithy/aws/iam/traits/ServiceResolvedConditionKeysTrait.java index 06a19561b86..3c8cba6aea9 100644 --- a/smithy-aws-iam-traits/src/main/java/software/amazon/smithy/aws/iam/traits/ServiceResolvedConditionKeysTrait.java +++ b/smithy-aws-iam-traits/src/main/java/software/amazon/smithy/aws/iam/traits/ServiceResolvedConditionKeysTrait.java @@ -12,8 +12,10 @@ import software.amazon.smithy.model.shapes.ShapeId; import software.amazon.smithy.model.traits.StringListTrait; import software.amazon.smithy.utils.ListUtils; +import software.amazon.smithy.utils.ToSmithyBuilder; -public final class ServiceResolvedConditionKeysTrait extends StringListTrait { +public final class ServiceResolvedConditionKeysTrait extends StringListTrait + implements ToSmithyBuilder { public static final ShapeId ID = ShapeId.from("aws.iam#serviceResolvedConditionKeys"); private List resolvedConditionKeys; @@ -47,4 +49,20 @@ public Provider() { super(ID, ServiceResolvedConditionKeysTrait::new); } } + + public static Builder builder() { + return new Builder(); + } + + @Override + public Builder toBuilder() { + return builder().sourceLocation(getSourceLocation()).values(getValues()); + } + + public static final class Builder extends StringListTrait.Builder { + @Override + public ServiceResolvedConditionKeysTrait build() { + return new ServiceResolvedConditionKeysTrait(getValues(), getSourceLocation()); + } + } } diff --git a/smithy-aws-iam-traits/src/test/java/software/amazon/smithy/aws/iam/traits/ServiceResolvedConditionKeysTraitTest.java b/smithy-aws-iam-traits/src/test/java/software/amazon/smithy/aws/iam/traits/ServiceResolvedConditionKeysTraitTest.java index 9fe15d07c92..adb382fff4b 100644 --- a/smithy-aws-iam-traits/src/test/java/software/amazon/smithy/aws/iam/traits/ServiceResolvedConditionKeysTraitTest.java +++ b/smithy-aws-iam-traits/src/test/java/software/amazon/smithy/aws/iam/traits/ServiceResolvedConditionKeysTraitTest.java @@ -6,6 +6,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; import software.amazon.smithy.model.Model; @@ -14,6 +15,18 @@ import software.amazon.smithy.utils.ListUtils; public class ServiceResolvedConditionKeysTraitTest { + + @Test + public void testBuilder() { + ServiceResolvedConditionKeysTrait.Builder builder = ServiceResolvedConditionKeysTrait.builder(); + builder.addValue("one"); + builder.addValue("two"); + ServiceResolvedConditionKeysTrait trait = builder.build(); + assertEquals(2, trait.getValues().size()); + assertThat(trait.getValues(), + equalTo(ListUtils.of("one", "two"))); + } + @Test public void loadsFromModel() { Model result = Model.assembler()