From a94a013c042b959aec6b821b13e10760d37726d5 Mon Sep 17 00:00:00 2001 From: William Armiros <54150514+willarmiros@users.noreply.github.com> Date: Wed, 4 Aug 2021 17:46:33 -0700 Subject: [PATCH] disable fail on empty beans serializer (#293) Co-authored-by: Anuraag Agrawal --- .../java/com/amazonaws/xray/entities/EntityImpl.java | 2 ++ .../java/com/amazonaws/xray/entities/EntityTest.java | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/entities/EntityImpl.java b/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/entities/EntityImpl.java index f7752c80..0725b648 100644 --- a/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/entities/EntityImpl.java +++ b/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/entities/EntityImpl.java @@ -28,6 +28,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.SerializationConfig; +import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.node.NullNode; @@ -58,6 +59,7 @@ public abstract class EntityImpl implements Entity { @Deprecated protected static final ObjectMapper mapper = new ObjectMapper() .findAndRegisterModules() + .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false) .setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES) .setSerializationInclusion(JsonInclude.Include.NON_EMPTY); diff --git a/aws-xray-recorder-sdk-core/src/test/java/com/amazonaws/xray/entities/EntityTest.java b/aws-xray-recorder-sdk-core/src/test/java/com/amazonaws/xray/entities/EntityTest.java index 6a0d4edf..b7d8267c 100644 --- a/aws-xray-recorder-sdk-core/src/test/java/com/amazonaws/xray/entities/EntityTest.java +++ b/aws-xray-recorder-sdk-core/src/test/java/com/amazonaws/xray/entities/EntityTest.java @@ -67,4 +67,16 @@ void testDateSerialization() { String expected = "{\"default\":{\"date\":1616559298000}}"; assertThat(serializedSeg).contains(expected); } + + @Test + void testUnknownClassSerialization() { + Segment seg = new SegmentImpl(AWSXRay.getGlobalRecorder(), "test"); + seg.putAws("coolService", new EmptyBean()); + seg.end(); + seg.serialize(); // Verify we don't crash here + } + + static class EmptyBean { + String otherField = "cerealization"; + } }