Skip to content

Commit 281c02c

Browse files
committed
feat: add serializers for Component, ShadowColor, TextColor, ZonedDateTime, and UUID; increment version to 3.0.1-SNAPSHOT
1 parent 9be342e commit 281c02c

11 files changed

Lines changed: 345 additions & 25 deletions

File tree

.idea/gradle.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/intellij-javadocs-4.0.1.xml

Lines changed: 204 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
kotlin.code.style=official
22
kotlin.stdlib.default.dependency=false
33
org.gradle.parallel=true
4-
version=3.0.0-SNAPSHOT
4+
version=3.0.1-SNAPSHOT

src/main/kotlin/dev/slne/surf/database/example/RedisExample2Packet.kt

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/main/kotlin/dev/slne/surf/database/example/RedisExamplePacket.kt

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/main/kotlin/dev/slne/surf/database/serializer/SurfSerializer.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
package dev.slne.surf.database.serializer
22

3-
import dev.slne.surf.database.example.RedisExample2Packet
4-
import dev.slne.surf.database.example.RedisExamplePacket
5-
import dev.slne.surf.database.redis.packet.RedisPacket
3+
import dev.slne.surf.database.serializer.serializers.*
64
import kotlinx.serialization.json.Json
75
import kotlinx.serialization.modules.SerializersModule
8-
import kotlinx.serialization.modules.polymorphic
9-
import kotlinx.serialization.modules.subclass
6+
import net.kyori.adventure.text.Component
7+
import net.kyori.adventure.text.format.ShadowColor
8+
import net.kyori.adventure.text.format.TextColor
9+
import java.time.ZonedDateTime
10+
import java.util.*
1011

1112
object SurfSerializer {
1213

1314
private val baseModule = SerializersModule {
14-
polymorphic(RedisPacket::class) {
15-
subclass(RedisExamplePacket::class)
16-
subclass(RedisExample2Packet::class)
17-
}
15+
contextual(TextColor::class, TextColorSerializer)
16+
contextual(ShadowColor::class, ShadowColorSerializer)
17+
contextual(Component::class, ComponentSerializer)
18+
contextual(ZonedDateTime::class, ZonedDateTimeSerializer)
19+
contextual(UUID::class, UuidSerializer)
1820
}
1921

2022
private val externalModules = mutableSetOf<SerializersModule>()
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package dev.slne.surf.database.serializer.serializers
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.descriptors.PrimitiveKind
5+
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
6+
import kotlinx.serialization.encoding.Decoder
7+
import kotlinx.serialization.encoding.Encoder
8+
import net.kyori.adventure.text.Component
9+
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer
10+
11+
object ComponentSerializer : KSerializer<Component> {
12+
private val gcs = GsonComponentSerializer.gson()
13+
14+
override val descriptor = PrimitiveSerialDescriptor(
15+
"Component",
16+
PrimitiveKind.STRING
17+
)
18+
19+
override fun serialize(
20+
encoder: Encoder,
21+
value: Component
22+
) {
23+
encoder.encodeString(gcs.serialize(value))
24+
}
25+
26+
override fun deserialize(decoder: Decoder) =
27+
gcs.deserialize(decoder.decodeString())
28+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package dev.slne.surf.database.serializer.serializers
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.descriptors.PrimitiveKind
5+
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
6+
import kotlinx.serialization.encoding.Decoder
7+
import kotlinx.serialization.encoding.Encoder
8+
import net.kyori.adventure.text.format.ShadowColor
9+
10+
object ShadowColorSerializer : KSerializer<ShadowColor> {
11+
override val descriptor = PrimitiveSerialDescriptor(
12+
"ShadowColor",
13+
PrimitiveKind.INT
14+
)
15+
16+
override fun serialize(
17+
encoder: Encoder,
18+
value: ShadowColor
19+
) {
20+
encoder.encodeInt(value.value())
21+
}
22+
23+
override fun deserialize(decoder: Decoder) =
24+
ShadowColor.shadowColor(decoder.decodeInt())
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package dev.slne.surf.database.serializer.serializers
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.descriptors.PrimitiveKind
5+
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
6+
import kotlinx.serialization.encoding.Decoder
7+
import kotlinx.serialization.encoding.Encoder
8+
import net.kyori.adventure.text.format.TextColor
9+
10+
object TextColorSerializer : KSerializer<TextColor> {
11+
override val descriptor = PrimitiveSerialDescriptor(
12+
"TextColor",
13+
PrimitiveKind.INT
14+
)
15+
16+
override fun serialize(
17+
encoder: Encoder,
18+
value: TextColor
19+
) {
20+
encoder.encodeInt(value.value())
21+
}
22+
23+
override fun deserialize(decoder: Decoder) =
24+
TextColor.color(decoder.decodeInt())
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package dev.slne.surf.database.serializer.serializers
2+
3+
import kotlinx.serialization.KSerializer
4+
import kotlinx.serialization.descriptors.PrimitiveKind
5+
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
6+
import kotlinx.serialization.encoding.Decoder
7+
import kotlinx.serialization.encoding.Encoder
8+
import java.util.*
9+
10+
object UuidSerializer : KSerializer<UUID> {
11+
override val descriptor = PrimitiveSerialDescriptor(
12+
"UUID",
13+
PrimitiveKind.STRING
14+
)
15+
16+
override fun serialize(
17+
encoder: Encoder,
18+
value: UUID
19+
) {
20+
encoder.encodeString(value.toString())
21+
}
22+
23+
override fun deserialize(decoder: Decoder): UUID =
24+
UUID.fromString(decoder.decodeString())
25+
}

0 commit comments

Comments
 (0)