From 8d846ae264d580c9709c0838269eb3e238494ebd Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Fri, 11 Jan 2019 19:58:51 -0800 Subject: [PATCH] Fix #2223 --- release-notes/VERSION-2.x | 1 + .../jackson/databind/node/ContainerNode.java | 25 +++++++++++++------ .../databind/node/JsonNodeCreator.java | 3 +++ .../databind/node/JsonNodeFactory.java | 5 ++++ .../databind/node/JsonNodeFactoryTest.java | 2 ++ 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index 59682eb485..7c96433bfb 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -21,6 +21,7 @@ Project: jackson-databind #2204: Add `JsonNode.isEmpty()` as convenience alias #2217: Suboptimal memory allocation in `TextNode.getBinaryValue()` (reported by Christoph B) +#2223: Add `missingNode()` method in `JsonNodeFactory` 2.9.8 (15-Dec-2018) diff --git a/src/main/java/com/fasterxml/jackson/databind/node/ContainerNode.java b/src/main/java/com/fasterxml/jackson/databind/node/ContainerNode.java index fcfb23a888..d64346da96 100644 --- a/src/main/java/com/fasterxml/jackson/databind/node/ContainerNode.java +++ b/src/main/java/com/fasterxml/jackson/databind/node/ContainerNode.java @@ -52,11 +52,26 @@ protected ContainerNode(JsonNodeFactory nc) { /* /********************************************************** - /* JsonNodeCreator implementation, just dispatch to - /* the real creator + /* JsonNodeCreator implementation, Enumerated/singleton types /********************************************************** */ + @Override + public final BooleanNode booleanNode(boolean v) { return _nodeFactory.booleanNode(v); } + + public JsonNode missingNode() { + return _nodeFactory.missingNode(); + } + + @Override + public final NullNode nullNode() { return _nodeFactory.nullNode(); } + + /* + /********************************************************** + /* JsonNodeCreator implementation, just dispatch to real creator + /********************************************************** + */ + /** * Factory method that constructs and returns an empty {@link ArrayNode} * Construction is done using registered {@link JsonNodeFactory}. @@ -79,12 +94,6 @@ protected ContainerNode(JsonNodeFactory nc) { @Override public final ObjectNode objectNode() { return _nodeFactory.objectNode(); } - @Override - public final NullNode nullNode() { return _nodeFactory.nullNode(); } - - @Override - public final BooleanNode booleanNode(boolean v) { return _nodeFactory.booleanNode(v); } - @Override public final NumericNode numberNode(byte v) { return _nodeFactory.numberNode(v); } @Override diff --git a/src/main/java/com/fasterxml/jackson/databind/node/JsonNodeCreator.java b/src/main/java/com/fasterxml/jackson/databind/node/JsonNodeCreator.java index 55c880f624..1334786af4 100644 --- a/src/main/java/com/fasterxml/jackson/databind/node/JsonNodeCreator.java +++ b/src/main/java/com/fasterxml/jackson/databind/node/JsonNodeCreator.java @@ -19,6 +19,9 @@ public interface JsonNodeCreator public ValueNode booleanNode(boolean v); public ValueNode nullNode(); +// Not yet in 2.10, will be added in 3.0 +// public JsonNode missingNode(); + // Numeric types public ValueNode numberNode(byte v); diff --git a/src/main/java/com/fasterxml/jackson/databind/node/JsonNodeFactory.java b/src/main/java/com/fasterxml/jackson/databind/node/JsonNodeFactory.java index e933bc8327..a924842915 100644 --- a/src/main/java/com/fasterxml/jackson/databind/node/JsonNodeFactory.java +++ b/src/main/java/com/fasterxml/jackson/databind/node/JsonNodeFactory.java @@ -3,6 +3,7 @@ import java.math.BigDecimal; import java.math.BigInteger; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.util.RawValue; /** @@ -108,6 +109,10 @@ public BooleanNode booleanNode(boolean v) { @Override public NullNode nullNode() { return NullNode.getInstance(); } + public JsonNode missingNode() { + return MissingNode.getInstance(); + } + /* /********************************************************** /* Factory methods for numeric values diff --git a/src/test/java/com/fasterxml/jackson/databind/node/JsonNodeFactoryTest.java b/src/test/java/com/fasterxml/jackson/databind/node/JsonNodeFactoryTest.java index 3a646b4d48..e01cf18575 100644 --- a/src/test/java/com/fasterxml/jackson/databind/node/JsonNodeFactoryTest.java +++ b/src/test/java/com/fasterxml/jackson/databind/node/JsonNodeFactoryTest.java @@ -33,5 +33,7 @@ public void testSimpleCreation() assertTrue(f.numberNode((BigDecimal) null).isNull()); assertTrue(f.numberNode((BigInteger) null).isNull()); + + assertTrue(f.missingNode().isMissingNode()); } }