Skip to content

Commit aabd35e

Browse files
authored
Add @mutable and @NotThreadSafe to model Builders (#6096)
* Add @mutable and @NotThreadSafe to model builders (including request) * Update codegen test generated files * Add changelog
1 parent 7009f86 commit aabd35e

File tree

51 files changed

+206
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+206
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "bugfix",
3+
"category": "AWS SDK for Java v2",
4+
"contributor": "",
5+
"description": "Add `@Mutable` and `@NotThreadSafe` to model Builders"
6+
}

codegen/src/main/java/software/amazon/awssdk/codegen/poet/model/ModelBuilderSpecs.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import java.util.Set;
3636
import java.util.function.Consumer;
3737
import javax.lang.model.element.Modifier;
38+
import software.amazon.awssdk.annotations.Mutable;
39+
import software.amazon.awssdk.annotations.NotThreadSafe;
3840
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
3941
import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
4042
import software.amazon.awssdk.codegen.model.intermediate.MemberModel;
@@ -83,6 +85,8 @@ public ClassName builderImplName() {
8385
public TypeSpec builderInterface() {
8486
TypeSpec.Builder builder = TypeSpec.interfaceBuilder(builderInterfaceName())
8587
.addSuperinterfaces(builderSuperInterfaces())
88+
.addAnnotation(Mutable.class)
89+
.addAnnotation(NotThreadSafe.class)
8690
.addModifiers(PUBLIC);
8791

8892
shapeModel.getNonStreamingMembers()

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/alltypesrequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import java.util.stream.Collectors;
1717
import java.util.stream.Stream;
1818
import software.amazon.awssdk.annotations.Generated;
19+
import software.amazon.awssdk.annotations.Mutable;
20+
import software.amazon.awssdk.annotations.NotThreadSafe;
1921
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
2022
import software.amazon.awssdk.core.SdkBytes;
2123
import software.amazon.awssdk.core.SdkField;
@@ -1661,6 +1663,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
16611663
return (obj, val) -> s.accept((Builder) obj, val);
16621664
}
16631665

1666+
@Mutable
1667+
@NotThreadSafe
16641668
public interface Builder extends JsonProtocolTestsRequest.Builder, SdkPojo, CopyableBuilder<Builder, AllTypesRequest> {
16651669
/**
16661670
* Sets the value of the StringMember property for this object.

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/alltypesresponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import java.util.stream.Collectors;
1717
import java.util.stream.Stream;
1818
import software.amazon.awssdk.annotations.Generated;
19+
import software.amazon.awssdk.annotations.Mutable;
20+
import software.amazon.awssdk.annotations.NotThreadSafe;
1921
import software.amazon.awssdk.core.SdkBytes;
2022
import software.amazon.awssdk.core.SdkField;
2123
import software.amazon.awssdk.core.SdkPojo;
@@ -1660,6 +1662,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
16601662
return (obj, val) -> s.accept((Builder) obj, val);
16611663
}
16621664

1665+
@Mutable
1666+
@NotThreadSafe
16631667
public interface Builder extends JsonProtocolTestsResponse.Builder, SdkPojo, CopyableBuilder<Builder, AllTypesResponse> {
16641668
/**
16651669
* Sets the value of the StringMember property for this object.

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/alltypesunionstructure.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.util.stream.Collectors;
2020
import java.util.stream.Stream;
2121
import software.amazon.awssdk.annotations.Generated;
22+
import software.amazon.awssdk.annotations.Mutable;
23+
import software.amazon.awssdk.annotations.NotThreadSafe;
2224
import software.amazon.awssdk.core.SdkBytes;
2325
import software.amazon.awssdk.core.SdkField;
2426
import software.amazon.awssdk.core.SdkPojo;
@@ -2301,6 +2303,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
23012303
return (obj, val) -> s.accept((Builder) obj, val);
23022304
}
23032305

2306+
@Mutable
2307+
@NotThreadSafe
23042308
public interface Builder extends SdkPojo, CopyableBuilder<Builder, AllTypesUnionStructure> {
23052309
/**
23062310
* Sets the value of the StringMember property for this object.

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/basetype.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import java.util.function.BiConsumer;
1212
import java.util.function.Function;
1313
import software.amazon.awssdk.annotations.Generated;
14+
import software.amazon.awssdk.annotations.Mutable;
15+
import software.amazon.awssdk.annotations.NotThreadSafe;
1416
import software.amazon.awssdk.core.SdkField;
1517
import software.amazon.awssdk.core.SdkPojo;
1618
import software.amazon.awssdk.core.protocol.MarshallLocation;
@@ -163,6 +165,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
163165
return (obj, val) -> s.accept((Builder) obj, val);
164166
}
165167

168+
@Mutable
169+
@NotThreadSafe
166170
public interface Builder extends SdkPojo, CopyableBuilder<Builder, BaseType> {
167171
/**
168172
* Sets the value of the BaseMember property for this object.

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/deprecatedrenamerequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import java.util.function.Consumer;
1212
import java.util.function.Function;
1313
import software.amazon.awssdk.annotations.Generated;
14+
import software.amazon.awssdk.annotations.Mutable;
15+
import software.amazon.awssdk.annotations.NotThreadSafe;
1416
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
1517
import software.amazon.awssdk.core.SdkField;
1618
import software.amazon.awssdk.core.SdkPojo;
@@ -171,6 +173,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
171173
return (obj, val) -> s.accept((Builder) obj, val);
172174
}
173175

176+
@Mutable
177+
@NotThreadSafe
174178
public interface Builder extends JsonProtocolTestsRequest.Builder, SdkPojo, CopyableBuilder<Builder, DeprecatedRenameRequest> {
175179
/**
176180
* Sets the value of the NewNameNoDeprecation property for this object.

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/deprecatedrenameresponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import java.util.function.BiConsumer;
1111
import java.util.function.Function;
1212
import software.amazon.awssdk.annotations.Generated;
13+
import software.amazon.awssdk.annotations.Mutable;
14+
import software.amazon.awssdk.annotations.NotThreadSafe;
1315
import software.amazon.awssdk.core.SdkField;
1416
import software.amazon.awssdk.core.SdkPojo;
1517
import software.amazon.awssdk.core.protocol.MarshallLocation;
@@ -158,6 +160,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
158160
return (obj, val) -> s.accept((Builder) obj, val);
159161
}
160162

163+
@Mutable
164+
@NotThreadSafe
161165
public interface Builder extends JsonProtocolTestsResponse.Builder, SdkPojo,
162166
CopyableBuilder<Builder, DeprecatedRenameResponse> {
163167
/**

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/emptymodeledexception.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.util.List;
55
import java.util.Map;
66
import software.amazon.awssdk.annotations.Generated;
7+
import software.amazon.awssdk.annotations.Mutable;
8+
import software.amazon.awssdk.annotations.NotThreadSafe;
79
import software.amazon.awssdk.awscore.exception.AwsErrorDetails;
810
import software.amazon.awssdk.core.SdkField;
911
import software.amazon.awssdk.core.SdkPojo;
@@ -52,6 +54,8 @@ private static Map<String, SdkField<?>> memberNameToFieldInitializer() {
5254
return Collections.emptyMap();
5355
}
5456

57+
@Mutable
58+
@NotThreadSafe
5559
public interface Builder extends SdkPojo, CopyableBuilder<Builder, EmptyModeledException>, JsonProtocolTestsException.Builder {
5660
@Override
5761
Builder awsErrorDetails(AwsErrorDetails awsErrorDetails);

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/eventone.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import java.util.function.Consumer;
1313
import java.util.function.Function;
1414
import software.amazon.awssdk.annotations.Generated;
15+
import software.amazon.awssdk.annotations.Mutable;
16+
import software.amazon.awssdk.annotations.NotThreadSafe;
1517
import software.amazon.awssdk.core.SdkField;
1618
import software.amazon.awssdk.core.SdkPojo;
1719
import software.amazon.awssdk.core.protocol.MarshallLocation;
@@ -148,6 +150,8 @@ public void accept(EventStreamOperationResponseHandler.Visitor visitor) {
148150
throw new UnsupportedOperationException();
149151
}
150152

153+
@Mutable
154+
@NotThreadSafe
151155
public interface Builder extends SdkPojo, CopyableBuilder<Builder, EventOne> {
152156
/**
153157
* Sets the value of the Foo property for this object.

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/eventstreamoperationrequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import java.util.Optional;
77
import java.util.function.Consumer;
88
import software.amazon.awssdk.annotations.Generated;
9+
import software.amazon.awssdk.annotations.Mutable;
10+
import software.amazon.awssdk.annotations.NotThreadSafe;
911
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
1012
import software.amazon.awssdk.core.SdkField;
1113
import software.amazon.awssdk.core.SdkPojo;
@@ -92,6 +94,8 @@ private static Map<String, SdkField<?>> memberNameToFieldInitializer() {
9294
return Collections.emptyMap();
9395
}
9496

97+
@Mutable
98+
@NotThreadSafe
9599
public interface Builder extends JsonProtocolTestsRequest.Builder, SdkPojo,
96100
CopyableBuilder<Builder, EventStreamOperationRequest> {
97101
@Override

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/eventstreamoperationresponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.util.Map;
66
import java.util.Optional;
77
import software.amazon.awssdk.annotations.Generated;
8+
import software.amazon.awssdk.annotations.Mutable;
9+
import software.amazon.awssdk.annotations.NotThreadSafe;
810
import software.amazon.awssdk.core.SdkField;
911
import software.amazon.awssdk.core.SdkPojo;
1012
import software.amazon.awssdk.utils.ToString;
@@ -90,6 +92,8 @@ private static Map<String, SdkField<?>> memberNameToFieldInitializer() {
9092
return Collections.emptyMap();
9193
}
9294

95+
@Mutable
96+
@NotThreadSafe
9397
public interface Builder extends JsonProtocolTestsResponse.Builder, SdkPojo,
9498
CopyableBuilder<Builder, EventStreamOperationResponse> {
9599
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/eventstreamoperationwithonlyinputrequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import java.util.Optional;
77
import java.util.function.Consumer;
88
import software.amazon.awssdk.annotations.Generated;
9+
import software.amazon.awssdk.annotations.Mutable;
10+
import software.amazon.awssdk.annotations.NotThreadSafe;
911
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
1012
import software.amazon.awssdk.core.SdkField;
1113
import software.amazon.awssdk.core.SdkPojo;
@@ -92,6 +94,8 @@ private static Map<String, SdkField<?>> memberNameToFieldInitializer() {
9294
return Collections.emptyMap();
9395
}
9496

97+
@Mutable
98+
@NotThreadSafe
9599
public interface Builder extends JsonProtocolTestsRequest.Builder, SdkPojo,
96100
CopyableBuilder<Builder, EventStreamOperationWithOnlyInputRequest> {
97101
@Override

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/eventstreamoperationwithonlyinputresponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.util.Map;
66
import java.util.Optional;
77
import software.amazon.awssdk.annotations.Generated;
8+
import software.amazon.awssdk.annotations.Mutable;
9+
import software.amazon.awssdk.annotations.NotThreadSafe;
810
import software.amazon.awssdk.core.SdkField;
911
import software.amazon.awssdk.core.SdkPojo;
1012
import software.amazon.awssdk.utils.ToString;
@@ -88,6 +90,8 @@ private static Map<String, SdkField<?>> memberNameToFieldInitializer() {
8890
return Collections.emptyMap();
8991
}
9092

93+
@Mutable
94+
@NotThreadSafe
9195
public interface Builder extends JsonProtocolTestsResponse.Builder, SdkPojo,
9296
CopyableBuilder<Builder, EventStreamOperationWithOnlyInputResponse> {
9397
}

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/eventtwo.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import java.util.function.Consumer;
1313
import java.util.function.Function;
1414
import software.amazon.awssdk.annotations.Generated;
15+
import software.amazon.awssdk.annotations.Mutable;
16+
import software.amazon.awssdk.annotations.NotThreadSafe;
1517
import software.amazon.awssdk.core.SdkField;
1618
import software.amazon.awssdk.core.SdkPojo;
1719
import software.amazon.awssdk.core.protocol.MarshallLocation;
@@ -148,6 +150,8 @@ public void accept(EventStreamOperationResponseHandler.Visitor visitor) {
148150
throw new UnsupportedOperationException();
149151
}
150152

153+
@Mutable
154+
@NotThreadSafe
151155
public interface Builder extends SdkPojo, CopyableBuilder<Builder, EventTwo> {
152156
/**
153157
* Sets the value of the Bar property for this object.

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/exceptions/jsonserviceinternalservererrorexception.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.util.List;
55
import java.util.Map;
66
import software.amazon.awssdk.annotations.Generated;
7+
import software.amazon.awssdk.annotations.Mutable;
8+
import software.amazon.awssdk.annotations.NotThreadSafe;
79
import software.amazon.awssdk.awscore.exception.AwsErrorDetails;
810
import software.amazon.awssdk.core.SdkField;
911
import software.amazon.awssdk.core.SdkPojo;
@@ -60,6 +62,8 @@ private static Map<String, SdkField<?>> memberNameToFieldInitializer() {
6062
return Collections.emptyMap();
6163
}
6264

65+
@Mutable
66+
@NotThreadSafe
6367
public interface Builder extends SdkPojo, CopyableBuilder<Builder, JsonServiceInternalServerErrorException>,
6468
JsonException.Builder {
6569
@Override

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/exceptions/jsonserviceinvalidinputexception.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.util.List;
55
import java.util.Map;
66
import software.amazon.awssdk.annotations.Generated;
7+
import software.amazon.awssdk.annotations.Mutable;
8+
import software.amazon.awssdk.annotations.NotThreadSafe;
79
import software.amazon.awssdk.awscore.exception.AwsErrorDetails;
810
import software.amazon.awssdk.core.SdkField;
911
import software.amazon.awssdk.core.SdkPojo;
@@ -55,6 +57,8 @@ private static Map<String, SdkField<?>> memberNameToFieldInitializer() {
5557
return Collections.emptyMap();
5658
}
5759

60+
@Mutable
61+
@NotThreadSafe
5862
public interface Builder extends SdkPojo, CopyableBuilder<Builder, JsonServiceInvalidInputException>, JsonException.Builder {
5963
@Override
6064
Builder awsErrorDetails(AwsErrorDetails awsErrorDetails);

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/exceptions/jsonservicethrottlingexception.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import java.util.List;
55
import java.util.Map;
66
import software.amazon.awssdk.annotations.Generated;
7+
import software.amazon.awssdk.annotations.Mutable;
8+
import software.amazon.awssdk.annotations.NotThreadSafe;
79
import software.amazon.awssdk.awscore.exception.AwsErrorDetails;
810
import software.amazon.awssdk.core.SdkField;
911
import software.amazon.awssdk.core.SdkPojo;
@@ -65,6 +67,8 @@ private static Map<String, SdkField<?>> memberNameToFieldInitializer() {
6567
return Collections.emptyMap();
6668
}
6769

70+
@Mutable
71+
@NotThreadSafe
6872
public interface Builder extends SdkPojo, CopyableBuilder<Builder, JsonServiceThrottlingException>, JsonException.Builder {
6973
@Override
7074
Builder awsErrorDetails(AwsErrorDetails awsErrorDetails);

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/existencechecknamingrequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import java.util.function.Consumer;
1313
import java.util.function.Function;
1414
import software.amazon.awssdk.annotations.Generated;
15+
import software.amazon.awssdk.annotations.Mutable;
16+
import software.amazon.awssdk.annotations.NotThreadSafe;
1517
import software.amazon.awssdk.awscore.AwsRequestOverrideConfiguration;
1618
import software.amazon.awssdk.core.SdkField;
1719
import software.amazon.awssdk.core.SdkPojo;
@@ -320,6 +322,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
320322
return (obj, val) -> s.accept((Builder) obj, val);
321323
}
322324

325+
@Mutable
326+
@NotThreadSafe
323327
public interface Builder extends JsonProtocolTestsRequest.Builder, SdkPojo,
324328
CopyableBuilder<Builder, ExistenceCheckNamingRequest> {
325329
/**

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/existencechecknamingresponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import java.util.function.BiConsumer;
1212
import java.util.function.Function;
1313
import software.amazon.awssdk.annotations.Generated;
14+
import software.amazon.awssdk.annotations.Mutable;
15+
import software.amazon.awssdk.annotations.NotThreadSafe;
1416
import software.amazon.awssdk.core.SdkField;
1517
import software.amazon.awssdk.core.SdkPojo;
1618
import software.amazon.awssdk.core.protocol.MarshallLocation;
@@ -318,6 +320,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
318320
return (obj, val) -> s.accept((Builder) obj, val);
319321
}
320322

323+
@Mutable
324+
@NotThreadSafe
321325
public interface Builder extends JsonProtocolTestsResponse.Builder, SdkPojo,
322326
CopyableBuilder<Builder, ExistenceCheckNamingResponse> {
323327
/**

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/inputevent.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import java.util.function.Consumer;
1414
import java.util.function.Function;
1515
import software.amazon.awssdk.annotations.Generated;
16+
import software.amazon.awssdk.annotations.Mutable;
17+
import software.amazon.awssdk.annotations.NotThreadSafe;
1618
import software.amazon.awssdk.core.SdkBytes;
1719
import software.amazon.awssdk.core.SdkField;
1820
import software.amazon.awssdk.core.SdkPojo;
@@ -145,6 +147,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
145147
return (obj, val) -> s.accept((Builder) obj, val);
146148
}
147149

150+
@Mutable
151+
@NotThreadSafe
148152
public interface Builder extends SdkPojo, CopyableBuilder<Builder, InputEvent> {
149153
/**
150154
* Sets the value of the ExplicitPayloadMember property for this object.

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/model/inputeventtwo.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import java.util.function.Consumer;
1414
import java.util.function.Function;
1515
import software.amazon.awssdk.annotations.Generated;
16+
import software.amazon.awssdk.annotations.Mutable;
17+
import software.amazon.awssdk.annotations.NotThreadSafe;
1618
import software.amazon.awssdk.core.SdkBytes;
1719
import software.amazon.awssdk.core.SdkField;
1820
import software.amazon.awssdk.core.SdkPojo;
@@ -190,6 +192,8 @@ private static <T> BiConsumer<Object, T> setter(BiConsumer<Builder, T> s) {
190192
return (obj, val) -> s.accept((Builder) obj, val);
191193
}
192194

195+
@Mutable
196+
@NotThreadSafe
193197
public interface Builder extends SdkPojo, CopyableBuilder<Builder, InputEventTwo> {
194198
/**
195199
* Sets the value of the ImplicitPayloadMemberOne property for this object.

0 commit comments

Comments
 (0)