[serde, serde-hjson] Improve HjsonSerde and make it return writer instead of visitor

This commit is contained in:
2025-10-26 20:20:09 +01:00
parent 579f4d1f45
commit 68b5bc08a9
2 changed files with 16 additions and 6 deletions

View File

@@ -6,6 +6,11 @@ import java.io.OutputStream;
public interface TweedSerde { public interface TweedSerde {
TweedDataReader createReader(InputStream inputStream); 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(); String getPreferredFileExtension();
} }

View File

@@ -1,24 +1,29 @@
package de.siphalor.tweed5.data.hjson; package de.siphalor.tweed5.data.hjson;
import de.siphalor.tweed5.dataapi.api.TweedDataReader; 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 de.siphalor.tweed5.dataapi.api.TweedSerde;
import lombok.RequiredArgsConstructor;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets;
@RequiredArgsConstructor
public class HjsonSerde implements TweedSerde { public class HjsonSerde implements TweedSerde {
private final HjsonWriter.Options writerOptions;
@Override @Override
public TweedDataReader createReader(InputStream inputStream) { 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 @Override
public TweedDataVisitor createWriter(OutputStream outputStream) throws IOException { public TweedDataWriter createWriter(OutputStream outputStream) {
return new HjsonWriter(new OutputStreamWriter(outputStream), new HjsonWriter.Options()); return new HjsonWriter(new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8)), writerOptions);
} }
@Override @Override
public String getPreferredFileExtension() { public String getPreferredFileExtension() {
return ""; return ".hjson";
} }
} }