From 9f2feb11955e352fb5a79d7c79b6a394fd67c601 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 8 Jun 2021 19:14:31 +0200 Subject: [PATCH] Add unimi adapters --- .../moshi/BooleanListJsonAdapter.java | 40 +++++++++++++++++++ .../moshi/ByteListJsonAdapter.java | 39 ++++++++++++++++++ .../moshi/CharListJsonAdapter.java | 39 ++++++++++++++++++ .../commonutils/moshi/IntListJsonAdapter.java | 39 ++++++++++++++++++ .../moshi/LongListJsonAdapter.java | 39 ++++++++++++++++++ .../moshi/ShortListJsonAdapter.java | 39 ++++++++++++++++++ 6 files changed, 235 insertions(+) create mode 100644 src/main/java/org/warp/commonutils/moshi/BooleanListJsonAdapter.java create mode 100644 src/main/java/org/warp/commonutils/moshi/ByteListJsonAdapter.java create mode 100644 src/main/java/org/warp/commonutils/moshi/CharListJsonAdapter.java create mode 100644 src/main/java/org/warp/commonutils/moshi/IntListJsonAdapter.java create mode 100644 src/main/java/org/warp/commonutils/moshi/LongListJsonAdapter.java create mode 100644 src/main/java/org/warp/commonutils/moshi/ShortListJsonAdapter.java diff --git a/src/main/java/org/warp/commonutils/moshi/BooleanListJsonAdapter.java b/src/main/java/org/warp/commonutils/moshi/BooleanListJsonAdapter.java new file mode 100644 index 0000000..434fc7a --- /dev/null +++ b/src/main/java/org/warp/commonutils/moshi/BooleanListJsonAdapter.java @@ -0,0 +1,40 @@ +package org.warp.commonutils.moshi; + +import com.squareup.moshi.JsonAdapter; +import com.squareup.moshi.JsonReader; +import com.squareup.moshi.JsonWriter; +import it.unimi.dsi.fastutil.booleans.BooleanArrayList; +import it.unimi.dsi.fastutil.booleans.BooleanList; +import it.unimi.dsi.fastutil.booleans.BooleanLists; +import it.unimi.dsi.fastutil.bytes.ByteArrayList; +import java.io.IOException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class BooleanListJsonAdapter extends JsonAdapter { + + @Override + public @NotNull BooleanList fromJson(@NotNull JsonReader reader) throws IOException { + reader.beginArray(); + BooleanArrayList modifiableOutput = new BooleanArrayList(); + while (reader.hasNext()) { + modifiableOutput.add(reader.nextBoolean()); + } + reader.endArray(); + return BooleanLists.unmodifiable(modifiableOutput); + } + + @Override + public void toJson(@NotNull JsonWriter writer, @Nullable BooleanList value) throws IOException { + if (value == null) { + writer.nullValue(); + return; + } + + writer.beginArray(); + for (int i = 0; i < value.size(); i++) { + writer.value(value.getBoolean(i)); + } + writer.endArray(); + } +} diff --git a/src/main/java/org/warp/commonutils/moshi/ByteListJsonAdapter.java b/src/main/java/org/warp/commonutils/moshi/ByteListJsonAdapter.java new file mode 100644 index 0000000..6194f73 --- /dev/null +++ b/src/main/java/org/warp/commonutils/moshi/ByteListJsonAdapter.java @@ -0,0 +1,39 @@ +package org.warp.commonutils.moshi; + +import com.squareup.moshi.JsonAdapter; +import com.squareup.moshi.JsonReader; +import com.squareup.moshi.JsonWriter; +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; + +class ByteListJsonAdapter extends JsonAdapter { + + @Override + public @NotNull ByteList fromJson(@NotNull JsonReader reader) throws IOException { + reader.beginArray(); + ByteArrayList modifiableOutput = new ByteArrayList(); + while (reader.hasNext()) { + modifiableOutput.add((byte) reader.nextInt()); + } + reader.endArray(); + return ByteLists.unmodifiable(modifiableOutput); + } + + @Override + public void toJson(@NotNull JsonWriter writer, @Nullable ByteList 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/org/warp/commonutils/moshi/CharListJsonAdapter.java b/src/main/java/org/warp/commonutils/moshi/CharListJsonAdapter.java new file mode 100644 index 0000000..999c36e --- /dev/null +++ b/src/main/java/org/warp/commonutils/moshi/CharListJsonAdapter.java @@ -0,0 +1,39 @@ +package org.warp.commonutils.moshi; + +import com.squareup.moshi.JsonAdapter; +import com.squareup.moshi.JsonReader; +import com.squareup.moshi.JsonWriter; +import it.unimi.dsi.fastutil.chars.CharArrayList; +import it.unimi.dsi.fastutil.chars.CharList; +import it.unimi.dsi.fastutil.chars.CharLists; +import java.io.IOException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class CharListJsonAdapter extends JsonAdapter { + + @Override + public @NotNull CharList fromJson(@NotNull JsonReader reader) throws IOException { + reader.beginArray(); + CharArrayList modifiableOutput = new CharArrayList(); + while (reader.hasNext()) { + modifiableOutput.add((char) reader.nextInt()); + } + reader.endArray(); + return CharLists.unmodifiable(modifiableOutput); + } + + @Override + public void toJson(@NotNull JsonWriter writer, @Nullable CharList value) throws IOException { + if (value == null) { + writer.nullValue(); + return; + } + + writer.beginArray(); + for (int i = 0; i < value.size(); i++) { + writer.value((long) value.getChar(i)); + } + writer.endArray(); + } +} diff --git a/src/main/java/org/warp/commonutils/moshi/IntListJsonAdapter.java b/src/main/java/org/warp/commonutils/moshi/IntListJsonAdapter.java new file mode 100644 index 0000000..6906d21 --- /dev/null +++ b/src/main/java/org/warp/commonutils/moshi/IntListJsonAdapter.java @@ -0,0 +1,39 @@ +package org.warp.commonutils.moshi; + +import com.squareup.moshi.JsonAdapter; +import com.squareup.moshi.JsonReader; +import com.squareup.moshi.JsonWriter; +import it.unimi.dsi.fastutil.ints.IntArrayList; +import it.unimi.dsi.fastutil.ints.IntList; +import it.unimi.dsi.fastutil.ints.IntLists; +import java.io.IOException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class IntListJsonAdapter extends JsonAdapter { + + @Override + public @NotNull IntList fromJson(@NotNull JsonReader reader) throws IOException { + reader.beginArray(); + IntArrayList modifiableOutput = new IntArrayList(); + while (reader.hasNext()) { + modifiableOutput.add(reader.nextInt()); + } + reader.endArray(); + return IntLists.unmodifiable(modifiableOutput); + } + + @Override + public void toJson(@NotNull JsonWriter writer, @Nullable IntList value) throws IOException { + if (value == null) { + writer.nullValue(); + return; + } + + writer.beginArray(); + for (int i = 0; i < value.size(); i++) { + writer.value((long) value.getInt(i)); + } + writer.endArray(); + } +} diff --git a/src/main/java/org/warp/commonutils/moshi/LongListJsonAdapter.java b/src/main/java/org/warp/commonutils/moshi/LongListJsonAdapter.java new file mode 100644 index 0000000..1544963 --- /dev/null +++ b/src/main/java/org/warp/commonutils/moshi/LongListJsonAdapter.java @@ -0,0 +1,39 @@ +package org.warp.commonutils.moshi; + +import com.squareup.moshi.JsonAdapter; +import com.squareup.moshi.JsonReader; +import com.squareup.moshi.JsonWriter; +import it.unimi.dsi.fastutil.longs.LongArrayList; +import it.unimi.dsi.fastutil.longs.LongList; +import it.unimi.dsi.fastutil.longs.LongLists; +import java.io.IOException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class LongListJsonAdapter extends JsonAdapter { + + @Override + public @NotNull LongList fromJson(@NotNull JsonReader reader) throws IOException { + reader.beginArray(); + LongArrayList modifiableOutput = new LongArrayList(); + while (reader.hasNext()) { + modifiableOutput.add(reader.nextLong()); + } + reader.endArray(); + return LongLists.unmodifiable(modifiableOutput); + } + + @Override + public void toJson(@NotNull JsonWriter writer, @Nullable LongList value) throws IOException { + if (value == null) { + writer.nullValue(); + return; + } + + writer.beginArray(); + for (int i = 0; i < value.size(); i++) { + writer.value(value.getLong(i)); + } + writer.endArray(); + } +} diff --git a/src/main/java/org/warp/commonutils/moshi/ShortListJsonAdapter.java b/src/main/java/org/warp/commonutils/moshi/ShortListJsonAdapter.java new file mode 100644 index 0000000..8ff38c8 --- /dev/null +++ b/src/main/java/org/warp/commonutils/moshi/ShortListJsonAdapter.java @@ -0,0 +1,39 @@ +package org.warp.commonutils.moshi; + +import com.squareup.moshi.JsonAdapter; +import com.squareup.moshi.JsonReader; +import com.squareup.moshi.JsonWriter; +import it.unimi.dsi.fastutil.shorts.ShortArrayList; +import it.unimi.dsi.fastutil.shorts.ShortList; +import it.unimi.dsi.fastutil.shorts.ShortLists; +import java.io.IOException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +class ShortListJsonAdapter extends JsonAdapter { + + @Override + public @NotNull ShortList fromJson(@NotNull JsonReader reader) throws IOException { + reader.beginArray(); + ShortArrayList modifiableOutput = new ShortArrayList(); + while (reader.hasNext()) { + modifiableOutput.add((short) reader.nextInt()); + } + reader.endArray(); + return ShortLists.unmodifiable(modifiableOutput); + } + + @Override + public void toJson(@NotNull JsonWriter writer, @Nullable ShortList value) throws IOException { + if (value == null) { + writer.nullValue(); + return; + } + + writer.beginArray(); + for (int i = 0; i < value.size(); i++) { + writer.value((long) value.getShort(i)); + } + writer.endArray(); + } +}