From efa62a16ae8f158861f1d6150d4aecb9af73b5ae Mon Sep 17 00:00:00 2001 From: Eugen Freiter Date: Sat, 5 Feb 2022 11:03:38 +0100 Subject: [PATCH] close JsonWriters Signed-off-by: Eugen Freiter --- CHANGES.md | 1 + .../server/impl/json/AccessoryController.java | 7 ++++--- .../server/impl/json/CharacteristicsController.java | 8 ++++---- .../hapjava/server/impl/json/EventController.java | 12 +++++++----- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a3a55a290..42876c4c9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,7 @@ ## Fixes * Log accessory names instead of futures. [#150](https://github.com/hap-java/HAP-Java/issues/150) * Fix rotation speed data type (BREAKING API CHANGE). According to HAP specification it must be float +* Close JsonWriters [#149](https://github.com/hap-java/HAP-Java/issues/149) # HAP-Java 2.0.0 * major refactoring to support optional characteristics diff --git a/src/main/java/io/github/hapjava/server/impl/json/AccessoryController.java b/src/main/java/io/github/hapjava/server/impl/json/AccessoryController.java index 98e6cd266..ef21422af 100644 --- a/src/main/java/io/github/hapjava/server/impl/json/AccessoryController.java +++ b/src/main/java/io/github/hapjava/server/impl/json/AccessoryController.java @@ -18,6 +18,7 @@ import javax.json.JsonArrayBuilder; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; +import javax.json.JsonWriter; public class AccessoryController { @@ -64,9 +65,9 @@ public HttpResponse listing() throws Exception { .add("services", serviceArrayBuilders.get(accessory.getId()))); } - try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - Json.createWriter(baos) - .write(Json.createObjectBuilder().add("accessories", accessories).build()); + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); + JsonWriter jsonWriter = Json.createWriter(baos)) { + jsonWriter.write(Json.createObjectBuilder().add("accessories", accessories).build()); return new HapJsonResponse(baos.toByteArray()); } } diff --git a/src/main/java/io/github/hapjava/server/impl/json/CharacteristicsController.java b/src/main/java/io/github/hapjava/server/impl/json/CharacteristicsController.java index df5509dda..4d20a0c6b 100644 --- a/src/main/java/io/github/hapjava/server/impl/json/CharacteristicsController.java +++ b/src/main/java/io/github/hapjava/server/impl/json/CharacteristicsController.java @@ -58,10 +58,10 @@ public HttpResponse get(HttpRequest request) throws Exception { "Accessory " + aid + " has no characteristics or does not exist. Request: " + uri); } } - try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - Json.createWriter(baos) - .write( - Json.createObjectBuilder().add("characteristics", characteristics.build()).build()); + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); + JsonWriter jsonWriter = Json.createWriter(baos)) { + jsonWriter.write( + Json.createObjectBuilder().add("characteristics", characteristics.build()).build()); return new HapJsonResponse(baos.toByteArray()); } } diff --git a/src/main/java/io/github/hapjava/server/impl/json/EventController.java b/src/main/java/io/github/hapjava/server/impl/json/EventController.java index 80be265ae..41473f716 100644 --- a/src/main/java/io/github/hapjava/server/impl/json/EventController.java +++ b/src/main/java/io/github/hapjava/server/impl/json/EventController.java @@ -9,6 +9,7 @@ import javax.json.JsonArrayBuilder; import javax.json.JsonObject; import javax.json.JsonObjectBuilder; +import javax.json.JsonWriter; public class EventController { @@ -24,8 +25,9 @@ public HttpResponse getMessage(int accessoryId, int iid, EventableCharacteristic JsonObject data = Json.createObjectBuilder().add("characteristics", characteristics).build(); - try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - Json.createWriter(baos).write(data); + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); + JsonWriter jsonWriter = Json.createWriter(baos)) { + jsonWriter.write(data); byte[] dataBytes = baos.toByteArray(); return new EventResponse(dataBytes); @@ -44,9 +46,9 @@ public HttpResponse getMessage(ArrayList notifications) thr } JsonObject data = Json.createObjectBuilder().add("characteristics", characteristics).build(); - - try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - Json.createWriter(baos).write(data); + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); + JsonWriter jsonWriter = Json.createWriter(baos)) { + jsonWriter.write(data); byte[] dataBytes = baos.toByteArray(); return new EventResponse(dataBytes);