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