Skip to content

Commit 644b5ce

Browse files
committed
Fix #2204
1 parent 8ec1e5e commit 644b5ce

11 files changed

Lines changed: 45 additions & 8 deletions

File tree

release-notes/VERSION-2.x

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Project: jackson-databind
1616
#2126: `DeserializationContext.instantiationException()` throws `InvalidDefinitionException`
1717
#2153: Add `JsonMapper` to replace generic `ObjectMapper` usage
1818
#2187: Make `JsonNode.toString()` use shared `ObjectMapper` to produce valid json
19+
#2204: Add `JsonNode.isEmpty()` as convenience alias
1920

2021
2.9.8 (not yet released)
2122

src/main/java/com/fasterxml/jackson/databind/JsonNode.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,17 @@ protected JsonNode() { }
8181
@Override
8282
public int size() { return 0; }
8383

84+
/**
85+
* Convenience method that is functionally same as:
86+
*<pre>
87+
* size() == 0
88+
*<pre>
89+
* for all node types.
90+
*
91+
* @since 2.10
92+
*/
93+
public boolean isEmpty() { return size() == 0; }
94+
8495
@Override
8596
public final boolean isValueNode()
8697
{

src/main/java/com/fasterxml/jackson/databind/node/ArrayNode.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,17 @@ public int size() {
9999
return _children.size();
100100
}
101101

102+
@Override // since 2.10
103+
public boolean isEmpty() { return _children.isEmpty(); }
104+
102105
@Override
103106
public Iterator<JsonNode> elements() {
104107
return _children.iterator();
105108
}
106109

107110
@Override
108111
public JsonNode get(int index) {
109-
if (index >= 0 && index < _children.size()) {
112+
if ((index >= 0) && (index < _children.size())) {
110113
return _children.get(index);
111114
}
112115
return null;

src/main/java/com/fasterxml/jackson/databind/node/BaseJsonNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,12 @@ public abstract void serializeWithType(JsonGenerator jgen, SerializerProvider pr
105105
*/
106106

107107
@Override
108-
public final String toString() {
108+
public String toString() {
109109
return InternalNodeMapper.nodeToString(this);
110110
}
111111

112112
@Override
113-
public final String toPrettyString() {
113+
public String toPrettyString() {
114114
return InternalNodeMapper.nodeToPrettyString(this);
115115
}
116116
}

src/main/java/com/fasterxml/jackson/databind/node/ObjectNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ public int size() {
9090
return _children.size();
9191
}
9292

93+
@Override // since 2.10
94+
public boolean isEmpty() { return _children.isEmpty(); }
95+
9396
@Override
9497
public Iterator<JsonNode> elements() {
9598
return _children.values().iterator();

src/main/java/com/fasterxml/jackson/databind/node/ValueNode.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,18 @@ public void serializeWithType(JsonGenerator g, SerializerProvider provider,
4848
}
4949

5050
/*
51-
**********************************************************************
52-
* Navigation methods
53-
**********************************************************************
51+
/**********************************************************************
52+
/* Basic property access
53+
/**********************************************************************
54+
*/
55+
56+
@Override
57+
public boolean isEmpty() { return true; }
58+
59+
/*
60+
/**********************************************************************
61+
/* Navigation methods
62+
/**********************************************************************
5463
*/
5564

5665
@Override

src/test/java/com/fasterxml/jackson/databind/node/ArrayNodeTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ public void testDirectCreation() throws IOException
2525
assertStandardEquals(n);
2626
assertFalse(n.elements().hasNext());
2727
assertFalse(n.fieldNames().hasNext());
28+
assertTrue(n.isEmpty());
2829
TextNode text = TextNode.valueOf("x");
2930
n.add(text);
3031
assertEquals(1, n.size());
32+
assertFalse(n.isEmpty());
3133
assertFalse(0 == n.hashCode());
3234
assertTrue(n.elements().hasNext());
3335
// no field names for arrays
@@ -149,6 +151,7 @@ public void testAdds()
149151
n.add(new BigDecimal("0.2"));
150152
n.add(BigInteger.TEN);
151153
assertEquals(9, n.size());
154+
assertFalse(n.isEmpty());
152155

153156
assertNotNull(n.insertArray(0));
154157
assertNotNull(n.insertObject(0));

src/test/java/com/fasterxml/jackson/databind/node/NodeTestBase.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ protected void assertNodeNumbers(JsonNode n, int expInt, double expDouble)
2525
assertEquals((long) expInt, n.asLong(19L));
2626
assertEquals(expDouble, n.asDouble());
2727
assertEquals(expDouble, n.asDouble(-19.25));
28-
}
2928

29+
assertTrue(n.isEmpty());
30+
}
3031
}

src/test/java/com/fasterxml/jackson/databind/node/ObjectNodeTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public void testSimpleObject() throws Exception
8181
assertFalse(root.isArray());
8282
assertTrue(root.isObject());
8383
assertEquals(2, root.size());
84+
assertFalse(root.isEmpty());
8485

8586
Iterator<JsonNode> it = root.iterator();
8687
assertNotNull(it);
@@ -127,7 +128,8 @@ public void testBasics()
127128
{
128129
ObjectNode n = new ObjectNode(JsonNodeFactory.instance);
129130
assertStandardEquals(n);
130-
131+
assertTrue(n.isEmpty());
132+
131133
assertFalse(n.elements().hasNext());
132134
assertFalse(n.fields().hasNext());
133135
assertFalse(n.fieldNames().hasNext());

src/test/java/com/fasterxml/jackson/databind/node/TestNullNode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public void testBasicsWithNullNode() throws Exception
4040
assertEquals(BigInteger.ZERO, n.bigIntegerValue());
4141

4242
assertEquals(0, n.size());
43+
assertTrue(n.isEmpty());
4344
assertFalse(n.elements().hasNext());
4445
assertFalse(n.fieldNames().hasNext());
4546
// path is never null; but does point to missing node

0 commit comments

Comments
 (0)