Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions core/api/kotlinx-serialization-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,6 @@ public abstract class kotlinx/serialization/encoding/AbstractDecoder : kotlinx/s
public final fun decodeStringElement (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Ljava/lang/String;
public fun decodeValue ()Ljava/lang/Object;
public fun endStructure (Lkotlinx/serialization/descriptors/SerialDescriptor;)V
public fun getSerializersModule ()Lkotlinx/serialization/modules/SerializersModule;
public fun getUpdateMode ()Lkotlinx/serialization/UpdateMode;
public fun updateNullableSerializableElement (Lkotlinx/serialization/descriptors/SerialDescriptor;ILkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
public fun updateNullableSerializableValue (Lkotlinx/serialization/DeserializationStrategy;Ljava/lang/Object;)Ljava/lang/Object;
Expand Down Expand Up @@ -488,7 +487,6 @@ public abstract class kotlinx/serialization/encoding/AbstractEncoder : kotlinx/s
public final fun encodeStringElement (Lkotlinx/serialization/descriptors/SerialDescriptor;ILjava/lang/String;)V
public fun encodeValue (Ljava/lang/Object;)V
public fun endStructure (Lkotlinx/serialization/descriptors/SerialDescriptor;)V
public fun getSerializersModule ()Lkotlinx/serialization/modules/SerializersModule;
public fun shouldEncodeElementDefault (Lkotlinx/serialization/descriptors/SerialDescriptor;I)Z
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ import kotlinx.serialization.modules.*
*/
@ExperimentalSerializationApi
public abstract class AbstractDecoder : Decoder, CompositeDecoder {
override val serializersModule: SerializersModule
get() = EmptySerializersModule

@Suppress("DEPRECATION")
@Deprecated(updateModeDeprecated, level = DeprecationLevel.ERROR)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ import kotlinx.serialization.modules.*
*/
@ExperimentalSerializationApi
public abstract class AbstractEncoder : Encoder, CompositeEncoder {
override val serializersModule: SerializersModule
get() = EmptySerializersModule

// do not update signature here because new signature is called by the plugin;
// and clients that have old signature would not be called.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.encoding.CompositeDecoder.Companion.UNKNOWN_NAME
import kotlinx.serialization.internal.*
import kotlinx.serialization.modules.*
import kotlin.test.*

/*
Expand All @@ -19,6 +20,8 @@ class BasicTypesSerializationTest {

// KeyValue Input/Output
class KeyValueOutput(private val sb: StringBuilder) : AbstractEncoder() {
override val serializersModule: SerializersModule = EmptySerializersModule

override fun beginStructure(descriptor: SerialDescriptor): CompositeEncoder {
sb.append('{')
return this
Expand Down Expand Up @@ -53,6 +56,8 @@ class BasicTypesSerializationTest {
}

class KeyValueInput(private val inp: Parser) : AbstractDecoder() {
override val serializersModule: SerializersModule = EmptySerializersModule

override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder {
inp.expectAfterWhiteSpace('{')
return this
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package kotlinx.serialization

import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*
import org.junit.Test
import kotlin.test.*

Expand Down Expand Up @@ -42,6 +43,8 @@ class SerializationMethodInvocationOrderTest {
class Out : AbstractEncoder() {
var step = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun beginStructure(descriptor: SerialDescriptor): CompositeEncoder {
when (step) {
1 -> {
Expand Down Expand Up @@ -112,6 +115,8 @@ class SerializationMethodInvocationOrderTest {
class Inp : AbstractDecoder() {
var step = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder {
when (step) {
1 -> {
Expand Down
5 changes: 5 additions & 0 deletions core/jvmTest/src/kotlinx/serialization/SerializeFlatTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package kotlinx.serialization

import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*
import org.junit.Test
import kotlin.test.*

Expand Down Expand Up @@ -197,6 +198,8 @@ class SerializeFlatTest() {
class Out(private val name: String) : AbstractEncoder() {
var step = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun beginStructure(
descriptor: SerialDescriptor
): CompositeEncoder {
Expand Down Expand Up @@ -247,6 +250,8 @@ class SerializeFlatTest() {
class Inp(private val name: String) : AbstractDecoder() {
var step = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun beginStructure(descriptor: SerialDescriptor): CompositeDecoder {
checkDesc(name, descriptor)
if (step == 0) step++ else fail("@$step: beginStructure($descriptor)")
Expand Down
31 changes: 29 additions & 2 deletions docs/formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -438,12 +438,15 @@ overriding `encodeValue` in [AbstractEncoder].
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*
-->

```kotlin
class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand Down Expand Up @@ -504,10 +507,13 @@ in a _serial_ order.
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*

class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand Down Expand Up @@ -537,6 +543,8 @@ A decoder needs to implements more substance.
class ListDecoder(val list: ArrayDeque<Any>) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun decodeValue(): Any = list.removeFirst()

override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
Expand Down Expand Up @@ -607,10 +615,13 @@ its support by returning `true` from the [CompositeDecoder.decodeSequentially] f
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*

class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand All @@ -629,6 +640,8 @@ inline fun <reified T> encodeToList(value: T) = encodeToList(serializer(), value
class ListDecoder(val list: ArrayDeque<Any>) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun decodeValue(): Any = list.removeFirst()

override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
Expand Down Expand Up @@ -687,12 +700,15 @@ Our encoder implementation does not keep any state, so it just returns `this` fr
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*
-->

```kotlin
class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand Down Expand Up @@ -724,6 +740,8 @@ in addition to the previous code.
class ListDecoder(val list: ArrayDeque<Any>, var elementsCount: Int = 0) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun decodeValue(): Any = list.removeFirst()

override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
Expand Down Expand Up @@ -789,10 +807,13 @@ of "null indicator", telling whether the upcoming value is null or is not null.
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*

class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand Down Expand Up @@ -823,6 +844,8 @@ inline fun <reified T> encodeToList(value: T) = encodeToList(serializer(), value

class ListDecoder(val list: ArrayDeque<Any>, var elementsCount: Int = 0) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun decodeValue(): Any = list.removeFirst()

Expand Down Expand Up @@ -898,11 +921,13 @@ import kotlinx.serialization.*
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*
import java.io.*
-->

```kotlin
class DataOutputEncoder(val output: DataOutput) : AbstractEncoder() {
override val serializersModule: SerializersModule = EmptySerializersModule
override fun encodeBoolean(value: Boolean) = output.writeByte(if (value) 1 else 0)
override fun encodeByte(value: Byte) = output.writeByte(value.toInt())
override fun encodeShort(value: Short) = output.writeShort(value.toInt())
Expand Down Expand Up @@ -939,7 +964,7 @@ The decoder implementation mirrors encoder's implementation overriding all the p
```kotlin
class DataInputDecoder(val input: DataInput, var elementsCount: Int = 0) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule
override fun decodeBoolean(): Boolean = input.readByte().toInt() != 0
override fun decodeByte(): Byte = input.readByte()
override fun decodeShort(): Short = input.readShort()
Expand Down Expand Up @@ -1035,6 +1060,7 @@ being serialized, so we fetch the builtin [KSerializer] instance for `ByteArray`
import kotlinx.serialization.*
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.modules.*
import kotlinx.serialization.encoding.*
import java.io.*
-->
Expand All @@ -1053,6 +1079,7 @@ a size of up to 254 bytes.

<!--- INCLUDE
class DataOutputEncoder(val output: DataOutput) : AbstractEncoder() {
override val serializersModule: SerializersModule = EmptySerializersModule
override fun encodeBoolean(value: Boolean) = output.writeByte(if (value) 1 else 0)
override fun encodeByte(value: Byte) = output.writeByte(value.toInt())
override fun encodeShort(value: Short) = output.writeShort(value.toInt())
Expand Down Expand Up @@ -1108,7 +1135,7 @@ inline fun <reified T> encodeTo(output: DataOutput, value: T) = encodeTo(output,

class DataInputDecoder(val input: DataInput, var elementsCount: Int = 0) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule
override fun decodeBoolean(): Boolean = input.readByte().toInt() != 0
override fun decodeByte(): Byte = input.readByte()
override fun decodeShort(): Short = input.readShort()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.CompositeDecoder.Companion.UNKNOWN_NAME
import kotlinx.serialization.encoding.*
import kotlinx.serialization.json.Json
import kotlinx.serialization.modules.*
import kotlin.test.Test
import kotlin.test.assertFailsWith

Expand All @@ -14,6 +15,8 @@ class UnknownElementIndexTest {
data class Holder(val c: Choices)

class MalformedReader : AbstractDecoder() {
override val serializersModule: SerializersModule =EmptySerializersModule

override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
return UNKNOWN_NAME
}
Expand Down
3 changes: 3 additions & 0 deletions guide/example/example-formats-08.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ package example.exampleFormats08
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*

class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand Down
5 changes: 5 additions & 0 deletions guide/example/example-formats-09.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ package example.exampleFormats09
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*

class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand All @@ -24,6 +27,8 @@ inline fun <reified T> encodeToList(value: T) = encodeToList(serializer(), value
class ListDecoder(val list: ArrayDeque<Any>) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun decodeValue(): Any = list.removeFirst()

override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
Expand Down
5 changes: 5 additions & 0 deletions guide/example/example-formats-10.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ package example.exampleFormats10
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*

class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand All @@ -24,6 +27,8 @@ inline fun <reified T> encodeToList(value: T) = encodeToList(serializer(), value
class ListDecoder(val list: ArrayDeque<Any>) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun decodeValue(): Any = list.removeFirst()

override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
Expand Down
5 changes: 5 additions & 0 deletions guide/example/example-formats-11.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ package example.exampleFormats11
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*

class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand All @@ -29,6 +32,8 @@ inline fun <reified T> encodeToList(value: T) = encodeToList(serializer(), value
class ListDecoder(val list: ArrayDeque<Any>, var elementsCount: Int = 0) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun decodeValue(): Any = list.removeFirst()

override fun decodeElementIndex(descriptor: SerialDescriptor): Int {
Expand Down
5 changes: 5 additions & 0 deletions guide/example/example-formats-12.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ package example.exampleFormats12
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
import kotlinx.serialization.modules.*

class ListEncoder : AbstractEncoder() {
val list = mutableListOf<Any>()

override val serializersModule: SerializersModule = EmptySerializersModule

override fun encodeValue(value: Any) {
list.add(value)
}
Expand All @@ -31,6 +34,8 @@ inline fun <reified T> encodeToList(value: T) = encodeToList(serializer(), value

class ListDecoder(val list: ArrayDeque<Any>, var elementsCount: Int = 0) : AbstractDecoder() {
private var elementIndex = 0

override val serializersModule: SerializersModule = EmptySerializersModule

override fun decodeValue(): Any = list.removeFirst()

Expand Down
Loading