Skip to content

Commit d9d1474

Browse files
committed
Make union members implicitly type-cast in getValue
1 parent d0b8e6c commit d9d1474

File tree

3 files changed

+48
-48
lines changed

3 files changed

+48
-48
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ public void serializeMembers(${shapeSerializer:N} serializer) {
140140
141141
@Override
142142
@SuppressWarnings("unchecked")
143-
public <T> T getValue() {
144-
return (T)${?hasBoxed}(${member:B})${/hasBoxed} ${^unit}${memberName:L}${/unit}${?unit}null${/unit};
143+
public ${?hasBoxed}${member:B}${/hasBoxed}${^hasBoxed}${member:N}${/hasBoxed} getValue() {
144+
return ${^unit}${memberName:L}${/unit}${?unit}null${/unit};
145145
}
146146
147147
${toString:C|}
@@ -192,8 +192,8 @@ public void serializeMembers(${shapeSerializer:T} serializer) {}
192192
193193
@Override
194194
@SuppressWarnings("unchecked")
195-
public <T> T getValue() {
196-
return (T) memberName;
195+
public String getValue() {
196+
return memberName;
197197
}
198198
199199
private record $$Hidden() implements ${shape:T} {

codegen/plugins/types-codegen/src/test/resources/software/amazon/smithy/java/codegen/types/test-cases/naming-conflict/expected/UnionWithTypeMember.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public void serializeMembers(ShapeSerializer serializer) {
4343

4444
@Override
4545
@SuppressWarnings("unchecked")
46-
public <T> T getValue() {
47-
return (T) type;
46+
public Type getValue() {
47+
return type;
4848
}
4949

5050
@Override
@@ -65,8 +65,8 @@ public void serializeMembers(ShapeSerializer serializer) {}
6565

6666
@Override
6767
@SuppressWarnings("unchecked")
68-
public <T> T getValue() {
69-
return (T) memberName;
68+
public String getValue() {
69+
return memberName;
7070
}
7171

7272
private record $Hidden() implements UnionWithTypeMember {

codegen/plugins/types-codegen/src/test/resources/software/amazon/smithy/java/codegen/types/test-cases/union-type/expected/UnionType.java

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ public void serializeMembers(ShapeSerializer serializer) {
5151

5252
@Override
5353
@SuppressWarnings("unchecked")
54-
public <T> T getValue() {
55-
return (T) blobValue;
54+
public ByteBuffer getValue() {
55+
return blobValue;
5656
}
5757

5858
@Override
@@ -72,8 +72,8 @@ public void serializeMembers(ShapeSerializer serializer) {
7272

7373
@Override
7474
@SuppressWarnings("unchecked")
75-
public <T> T getValue() {
76-
return (T)(Boolean) booleanValue;
75+
public Boolean getValue() {
76+
return booleanValue;
7777
}
7878

7979
@Override
@@ -96,8 +96,8 @@ public void serializeMembers(ShapeSerializer serializer) {
9696

9797
@Override
9898
@SuppressWarnings("unchecked")
99-
public <T> T getValue() {
100-
return (T) listValue;
99+
public List<String> getValue() {
100+
return listValue;
101101
}
102102

103103
@Override
@@ -120,8 +120,8 @@ public void serializeMembers(ShapeSerializer serializer) {
120120

121121
@Override
122122
@SuppressWarnings("unchecked")
123-
public <T> T getValue() {
124-
return (T) mapValue;
123+
public Map<String, String> getValue() {
124+
return mapValue;
125125
}
126126

127127
@Override
@@ -144,8 +144,8 @@ public void serializeMembers(ShapeSerializer serializer) {
144144

145145
@Override
146146
@SuppressWarnings("unchecked")
147-
public <T> T getValue() {
148-
return (T) bigDecimalValue;
147+
public BigDecimal getValue() {
148+
return bigDecimalValue;
149149
}
150150

151151
@Override
@@ -168,8 +168,8 @@ public void serializeMembers(ShapeSerializer serializer) {
168168

169169
@Override
170170
@SuppressWarnings("unchecked")
171-
public <T> T getValue() {
172-
return (T) bigIntegerValue;
171+
public BigInteger getValue() {
172+
return bigIntegerValue;
173173
}
174174

175175
@Override
@@ -189,8 +189,8 @@ public void serializeMembers(ShapeSerializer serializer) {
189189

190190
@Override
191191
@SuppressWarnings("unchecked")
192-
public <T> T getValue() {
193-
return (T)(Byte) byteValue;
192+
public Byte getValue() {
193+
return byteValue;
194194
}
195195

196196
@Override
@@ -210,8 +210,8 @@ public void serializeMembers(ShapeSerializer serializer) {
210210

211211
@Override
212212
@SuppressWarnings("unchecked")
213-
public <T> T getValue() {
214-
return (T)(Double) doubleValue;
213+
public Double getValue() {
214+
return doubleValue;
215215
}
216216

217217
@Override
@@ -231,8 +231,8 @@ public void serializeMembers(ShapeSerializer serializer) {
231231

232232
@Override
233233
@SuppressWarnings("unchecked")
234-
public <T> T getValue() {
235-
return (T)(Float) floatValue;
234+
public Float getValue() {
235+
return floatValue;
236236
}
237237

238238
@Override
@@ -252,8 +252,8 @@ public void serializeMembers(ShapeSerializer serializer) {
252252

253253
@Override
254254
@SuppressWarnings("unchecked")
255-
public <T> T getValue() {
256-
return (T)(Integer) integerValue;
255+
public Integer getValue() {
256+
return integerValue;
257257
}
258258

259259
@Override
@@ -273,8 +273,8 @@ public void serializeMembers(ShapeSerializer serializer) {
273273

274274
@Override
275275
@SuppressWarnings("unchecked")
276-
public <T> T getValue() {
277-
return (T)(Long) longValue;
276+
public Long getValue() {
277+
return longValue;
278278
}
279279

280280
@Override
@@ -294,8 +294,8 @@ public void serializeMembers(ShapeSerializer serializer) {
294294

295295
@Override
296296
@SuppressWarnings("unchecked")
297-
public <T> T getValue() {
298-
return (T)(Short) shortValue;
297+
public Short getValue() {
298+
return shortValue;
299299
}
300300

301301
@Override
@@ -318,8 +318,8 @@ public void serializeMembers(ShapeSerializer serializer) {
318318

319319
@Override
320320
@SuppressWarnings("unchecked")
321-
public <T> T getValue() {
322-
return (T) stringValue;
321+
public String getValue() {
322+
return stringValue;
323323
}
324324

325325
@Override
@@ -342,8 +342,8 @@ public void serializeMembers(ShapeSerializer serializer) {
342342

343343
@Override
344344
@SuppressWarnings("unchecked")
345-
public <T> T getValue() {
346-
return (T) structureValue;
345+
public NestedStruct getValue() {
346+
return structureValue;
347347
}
348348

349349
@Override
@@ -366,8 +366,8 @@ public void serializeMembers(ShapeSerializer serializer) {
366366

367367
@Override
368368
@SuppressWarnings("unchecked")
369-
public <T> T getValue() {
370-
return (T) timestampValue;
369+
public Instant getValue() {
370+
return timestampValue;
371371
}
372372

373373
@Override
@@ -390,8 +390,8 @@ public void serializeMembers(ShapeSerializer serializer) {
390390

391391
@Override
392392
@SuppressWarnings("unchecked")
393-
public <T> T getValue() {
394-
return (T) unionValue;
393+
public NestedUnion getValue() {
394+
return unionValue;
395395
}
396396

397397
@Override
@@ -414,8 +414,8 @@ public void serializeMembers(ShapeSerializer serializer) {
414414

415415
@Override
416416
@SuppressWarnings("unchecked")
417-
public <T> T getValue() {
418-
return (T) enumValue;
417+
public NestedEnum getValue() {
418+
return enumValue;
419419
}
420420

421421
@Override
@@ -438,8 +438,8 @@ public void serializeMembers(ShapeSerializer serializer) {
438438

439439
@Override
440440
@SuppressWarnings("unchecked")
441-
public <T> T getValue() {
442-
return (T) intEnumValue;
441+
public NestedIntEnum getValue() {
442+
return intEnumValue;
443443
}
444444

445445
@Override
@@ -459,8 +459,8 @@ public void serializeMembers(ShapeSerializer serializer) {
459459

460460
@Override
461461
@SuppressWarnings("unchecked")
462-
public <T> T getValue() {
463-
return (T) null;
462+
public Unit getValue() {
463+
return null;
464464
}
465465

466466
@Override
@@ -481,8 +481,8 @@ public void serializeMembers(ShapeSerializer serializer) {}
481481

482482
@Override
483483
@SuppressWarnings("unchecked")
484-
public <T> T getValue() {
485-
return (T) memberName;
484+
public String getValue() {
485+
return memberName;
486486
}
487487

488488
private record $Hidden() implements UnionType {

0 commit comments

Comments
 (0)