Skip to content

Commit 5a7cb83

Browse files
authored
Fixed a bug where json writer fails if a number is null (#5397)
1 parent 0656aa1 commit 5a7cb83

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

services-custom/s3-event-notifications/src/main/java/software/amazon/awssdk/eventnotifications/s3/internal/DefaultS3EventNotificationWriter.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,11 @@ private void writeStringField(JsonWriter writer, String field, String value) {
268268

269269
private void writeNumericField(JsonWriter writer, String field, Long value) {
270270
writer.writeFieldName(field);
271-
writer.writeNumber(value.toString());
271+
if (value == null) {
272+
writer.writeNull();
273+
} else {
274+
writer.writeNumber(value.toString());
275+
}
272276
}
273277

274278
@Override

services-custom/s3-event-notifications/src/test/java/software/amazon/awssdk/eventnotifications/s3/model/S3EventNotificationWriterTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,4 +344,33 @@ void nullRecordValue() {
344344
+ "\"responseElements\":null,"
345345
+ "\"s3\":null}]}");
346346
}
347+
348+
@Test
349+
void nullableNumberFieldsHandledCorrectly() {
350+
String expected = "{\"Records\":[{\"eventVersion\":null,\"eventSource\":null,\"awsRegion\":null,"
351+
+ "\"eventTime\":null,\"eventName\":null,\"userIdentity\":null,"
352+
+ "\"requestParameters\":null,\"responseElements\":null,"
353+
+ "\"s3\":{\"s3SchemaVersion\":\"1.0\",\"configurationId\":\"testConfigRule\",\"bucket\":null,"
354+
+ "\"object\":{\"key\":\"HappyFace-test.jpg\",\"size\":null,"
355+
+ "\"eTag\":\"d41d8cd98f00b204e9800998ecf8etag\",\"versionId\":\"096fKKXTRTtl3on89fVO.nfljtsv6vid\","
356+
+ "\"sequencer\":null}}}]}";
357+
358+
S3EventNotification event = new S3EventNotification(Collections.singletonList(
359+
new S3EventNotificationRecord(null, null, null, null, null, null, null,
360+
new S3(
361+
"testConfigRule",
362+
null,
363+
new S3Object(
364+
"HappyFace-test.jpg",
365+
null,
366+
"d41d8cd98f00b204e9800998ecf8etag",
367+
"096fKKXTRTtl3on89fVO.nfljtsv6vid",
368+
null),
369+
"1.0"
370+
),
371+
null)));
372+
373+
assertThat(event.toJson()).isEqualTo(expected);
374+
}
375+
347376
}

0 commit comments

Comments
 (0)