Skip to content

Commit 4effe63

Browse files
committed
Addressed comments: two values set is now type() == null instead of type() == UNKNOWN_TO_SDK_VERSION.
1 parent 55a778d commit 4effe63

File tree

4 files changed

+12
-8
lines changed

4 files changed

+12
-8
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/model/intermediate/ShapeModel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -535,8 +535,8 @@ public String getUnionTypeGetterDocumentation() {
535535
+ "When this class is returned in a service response, this will be {@link Type#UNKNOWN_TO_SDK_VERSION} if the "
536536
+ "service returned a member that is only known to a newer SDK version."
537537
+ LF + LF
538-
+ "When this class is created directly in your code, this will be {@link Type#UNKNOWN_TO_SDK_VERSION} if zero or "
539-
+ "more than one member is set.";
538+
+ "When this class is created directly in your code, this will be {@link Type#UNKNOWN_TO_SDK_VERSION} if zero "
539+
+ "members are set, and {@code null} if more than one member is set.";
540540
}
541541

542542
@Override

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,10 @@ private MethodSpec handleUnionValueChangeMethod() {
349349
.endControlFlow()
350350
.beginControlFlow("if (setTypes.size() == 1)")
351351
.addStatement("this.type = setTypes.iterator().next()")
352-
.nextControlFlow("else")
352+
.nextControlFlow("else if (setTypes.isEmpty())")
353353
.addStatement("this.type = Type.UNKNOWN_TO_SDK_VERSION")
354+
.nextControlFlow("else")
355+
.addStatement("this.type = null")
354356
.endControlFlow()
355357
.build();
356358

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2234,8 +2234,8 @@ public static AllTypesUnionStructure fromAllTypesUnionStructure(Consumer<Builder
22342234
* When this class is returned in a service response, this will be {@link Type#UNKNOWN_TO_SDK_VERSION} if the
22352235
* service returned a member that is only known to a newer SDK version.
22362236
*
2237-
* When this class is created directly in your code, this will be {@link Type#UNKNOWN_TO_SDK_VERSION} if zero or
2238-
* more than one member is set.
2237+
* When this class is created directly in your code, this will be {@link Type#UNKNOWN_TO_SDK_VERSION} if zero
2238+
* members are set, and {@code null} if more than one member is set.
22392239
*/
22402240
public Type type() {
22412241
return type;
@@ -3866,8 +3866,10 @@ private final void handleUnionValueChange(Type type, Object oldValue, Object new
38663866
}
38673867
if (setTypes.size() == 1) {
38683868
this.type = setTypes.iterator().next();
3869-
} else {
3869+
} else if (setTypes.isEmpty()) {
38703870
this.type = Type.UNKNOWN_TO_SDK_VERSION;
3871+
} else {
3872+
this.type = null;
38713873
}
38723874
}
38733875
}

test/codegen-generated-classes-test/src/test/java/software/amazon/awssdk/services/UnionTypeTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ public void noMembersIsUnknownType() {
209209

210210
@ParameterizedTest
211211
@MethodSource("testCases")
212-
public <T> void twoMembersIsUnknownType(TestCase<T> testCase) {
212+
public <T> void twoMembersIsNull(TestCase<T> testCase) {
213213
AllTypesUnionStructure.Builder builder = AllTypesUnionStructure.builder();
214214

215215
testCase.setter.apply(builder, testCase.value);
@@ -219,7 +219,7 @@ public <T> void twoMembersIsUnknownType(TestCase<T> testCase) {
219219
builder.stringMember("foo");
220220
}
221221

222-
assertThat(builder.build().type()).isEqualTo(Type.UNKNOWN_TO_SDK_VERSION);
222+
assertThat(builder.build().type()).isNull();
223223
}
224224

225225
@ParameterizedTest

0 commit comments

Comments
 (0)