Skip to content

Commit c610b83

Browse files
committed
Fix builder setters to use the correct Boxed or primitive type
1 parent d2f4a17 commit c610b83

4 files changed

Lines changed: 6 additions & 4 deletions

File tree

codegen/codegen-core/src/main/java/software/amazon/smithy/java/codegen/generators/BuilderGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,9 @@ protected void generateMemberValueSetters(JavaWriter writer) {
159159
writer.putContext("type", symbolProvider.toSymbol(member));
160160
writer.putContext("memberSchema", CodegenUtils.toMemberSchemaName(symbolProvider.toMemberName(member)));
161161
writer.putContext("schemaUtilsClass", SchemaUtils.class);
162+
writer.putContext("isNullable", CodegenUtils.isNullableMember(model, member));
162163
writer.write(
163-
"case $L -> ${memberName:L}((${type:T}) ${schemaUtilsClass:T}.validateSameMember(${memberSchema:L}, member, value));",
164+
"case $L -> ${memberName:L}((${?isNullable}${type:B}${/isNullable}${^isNullable}${type:N}${/isNullable}) ${schemaUtilsClass:T}.validateSameMember(${memberSchema:L}, member, value));",
164165
idx);
165166
writer.popState();
166167
}

codegen/codegen-core/src/main/java/software/amazon/smithy/java/codegen/generators/StructureGenerator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,11 +754,12 @@ protected void generateSetters(JavaWriter writer) {
754754
writer.putContext("memberSymbol", symbolProvider.toSymbol(member));
755755
writer.putContext("tracked", CodegenUtils.isRequiredWithNoDefault(member));
756756
writer.putContext("check", CodegenUtils.requiresSetterNullCheck(symbolProvider, member));
757+
writer.putContext("isNullable", CodegenUtils.isNullableMember(model, member));
757758
writer.putContext("schemaName", CodegenUtils.toMemberSchemaName(symbolProvider.toMemberName(member)));
758759

759760
writer.write(
760761
"""
761-
public Builder ${memberName:L}(${memberSymbol:T} ${memberName:L}) {
762+
public Builder ${memberName:L}(${?isNullable}${memberSymbol:B}${/isNullable}${^isNullable}${memberSymbol:N}${/isNullable} ${memberName:L}) {
762763
this.${memberName:L} = ${?check}${objects:T}.requireNonNull(${/check}${memberName:L}${?check}, "${memberName:L} cannot be null")${/check};${?tracked}
763764
tracker.setMember(${schemaName:L});${/tracked}
764765
return this;

codegen/plugins/server-codegen/src/it/java/software/amazon/smithy/java/codegen/server/ServiceBuilderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ void testRouting() throws ExecutionException, InterruptedException {
9090
var output = getBeer.asyncFunction().apply(GetBeerInput.builder().id(1).build(), null);
9191
assertThat(output.get().getValue())
9292
.hasSize(1)
93-
.containsExactly(Beer.builder().id(1).name("TestBeer").build());
93+
.containsExactly(Beer.builder().id(1L).name("TestBeer").build());
9494

9595
Operation<EchoInput, EchoOutput> echo = service.getOperation("Echo");
9696
assertThat("Echo").isEqualTo(echo.name());

examples/lambda/src/main/java/software/amazon/smithy/java/example/BeerServiceProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public final class BeerServiceProvider implements SmithyServiceProvider {
3333
private static final Logger LOGGER = Logger.getLogger(BeerServiceProvider.class.getName());
3434
private static final Service SERVICE;
3535
private static final Map<String, Beer> FRIDGE = new HashMap<>(
36-
Map.of("TXVuaWNoIEhlbGxlcw==", Beer.builder().name("Munich Helles").quantity(1).build()));
36+
Map.of("TXVuaWNoIEhlbGxlcw==", Beer.builder().name("Munich Helles").quantity(1L).build()));
3737
private static final Base64.Encoder ENCODER = Base64.getEncoder();
3838

3939
static {

0 commit comments

Comments
 (0)