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(); + } +}