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());
     }
 }

Reply via email to