Skip to content

Commit 2843f9c

Browse files
committed
Added PathAdapter to support serialization for Path
Introduced a new `TagAdapter` implementation, `PathAdapter`, for serializing and deserializing `Path` objects. Registered `PathAdapter` in `SimpleNBT` to ensure seamless integration.
1 parent 28748c7 commit 2843f9c

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

nbt/src/main/java/core/nbt/serialization/SimpleNBT.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import core.nbt.serialization.adapter.FloatAdapter;
1010
import core.nbt.serialization.adapter.IntegerAdapter;
1111
import core.nbt.serialization.adapter.LongAdapter;
12+
import core.nbt.serialization.adapter.PathAdapter;
1213
import core.nbt.serialization.adapter.ShortAdapter;
1314
import core.nbt.serialization.adapter.StringAdapter;
1415
import core.nbt.serialization.adapter.UUIDAdapter;
@@ -19,6 +20,7 @@
1920
import java.io.File;
2021
import java.lang.reflect.Type;
2122
import java.net.InetSocketAddress;
23+
import java.nio.file.Path;
2224
import java.time.Duration;
2325
import java.util.HashMap;
2426
import java.util.Map;
@@ -141,6 +143,7 @@ public SerializationRegistry() {
141143
registerTypeAdapter(InetSocketAddress.class, AddressAdapter.INSTANCE);
142144
registerTypeAdapter(Integer.class, IntegerAdapter.INSTANCE);
143145
registerTypeAdapter(Long.class, LongAdapter.INSTANCE);
146+
registerTypeAdapter(Path.class, PathAdapter.INSTANCE);
144147
registerTypeAdapter(Short.class, ShortAdapter.INSTANCE);
145148
registerTypeAdapter(String.class, StringAdapter.INSTANCE);
146149
registerTypeAdapter(UUID.class, UUIDAdapter.INSTANCE);
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package core.nbt.serialization.adapter;
2+
3+
import core.nbt.serialization.ParserException;
4+
import core.nbt.serialization.TagAdapter;
5+
import core.nbt.serialization.TagDeserializationContext;
6+
import core.nbt.serialization.TagSerializationContext;
7+
import core.nbt.tag.StringTag;
8+
import core.nbt.tag.Tag;
9+
import org.jetbrains.annotations.ApiStatus;
10+
import org.jspecify.annotations.NullMarked;
11+
12+
import java.nio.file.Path;
13+
14+
@NullMarked
15+
@ApiStatus.Internal
16+
public final class PathAdapter implements TagAdapter<Path> {
17+
public static final PathAdapter INSTANCE = new PathAdapter();
18+
19+
private PathAdapter() {
20+
}
21+
22+
@Override
23+
public Path deserialize(Tag tag, TagDeserializationContext context) throws ParserException {
24+
return Path.of(tag.getAsString());
25+
}
26+
27+
@Override
28+
public Tag serialize(Path path, TagSerializationContext context) throws ParserException {
29+
return new StringTag(path.toString());
30+
}
31+
}

0 commit comments

Comments
 (0)