From 81f1c5643decf8a6681e285aeaafa2babb5919d3 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 7 Mar 2023 12:20:48 +0100 Subject: [PATCH] Fix some adapters --- .../dbengine/client/query/QueryMoshi.java | 5 ++- .../dbengine/utils/BufJsonAdapter.java | 37 +++++++++++++++++++ .../dbengine/utils/ByteListJsonAdapter.java | 14 ++++--- 3 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 src/main/java/it/cavallium/dbengine/utils/BufJsonAdapter.java diff --git a/src/main/java/it/cavallium/dbengine/client/query/QueryMoshi.java b/src/main/java/it/cavallium/dbengine/client/query/QueryMoshi.java index daabed5..f2e79d5 100644 --- a/src/main/java/it/cavallium/dbengine/client/query/QueryMoshi.java +++ b/src/main/java/it/cavallium/dbengine/client/query/QueryMoshi.java @@ -7,6 +7,7 @@ import it.cavallium.dbengine.client.query.current.CurrentVersion; import it.cavallium.dbengine.client.query.current.IBaseType; import it.cavallium.dbengine.client.query.current.IType; import it.cavallium.dbengine.utils.BooleanListJsonAdapter; +import it.cavallium.dbengine.utils.BufJsonAdapter; import it.cavallium.dbengine.utils.ByteListJsonAdapter; import it.cavallium.dbengine.utils.CharListJsonAdapter; import it.cavallium.dbengine.utils.IntListJsonAdapter; @@ -14,6 +15,7 @@ import it.cavallium.dbengine.utils.LongListJsonAdapter; import it.cavallium.dbengine.utils.MoshiPolymorphic; import it.cavallium.dbengine.utils.ShortListJsonAdapter; import it.unimi.dsi.fastutil.booleans.BooleanList; +import it.unimi.dsi.fastutil.bytes.ByteList; import it.unimi.dsi.fastutil.chars.CharList; import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; @@ -57,7 +59,8 @@ public class QueryMoshi extends MoshiPolymorphic { this.concreteClasses = concreteClasses; Object2ObjectMap, JsonAdapter> extraAdapters = new Object2ObjectOpenHashMap<>(); extraAdapters.put(BooleanList.class, new BooleanListJsonAdapter()); - extraAdapters.put(Buf.class, new ByteListJsonAdapter()); + extraAdapters.put(ByteList.class, new ByteListJsonAdapter()); + extraAdapters.put(Buf.class, new BufJsonAdapter()); extraAdapters.put(ShortList.class, new ShortListJsonAdapter()); extraAdapters.put(CharList.class, new CharListJsonAdapter()); extraAdapters.put(IntList.class, new IntListJsonAdapter()); diff --git a/src/main/java/it/cavallium/dbengine/utils/BufJsonAdapter.java b/src/main/java/it/cavallium/dbengine/utils/BufJsonAdapter.java new file mode 100644 index 0000000..cb11c67 --- /dev/null +++ b/src/main/java/it/cavallium/dbengine/utils/BufJsonAdapter.java @@ -0,0 +1,37 @@ +package it.cavallium.dbengine.utils; + +import com.squareup.moshi.JsonAdapter; +import com.squareup.moshi.JsonReader; +import com.squareup.moshi.JsonWriter; +import it.cavallium.buffer.Buf; +import java.io.IOException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class BufJsonAdapter extends JsonAdapter { + + @Override + public @NotNull Buf fromJson(@NotNull JsonReader reader) throws IOException { + reader.beginArray(); + var modifiableOutput = Buf.create(); + while (reader.hasNext()) { + modifiableOutput.add((byte) reader.nextInt()); + } + reader.endArray(); + return modifiableOutput; + } + + @Override + public void toJson(@NotNull JsonWriter writer, @Nullable Buf value) throws IOException { + if (value == null) { + writer.nullValue(); + return; + } + + writer.beginArray(); + for (int i = 0; i < value.size(); i++) { + writer.value((long) value.getByte(i)); + } + writer.endArray(); + } +} diff --git a/src/main/java/it/cavallium/dbengine/utils/ByteListJsonAdapter.java b/src/main/java/it/cavallium/dbengine/utils/ByteListJsonAdapter.java index d65e97c..134b981 100644 --- a/src/main/java/it/cavallium/dbengine/utils/ByteListJsonAdapter.java +++ b/src/main/java/it/cavallium/dbengine/utils/ByteListJsonAdapter.java @@ -3,26 +3,28 @@ package it.cavallium.dbengine.utils; import com.squareup.moshi.JsonAdapter; import com.squareup.moshi.JsonReader; import com.squareup.moshi.JsonWriter; -import it.cavallium.buffer.Buf; +import it.unimi.dsi.fastutil.bytes.ByteArrayList; +import it.unimi.dsi.fastutil.bytes.ByteList; +import it.unimi.dsi.fastutil.bytes.ByteLists; import java.io.IOException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class ByteListJsonAdapter extends JsonAdapter { +public class ByteListJsonAdapter extends JsonAdapter { @Override - public @NotNull Buf fromJson(@NotNull JsonReader reader) throws IOException { + public @NotNull ByteList fromJson(@NotNull JsonReader reader) throws IOException { reader.beginArray(); - var modifiableOutput = Buf.create(); + ByteArrayList modifiableOutput = new ByteArrayList(); while (reader.hasNext()) { modifiableOutput.add((byte) reader.nextInt()); } reader.endArray(); - return modifiableOutput; + return ByteLists.unmodifiable(modifiableOutput); } @Override - public void toJson(@NotNull JsonWriter writer, @Nullable Buf value) throws IOException { + public void toJson(@NotNull JsonWriter writer, @Nullable ByteList value) throws IOException { if (value == null) { writer.nullValue(); return;