From 51d33382be46eb5a4397c03274bd89bd4d9053c4 Mon Sep 17 00:00:00 2001 From: Eduardo Ramirez Date: Tue, 6 Aug 2024 12:25:00 -0700 Subject: [PATCH] chore: if the bool field is null set the inlined boolean as null (#687) --- .../core/write/objectmapper/HollowObjectTypeMapper.java | 4 +++- .../HollowObjectMapperHollowRecordParserTest.java | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/hollow/src/main/java/com/netflix/hollow/core/write/objectmapper/HollowObjectTypeMapper.java b/hollow/src/main/java/com/netflix/hollow/core/write/objectmapper/HollowObjectTypeMapper.java index 03f14aeb83..d59ab2401a 100644 --- a/hollow/src/main/java/com/netflix/hollow/core/write/objectmapper/HollowObjectTypeMapper.java +++ b/hollow/src/main/java/com/netflix/hollow/core/write/objectmapper/HollowObjectTypeMapper.java @@ -631,7 +631,9 @@ public void copy(GenericHollowObject rec, Object pojo) { unsafe.putObject(pojo, fieldOffset, rec.getBytes(fieldName)); break; case INLINED_BOOLEAN: - unsafe.putObject(pojo, fieldOffset, Boolean.valueOf(rec.getBoolean(fieldName))); + if (!rec.isNull(fieldName)) { + unsafe.putObject(pojo, fieldOffset, Boolean.valueOf(rec.getBoolean(fieldName))); + } break; case INLINED_INT: int inlinedIntValue = rec.getInt(fieldName); diff --git a/hollow/src/test/java/com/netflix/hollow/core/write/objectmapper/HollowObjectMapperHollowRecordParserTest.java b/hollow/src/test/java/com/netflix/hollow/core/write/objectmapper/HollowObjectMapperHollowRecordParserTest.java index 2fb0a46f39..c364716cd3 100644 --- a/hollow/src/test/java/com/netflix/hollow/core/write/objectmapper/HollowObjectMapperHollowRecordParserTest.java +++ b/hollow/src/test/java/com/netflix/hollow/core/write/objectmapper/HollowObjectMapperHollowRecordParserTest.java @@ -131,18 +131,20 @@ public void testNullablesSimpleTypes() { TypeWithAllSimpleTypes result = mapper.readHollowRecord(obj); Assert.assertEquals(Integer.valueOf(1), result.boxedIntegerField); Assert.assertEquals(Character.valueOf('a'), result.boxedCharField); - Assert.assertNull(result.boxedFloatField); + Assert.assertNull(result.boxedBooleanField); Assert.assertNull(result.boxedDoubleField); + Assert.assertNull(result.boxedFloatField); Assert.assertNull(result.boxedLongField); Assert.assertNull(result.boxedShortField); Assert.assertNull(result.boxedByteField); Assert.assertEquals(0, result.primitiveIntegerField); + Assert.assertFalse(result.primitiveBooleanField); Assert.assertEquals(0.0, result.primitiveDoubleField, 0); Assert.assertEquals(0.0f, result.primitiveFloatField, 0); Assert.assertEquals(0L, result.primitiveLongField); Assert.assertEquals(0, result.primitiveShortField); Assert.assertEquals(0, result.primitiveByteField); - Assert.assertEquals(false, result.inlinedBooleanField); + Assert.assertNull(result.inlinedBooleanField); Assert.assertEquals(Long.valueOf(4L), result.inlinedLongField); Assert.assertNull(result.inlinedIntegerField); Assert.assertNull(result.inlinedDoubleField);