From ce147ee72c14ae8909698daf4c2ea05ce9d38839 Mon Sep 17 00:00:00 2001 From: box-sdk-build Date: Wed, 22 Apr 2026 08:20:24 -0700 Subject: [PATCH 1/2] chore: Update `.codegen.json` with commit hash of `codegen` and `openapi` spec [skip ci] --- .codegen.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.codegen.json b/.codegen.json index 7d9d03d08..15f71d59b 100644 --- a/.codegen.json +++ b/.codegen.json @@ -1 +1 @@ -{ "engineHash": "450fb53", "specHash": "d0976fc", "version": "10.9.0" } +{ "engineHash": "ae9c271", "specHash": "d0976fc", "version": "10.9.0" } From 2d2a4a6305029a2d03853eec72d8bc94dbe36aa1 Mon Sep 17 00:00:00 2001 From: box-sdk-build Date: Fri, 24 Apr 2026 09:50:49 -0700 Subject: [PATCH 2/2] fix: Fix java oneOf serialization (box/box-codegen#942) --- .codegen.json | 2 +- .../internal/NullablePropertyFilter.java | 5 +-- .../com/box/sdkgen/internal/OneOfEight.java | 24 +++++++++++++- .../com/box/sdkgen/internal/OneOfEleven.java | 30 +++++++++++++++++- .../com/box/sdkgen/internal/OneOfFive.java | 13 +++++++- .../com/box/sdkgen/internal/OneOfFour.java | 12 ++++++- .../com/box/sdkgen/internal/OneOfNine.java | 26 +++++++++++++++- .../com/box/sdkgen/internal/OneOfOne.java | 9 +++++- .../com/box/sdkgen/internal/OneOfSeven.java | 22 ++++++++++++- .../com/box/sdkgen/internal/OneOfSix.java | 19 +++++++++++- .../com/box/sdkgen/internal/OneOfTen.java | 28 ++++++++++++++++- .../com/box/sdkgen/internal/OneOfThree.java | 11 ++++++- .../com/box/sdkgen/internal/OneOfTwelve.java | 31 ++++++++++++++++++- .../com/box/sdkgen/internal/OneOfTwo.java | 10 +++++- .../com/box/sdkgen/internal/OneOfUnion.java | 7 +++++ 15 files changed, 234 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/box/sdkgen/internal/OneOfUnion.java diff --git a/.codegen.json b/.codegen.json index 15f71d59b..d0b124df6 100644 --- a/.codegen.json +++ b/.codegen.json @@ -1 +1 @@ -{ "engineHash": "ae9c271", "specHash": "d0976fc", "version": "10.9.0" } +{ "engineHash": "a82031b", "specHash": "d0976fc", "version": "10.9.0" } diff --git a/src/main/java/com/box/sdkgen/internal/NullablePropertyFilter.java b/src/main/java/com/box/sdkgen/internal/NullablePropertyFilter.java index 5353ba292..40503a0bd 100644 --- a/src/main/java/com/box/sdkgen/internal/NullablePropertyFilter.java +++ b/src/main/java/com/box/sdkgen/internal/NullablePropertyFilter.java @@ -30,8 +30,9 @@ public void serializeAsField( return; } - // For non-nullable fields, serialize only if the value is not null - if (value != null) { + boolean isOneOfWithNoNonNullValue = + value instanceof OneOfUnion && !((OneOfUnion) value).hasAnyNonNullValue(); + if (value != null && !isOneOfWithNoNonNullValue) { writer.serializeAsField(pojo, jgen, provider); } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfEight.java b/src/main/java/com/box/sdkgen/internal/OneOfEight.java index a20e86ec1..c7169965b 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfEight.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfEight.java @@ -7,7 +7,8 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfEight extends SerializableObject { +public class OneOfEight extends SerializableObject + implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -30,6 +31,18 @@ public OneOfEight( this.value7 = value7; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null + || value1 != null + || value2 != null + || value3 != null + || value4 != null + || value5 != null + || value6 != null + || value7 != null; + } + public static class OneOfEightSerializer extends JsonSerializer> { @@ -45,28 +58,37 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } if (itemEntryField.value4 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value4); + return; } if (itemEntryField.value5 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value5); + return; } if (itemEntryField.value6 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value6); + return; } if (itemEntryField.value7 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value7); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfEleven.java b/src/main/java/com/box/sdkgen/internal/OneOfEleven.java index 5b5485d24..8c7ecb077 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfEleven.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfEleven.java @@ -7,7 +7,8 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfEleven extends SerializableObject { +public class OneOfEleven extends SerializableObject + implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -46,6 +47,21 @@ public OneOfEleven( this.value10 = value10; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null + || value1 != null + || value2 != null + || value3 != null + || value4 != null + || value5 != null + || value6 != null + || value7 != null + || value8 != null + || value9 != null + || value10 != null; + } + public static class OneOfElevenSerializer extends JsonSerializer> { @@ -61,37 +77,49 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } if (itemEntryField.value4 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value4); + return; } if (itemEntryField.value5 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value5); + return; } if (itemEntryField.value6 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value6); + return; } if (itemEntryField.value7 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value7); + return; } if (itemEntryField.value8 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value8); + return; } if (itemEntryField.value9 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value9); + return; } if (itemEntryField.value10 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value10); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfFive.java b/src/main/java/com/box/sdkgen/internal/OneOfFive.java index bc8a13927..0f762ae97 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfFive.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfFive.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfFive extends SerializableObject { +public class OneOfFive extends SerializableObject implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -23,6 +23,11 @@ public OneOfFive(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4) { this.value4 = value4; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null || value1 != null || value2 != null || value3 != null || value4 != null; + } + public static class OneOfFiveSerializer extends JsonSerializer> { public OneOfFiveSerializer() { @@ -35,19 +40,25 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } if (itemEntryField.value4 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value4); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfFour.java b/src/main/java/com/box/sdkgen/internal/OneOfFour.java index ee86354c8..32383289a 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfFour.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfFour.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfFour extends SerializableObject { +public class OneOfFour extends SerializableObject implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -21,6 +21,11 @@ public OneOfFour(T0 value0, T1 value1, T2 value2, T3 value3) { this.value3 = value3; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null || value1 != null || value2 != null || value3 != null; + } + public static class OneOfFourSerializer extends JsonSerializer> { public OneOfFourSerializer() { @@ -33,16 +38,21 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfNine.java b/src/main/java/com/box/sdkgen/internal/OneOfNine.java index 6da57f0bc..42bc824ca 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfNine.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfNine.java @@ -7,7 +7,8 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfNine extends SerializableObject { +public class OneOfNine extends SerializableObject + implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -40,6 +41,19 @@ public OneOfNine( this.value8 = value8; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null + || value1 != null + || value2 != null + || value3 != null + || value4 != null + || value5 != null + || value6 != null + || value7 != null + || value8 != null; + } + public static class OneOfNineSerializer extends JsonSerializer> { @@ -55,31 +69,41 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } if (itemEntryField.value4 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value4); + return; } if (itemEntryField.value5 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value5); + return; } if (itemEntryField.value6 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value6); + return; } if (itemEntryField.value7 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value7); + return; } if (itemEntryField.value8 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value8); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfOne.java b/src/main/java/com/box/sdkgen/internal/OneOfOne.java index 67b073885..cf9761160 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfOne.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfOne.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfOne extends SerializableObject { +public class OneOfOne extends SerializableObject implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; @@ -15,6 +15,11 @@ public OneOfOne(T0 value0) { this.value0 = value0; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null; + } + public static class OneOfOneSerializer extends JsonSerializer> { public OneOfOneSerializer() { @@ -27,7 +32,9 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfSeven.java b/src/main/java/com/box/sdkgen/internal/OneOfSeven.java index e07226eba..7687bb956 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfSeven.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfSeven.java @@ -7,7 +7,8 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfSeven extends SerializableObject { +public class OneOfSeven extends SerializableObject + implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -27,6 +28,17 @@ public OneOfSeven(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 valu this.value6 = value6; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null + || value1 != null + || value2 != null + || value3 != null + || value4 != null + || value5 != null + || value6 != null; + } + public static class OneOfSevenSerializer extends JsonSerializer> { public OneOfSevenSerializer() { @@ -41,25 +53,33 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } if (itemEntryField.value4 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value4); + return; } if (itemEntryField.value5 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value5); + return; } if (itemEntryField.value6 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value6); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfSix.java b/src/main/java/com/box/sdkgen/internal/OneOfSix.java index d3ed9a566..c473544bd 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfSix.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfSix.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfSix extends SerializableObject { +public class OneOfSix extends SerializableObject implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -25,6 +25,16 @@ public OneOfSix(T0 value0, T1 value1, T2 value2, T3 value3, T4 value4, T5 value5 this.value5 = value5; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null + || value1 != null + || value2 != null + || value3 != null + || value4 != null + || value5 != null; + } + public static class OneOfSixSerializer extends JsonSerializer> { public OneOfSixSerializer() { @@ -37,22 +47,29 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } if (itemEntryField.value4 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value4); + return; } if (itemEntryField.value5 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value5); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfTen.java b/src/main/java/com/box/sdkgen/internal/OneOfTen.java index 6af089e2a..2738670f7 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfTen.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfTen.java @@ -7,7 +7,8 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfTen extends SerializableObject { +public class OneOfTen extends SerializableObject + implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -43,6 +44,20 @@ public OneOfTen( this.value9 = value9; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null + || value1 != null + || value2 != null + || value3 != null + || value4 != null + || value5 != null + || value6 != null + || value7 != null + || value8 != null + || value9 != null; + } + public static class OneOfTenSerializer extends JsonSerializer> { @@ -58,34 +73,45 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } if (itemEntryField.value4 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value4); + return; } if (itemEntryField.value5 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value5); + return; } if (itemEntryField.value6 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value6); + return; } if (itemEntryField.value7 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value7); + return; } if (itemEntryField.value8 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value8); + return; } if (itemEntryField.value9 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value9); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfThree.java b/src/main/java/com/box/sdkgen/internal/OneOfThree.java index 9319155d8..5f9e900af 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfThree.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfThree.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfThree extends SerializableObject { +public class OneOfThree extends SerializableObject implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -19,6 +19,11 @@ public OneOfThree(T0 value0, T1 value1, T2 value2) { this.value2 = value2; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null || value1 != null || value2 != null; + } + public static class OneOfThreeSerializer extends JsonSerializer> { public OneOfThreeSerializer() { @@ -31,13 +36,17 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfTwelve.java b/src/main/java/com/box/sdkgen/internal/OneOfTwelve.java index a411e9cc6..13de4e1a7 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfTwelve.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfTwelve.java @@ -8,7 +8,7 @@ import java.io.IOException; public class OneOfTwelve - extends SerializableObject { + extends SerializableObject implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -50,6 +50,22 @@ public OneOfTwelve( this.value11 = value11; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null + || value1 != null + || value2 != null + || value3 != null + || value4 != null + || value5 != null + || value6 != null + || value7 != null + || value8 != null + || value9 != null + || value10 != null + || value11 != null; + } + public static class OneOfTwelveSerializer extends JsonSerializer> { @@ -65,40 +81,53 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } if (itemEntryField.value2 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value2); + return; } if (itemEntryField.value3 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value3); + return; } if (itemEntryField.value4 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value4); + return; } if (itemEntryField.value5 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value5); + return; } if (itemEntryField.value6 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value6); + return; } if (itemEntryField.value7 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value7); + return; } if (itemEntryField.value8 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value8); + return; } if (itemEntryField.value9 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value9); + return; } if (itemEntryField.value10 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value10); + return; } if (itemEntryField.value11 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value11); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfTwo.java b/src/main/java/com/box/sdkgen/internal/OneOfTwo.java index 6058a4f59..94d226185 100644 --- a/src/main/java/com/box/sdkgen/internal/OneOfTwo.java +++ b/src/main/java/com/box/sdkgen/internal/OneOfTwo.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; -public class OneOfTwo extends SerializableObject { +public class OneOfTwo extends SerializableObject implements OneOfUnion { protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); protected T0 value0; protected T1 value1; @@ -17,6 +17,11 @@ public OneOfTwo(T0 value0, T1 value1) { this.value1 = value1; } + @Override + public boolean hasAnyNonNullValue() { + return value0 != null || value1 != null; + } + public static class OneOfTwoSerializer extends JsonSerializer> { public OneOfTwoSerializer() { @@ -29,10 +34,13 @@ public void serialize( throws IOException { if (itemEntryField.value0 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value0); + return; } if (itemEntryField.value1 != null) { JsonManager.WRITER.writeValue(gen, itemEntryField.value1); + return; } + gen.writeNull(); } } } diff --git a/src/main/java/com/box/sdkgen/internal/OneOfUnion.java b/src/main/java/com/box/sdkgen/internal/OneOfUnion.java new file mode 100644 index 000000000..59c4dd4b0 --- /dev/null +++ b/src/main/java/com/box/sdkgen/internal/OneOfUnion.java @@ -0,0 +1,7 @@ +package com.box.sdkgen.internal; + +public interface OneOfUnion { + + /** @return {@code true} if at least one branch holds a non-null value */ + boolean hasAnyNonNullValue(); +}