From 68b5bc08a9655d532437aa2b27050e0196a3b936 Mon Sep 17 00:00:00 2001 From: Siphalor Date: Sun, 26 Oct 2025 20:20:09 +0100 Subject: [PATCH] [serde, serde-hjson] Improve HjsonSerde and make it return writer instead of visitor --- .../siphalor/tweed5/dataapi/api/TweedSerde.java | 7 ++++++- .../de/siphalor/tweed5/data/hjson/HjsonSerde.java | 15 ++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/tweed5/serde-api/src/main/java/de/siphalor/tweed5/dataapi/api/TweedSerde.java b/tweed5/serde-api/src/main/java/de/siphalor/tweed5/dataapi/api/TweedSerde.java index 8b1239f..8494780 100644 --- a/tweed5/serde-api/src/main/java/de/siphalor/tweed5/dataapi/api/TweedSerde.java +++ b/tweed5/serde-api/src/main/java/de/siphalor/tweed5/dataapi/api/TweedSerde.java @@ -6,6 +6,11 @@ import java.io.OutputStream; public interface TweedSerde { TweedDataReader createReader(InputStream inputStream); - TweedDataVisitor createWriter(OutputStream outputStream) throws IOException; + TweedDataWriter createWriter(OutputStream outputStream) throws IOException; + + /** + * Yields the file extension that should normally be used for this serde. + * @return the file extension, typically with a leading dot. + */ String getPreferredFileExtension(); } diff --git a/tweed5/serde-hjson/src/main/java/de/siphalor/tweed5/data/hjson/HjsonSerde.java b/tweed5/serde-hjson/src/main/java/de/siphalor/tweed5/data/hjson/HjsonSerde.java index 987d8a6..36fb4ac 100644 --- a/tweed5/serde-hjson/src/main/java/de/siphalor/tweed5/data/hjson/HjsonSerde.java +++ b/tweed5/serde-hjson/src/main/java/de/siphalor/tweed5/data/hjson/HjsonSerde.java @@ -1,24 +1,29 @@ package de.siphalor.tweed5.data.hjson; import de.siphalor.tweed5.dataapi.api.TweedDataReader; -import de.siphalor.tweed5.dataapi.api.TweedDataVisitor; +import de.siphalor.tweed5.dataapi.api.TweedDataWriter; import de.siphalor.tweed5.dataapi.api.TweedSerde; +import lombok.RequiredArgsConstructor; import java.io.*; +import java.nio.charset.StandardCharsets; +@RequiredArgsConstructor public class HjsonSerde implements TweedSerde { + private final HjsonWriter.Options writerOptions; + @Override public TweedDataReader createReader(InputStream inputStream) { - return new HjsonReader(new HjsonLexer(new InputStreamReader(inputStream))); + return new HjsonReader(new HjsonLexer(new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)))); } @Override - public TweedDataVisitor createWriter(OutputStream outputStream) throws IOException { - return new HjsonWriter(new OutputStreamWriter(outputStream), new HjsonWriter.Options()); + public TweedDataWriter createWriter(OutputStream outputStream) { + return new HjsonWriter(new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)), writerOptions); } @Override public String getPreferredFileExtension() { - return ""; + return ".hjson"; } }