diff --git a/src/main/java/com/avaje/ebean/text/json/EJsonWriter.java b/src/main/java/com/avaje/ebean/text/json/EJsonWriter.java index add09e160..908f8c987 100644 --- a/src/main/java/com/avaje/ebean/text/json/EJsonWriter.java +++ b/src/main/java/com/avaje/ebean/text/json/EJsonWriter.java @@ -23,14 +23,16 @@ class EJsonWriter { static String write(Object object) throws IOException { StringWriter writer = new StringWriter(200); - write(object, writer); + JsonGenerator jsonGenerator = write(object, writer); + jsonGenerator.close(); return writer.toString(); } - static void write(Object object, Writer writer) throws IOException { + static JsonGenerator write(Object object, Writer writer) throws IOException { JsonGenerator generator = jsonFactory.createGenerator(writer); write(object, generator); - generator.close(); + generator.flush(); + return generator; } static void write(Object object, JsonGenerator jsonGenerator) { diff --git a/src/test/java/com/avaje/ebean/json/EJsonTests.java b/src/test/java/com/avaje/ebean/json/EJsonTests.java index faa299305..d367c23e1 100644 --- a/src/test/java/com/avaje/ebean/json/EJsonTests.java +++ b/src/test/java/com/avaje/ebean/json/EJsonTests.java @@ -6,10 +6,16 @@ import com.avaje.ebeaninternal.server.type.ModifyAwareOwner; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.io.File; +import java.io.FileWriter; import java.io.IOException; import java.io.StringReader; +import java.nio.file.Files; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -18,6 +24,8 @@ import static org.junit.Assert.*; public class EJsonTests { + private static final Logger log = LoggerFactory.getLogger(EJsonTests.class); + @Test public void test_map_simple() throws IOException { @@ -38,6 +46,21 @@ public class EJsonTests { assertEquals(jsonInput, jsonOutput); } + @Test + public void write_withWriter_expect_writerNotClosed() throws IOException { + + File temp = Files.createTempFile("some", ".json").toFile(); + FileWriter writer = new FileWriter(temp); + Map map = new LinkedHashMap<>(); + map.put("foo", "bar"); + EJson.write(map, writer); + writer.write("The end."); + writer.flush(); + writer.close(); + + log.info("write to file {}", temp.getAbsolutePath()); + } + @Test public void test_parseObject() throws IOException {