This is an automated email from the ASF dual-hosted git repository.
rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git
The following commit(s) were added to refs/heads/master by this push:
new 51b120f JOHNZON-267 ensure writeEnd can't be call when irrelevant
51b120f is described below
commit 51b120fa031524623715704560780e3468529de7
Author: Romain Manni-Bucau <[email protected]>
AuthorDate: Sun Aug 18 20:00:06 2019 +0200
JOHNZON-267 ensure writeEnd can't be call when irrelevant
---
.../org/apache/johnzon/core/JsonGeneratorImpl.java | 2 +-
.../apache/johnzon/core/JsonGeneratorImplTest.java | 34 +++++++++-------------
2 files changed, 15 insertions(+), 21 deletions(-)
diff --git
a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java
b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java
index 916542d..ae481ac 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonGeneratorImpl.java
@@ -355,7 +355,7 @@ class JsonGeneratorImpl implements JsonGenerator,
JsonChars, Serializable {
@Override
public JsonGenerator writeEnd() {
final GeneratorState last = state.pop();
- if (last == null || !last.endable) {
+ if (last == null || !last.endable || last ==
GeneratorState.ROOT_VALUE) {
throw new JsonGenerationException("Can't end current context: " +
last);
}
depth--;
diff --git
a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonGeneratorImplTest.java
b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonGeneratorImplTest.java
index 1795894..473b9da 100644
---
a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonGeneratorImplTest.java
+++
b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonGeneratorImplTest.java
@@ -42,6 +42,14 @@ import org.junit.Assert;
import org.junit.Test;
public class JsonGeneratorImplTest {
+ @Test(expected = JsonGenerationException.class)
+ public void unexpectedWriteEnd() {
+ final JsonGenerator generator = Json.createGenerator(new
StringWriter());
+ generator.writeStartObject()
+ .writeEnd()
+ .writeEnd();
+ }
+
@Test
public void writeKeyWrite() {
final StringWriter writer = new StringWriter();
@@ -473,29 +481,15 @@ public class JsonGeneratorImplTest {
@Test
public void writeNumber() {
- {
- final StringWriter writer = new StringWriter();
- Json.createGenerator(writer).write(1).writeEnd().close();
- assertEquals("1", writer.toString());
- }
- {
- final StringWriter writer = new StringWriter();
- Json.createGenerator(writer).write(1).close();
- assertEquals("1", writer.toString());
- }
+ final StringWriter writer = new StringWriter();
+ Json.createGenerator(writer).write(1).close();
+ assertEquals("1", writer.toString());
}
@Test
public void writeBoolean() {
- {
- final StringWriter writer = new StringWriter();
- Json.createGenerator(writer).write(true).writeEnd().close();
- assertEquals("true", writer.toString());
- }
- {
- final StringWriter writer = new StringWriter();
- Json.createGenerator(writer).write(true).close();
- assertEquals("true", writer.toString());
- }
+ final StringWriter writer = new StringWriter();
+ Json.createGenerator(writer).write(true).close();
+ assertEquals("true", writer.toString());
}
}