From 88e9fecfa6961ca60c5d6d4295ff2f6b7434145f Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 22 Jan 2023 11:21:02 +1100 Subject: [PATCH] Fix bug where NullValue is nested inside ObjectValue --- src/main/java/graphql/scalars/object/ObjectScalar.java | 8 ++++++-- .../groovy/graphql/scalars/object/ObjectScalarTest.groovy | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/graphql/scalars/object/ObjectScalar.java b/src/main/java/graphql/scalars/object/ObjectScalar.java index 829eb5f..ff92d31 100644 --- a/src/main/java/graphql/scalars/object/ObjectScalar.java +++ b/src/main/java/graphql/scalars/object/ObjectScalar.java @@ -54,7 +54,6 @@ public Object parseValue(Object input) throws CoercingParseValueException { @Override public Object parseLiteral(Object input) throws CoercingParseLiteralException { // on purpose - object scalars can be null - //noinspection ConstantConditions return parseLiteral(input, Collections.emptyMap()); } @@ -94,7 +93,12 @@ public Object parseLiteral(Object input, Map variables) throws C List values = ((ObjectValue) input).getObjectFields(); Map parsedValues = new LinkedHashMap<>(); values.forEach(fld -> { - Object parsedValue = parseLiteral(fld.getValue(), variables); + Object parsedValue; + if (fld.getValue() instanceof NullValue) { // Nested NullValue inside ObjectValue + parsedValue = null; + } else { + parsedValue = parseLiteral(fld.getValue(), variables); + } parsedValues.put(fld.getName(), parsedValue); }); return parsedValues; diff --git a/src/test/groovy/graphql/scalars/object/ObjectScalarTest.groovy b/src/test/groovy/graphql/scalars/object/ObjectScalarTest.groovy index 056abe1..ca02f91 100644 --- a/src/test/groovy/graphql/scalars/object/ObjectScalarTest.groovy +++ b/src/test/groovy/graphql/scalars/object/ObjectScalarTest.groovy @@ -60,6 +60,10 @@ class ObjectScalarTest extends Specification { childFl2 : mkVarRef("varRef1") ] as Map) ] as Map) | [fld1: "s", fld2: 99, fld3: [childFld1: "child1", childFl2: "value1"]] + + mkObjectValue([ + field1: mkNullValue() + ] as Map) | [field1: null] // Nested NullValue inside ObjectValue } @Unroll