Skip to content

Commit 3ba2335

Browse files
committed
PR review
1 parent a3d2436 commit 3ba2335

File tree

11 files changed

+37
-21
lines changed

11 files changed

+37
-21
lines changed

ktor-http/api/ktor-http.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1062,7 +1062,7 @@ public final class io/ktor/http/UrlKt {
10621062
}
10631063

10641064
public final class io/ktor/http/UrlSerializer : kotlinx/serialization/KSerializer {
1065-
public fun <init> ()V
1065+
public static final field INSTANCE Lio/ktor/http/UrlSerializer;
10661066
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/ktor/http/Url;
10671067
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
10681068
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;

ktor-http/api/ktor-http.klib.api

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,16 +1134,6 @@ final class io.ktor.http/Url : io.ktor.utils.io/JvmSerializable { // io.ktor.htt
11341134
}
11351135
}
11361136

1137-
final class io.ktor.http/UrlSerializer : kotlinx.serialization/KSerializer<io.ktor.http/Url> { // io.ktor.http/UrlSerializer|null[0]
1138-
constructor <init>() // io.ktor.http/UrlSerializer.<init>|<init>(){}[0]
1139-
1140-
final val descriptor // io.ktor.http/UrlSerializer.descriptor|{}descriptor[0]
1141-
final fun <get-descriptor>(): kotlinx.serialization.descriptors/SerialDescriptor // io.ktor.http/UrlSerializer.descriptor.<get-descriptor>|<get-descriptor>(){}[0]
1142-
1143-
final fun deserialize(kotlinx.serialization.encoding/Decoder): io.ktor.http/Url // io.ktor.http/UrlSerializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0]
1144-
final fun serialize(kotlinx.serialization.encoding/Encoder, io.ktor.http/Url) // io.ktor.http/UrlSerializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;io.ktor.http.Url){}[0]
1145-
}
1146-
11471137
sealed class io.ktor.http.auth/HttpAuthHeader { // io.ktor.http.auth/HttpAuthHeader|null[0]
11481138
final val authScheme // io.ktor.http.auth/HttpAuthHeader.authScheme|{}authScheme[0]
11491139
final fun <get-authScheme>(): kotlin/String // io.ktor.http.auth/HttpAuthHeader.authScheme.<get-authScheme>|<get-authScheme>(){}[0]
@@ -1592,6 +1582,14 @@ final object io.ktor.http/HttpHeaders { // io.ktor.http/HttpHeaders|null[0]
15921582
final fun isUnsafe(kotlin/String): kotlin/Boolean // io.ktor.http/HttpHeaders.isUnsafe|isUnsafe(kotlin.String){}[0]
15931583
}
15941584

1585+
final object io.ktor.http/UrlSerializer : kotlinx.serialization/KSerializer<io.ktor.http/Url> { // io.ktor.http/UrlSerializer|null[0]
1586+
final val descriptor // io.ktor.http/UrlSerializer.descriptor|{}descriptor[0]
1587+
final fun <get-descriptor>(): kotlinx.serialization.descriptors/SerialDescriptor // io.ktor.http/UrlSerializer.descriptor.<get-descriptor>|<get-descriptor>(){}[0]
1588+
1589+
final fun deserialize(kotlinx.serialization.encoding/Decoder): io.ktor.http/Url // io.ktor.http/UrlSerializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0]
1590+
final fun serialize(kotlinx.serialization.encoding/Encoder, io.ktor.http/Url) // io.ktor.http/UrlSerializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;io.ktor.http.Url){}[0]
1591+
}
1592+
15951593
final const val io.ktor.http/DEFAULT_PORT // io.ktor.http/DEFAULT_PORT|{}DEFAULT_PORT[0]
15961594
final fun <get-DEFAULT_PORT>(): kotlin/Int // io.ktor.http/DEFAULT_PORT.<get-DEFAULT_PORT>|<get-DEFAULT_PORT>(){}[0]
15971595

ktor-http/common/src/io/ktor/http/Cookie.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
* Copyright 2014-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
33
*/
44

5+
@file:OptIn(InternalAPI::class)
6+
57
package io.ktor.http
68

79
import io.ktor.util.*

ktor-http/common/src/io/ktor/http/URLProtocol.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import io.ktor.utils.io.*
1212
* @property name of protocol (schema)
1313
* @property defaultPort default port for protocol or `-1` if not known
1414
*/
15+
@OptIn(InternalAPI::class)
1516
public data class URLProtocol(val name: String, val defaultPort: Int) : JvmSerializable {
1617
init {
1718
require(name.all { it.isLowerCase() }) { "All characters should be lower case" }

ktor-http/common/src/io/ktor/http/Url.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
* Copyright 2014-2021 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
33
*/
44

5+
@file:OptIn(InternalAPI::class)
6+
57
package io.ktor.http
68

79
import io.ktor.utils.io.*
@@ -263,8 +265,9 @@ internal val Url.encodedUserAndPassword: String
263265
appendUserAndPassword(encodedUser, encodedPassword)
264266
}
265267

266-
public class UrlSerializer : KSerializer<Url> {
267-
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Url", PrimitiveKind.STRING)
268+
public object UrlSerializer : KSerializer<Url> {
269+
override val descriptor: SerialDescriptor =
270+
PrimitiveSerialDescriptor("io.ktor.http.Url", PrimitiveKind.STRING)
268271

269272
override fun deserialize(decoder: Decoder): Url =
270273
Url(decoder.decodeString())

ktor-http/jvm/test/io/ktor/tests/http/SerializableTest.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,11 @@ import kotlin.test.*
1212
class SerializableTest {
1313
@Test
1414
fun urlTest() {
15-
val url = Url("https://localhost/path?key=value#fragment")
16-
assertEquals(url, assertSerializable(url))
15+
assertSerializable(Url("https://localhost/path?key=value#fragment"))
1716
}
1817

1918
@Test
2019
fun cookieTest() {
21-
val cookie = Cookie("key", "value")
22-
assertEquals(cookie, assertSerializable(cookie))
20+
assertSerializable(Cookie("key", "value"))
2321
}
2422
}

ktor-io/common/src/io/ktor/utils/io/JvmSerializable.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@
44

55
package io.ktor.utils.io
66

7+
/** Alias for `java.io.Serializable` on JVM. Empty interface otherwise. */
8+
@InternalAPI
79
public expect interface JvmSerializable
810

11+
@InternalAPI
912
public interface JvmSerializer<T> : JvmSerializable {
1013
public fun jvmSerialize(value: T): ByteArray
1114
public fun jvmDeserialize(value: ByteArray): T
1215
}
1316

17+
@InternalAPI
1418
public expect fun <T : Any> JvmSerializerReplacement(serializer: JvmSerializer<T>, value: T): Any
1519

1620
internal object DummyJvmSimpleSerializerReplacement

ktor-io/jsAndWasmShared/src/io/ktor/utils/io/JvmSerializable.jsAndWasmShared.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
package io.ktor.utils.io
66

7-
/** Alias for `java.io.Serializable` on JVM. Empty interface otherwise. */
7+
@InternalAPI
88
public actual interface JvmSerializable
99

10+
@InternalAPI
1011
public actual fun <T : Any> JvmSerializerReplacement(serializer: JvmSerializer<T>, value: T): Any =
1112
DummyJvmSimpleSerializerReplacement

ktor-io/jvm/src/io/ktor/utils/io/JvmSerializable.jvm.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@ package io.ktor.utils.io
66

77
import java.io.*
88

9+
@InternalAPI
910
public actual typealias JvmSerializable = Serializable
1011

1112
@Suppress("UNCHECKED_CAST")
13+
@InternalAPI
1214
public actual fun <T : Any> JvmSerializerReplacement(serializer: JvmSerializer<T>, value: T): Any =
1315
DefaultJvmSerializerReplacement(serializer, value)
1416

17+
@OptIn(InternalAPI::class)
1518
@PublishedApi // IMPORTANT: changing the class name would result in serialization incompatibility
1619
internal class DefaultJvmSerializerReplacement<T : Any>(
1720
private var serializer: JvmSerializer<T>?,

ktor-io/posix/src/io/ktor/utils/io/JvmSerializable.posix.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
package io.ktor.utils.io
66

7-
/** Alias for `java.io.Serializable` on JVM. Empty interface otherwise. */
7+
@InternalAPI
88
public actual interface JvmSerializable
99

10+
@InternalAPI
1011
public actual fun <T : Any> JvmSerializerReplacement(serializer: JvmSerializer<T>, value: T): Any =
1112
DummyJvmSimpleSerializerReplacement

ktor-shared/ktor-junit/jvm/src/io/ktor/junit/Assertions.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package io.ktor.junit
66

77
import java.io.*
8+
import kotlin.test.*
89

910
/**
1011
* Convenience function for asserting on all elements of a collection.
@@ -32,9 +33,13 @@ fun <T> assertAll(collection: Iterable<T>, assertion: (T) -> Unit) {
3233
)
3334
}
3435

35-
inline fun <reified T : Any> assertSerializable(obj: T): T {
36+
inline fun <reified T : Any> assertSerializable(obj: T, checkEquality: Boolean = true): T {
3637
val encoded = ByteArrayOutputStream().also {
3738
ObjectOutputStream(it).writeObject(obj)
3839
}.toByteArray()
39-
return ObjectInputStream(encoded.inputStream()).readObject() as T
40+
val decoded = ObjectInputStream(encoded.inputStream()).readObject() as T
41+
if (checkEquality) {
42+
assertEquals(obj, decoded, "deserialized object must be equal to original object")
43+
}
44+
return decoded
4045
}

0 commit comments

Comments
 (0)