Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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