You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
KTOR-7620 Make Url class @serializable and JVM Serializable
In our project we had to define our own UrlSerializer. It would be much nicer to have this in the Ktor library itself, so it works out of the box (similar to how Cookie was recently extended).
Also, types like Url and Cookie should be java.io.Serializable. Otherwise Android crashes when using those types as e.g. screen arguments. This happens very quickly when Url is used indirectly as part of a data class where we wanted type safety.
Copy file name to clipboardExpand all lines: ktor-http/api/ktor-http.api
+13-3Lines changed: 13 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -262,7 +262,7 @@ public final class io/ktor/http/ContentTypesKt {
262
262
public static final fun withCharsetIfNeeded (Lio/ktor/http/ContentType;Ljava/nio/charset/Charset;)Lio/ktor/http/ContentType;
263
263
}
264
264
265
-
public final class io/ktor/http/Cookie {
265
+
public final class io/ktor/http/Cookie : java/io/Serializable {
266
266
public static final field Companion Lio/ktor/http/Cookie$Companion;
267
267
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/ktor/http/CookieEncoding;Ljava/lang/Integer;Lio/ktor/util/date/GMTDate;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Map;)V
268
268
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/ktor/http/CookieEncoding;Ljava/lang/Integer;Lio/ktor/util/date/GMTDate;Ljava/lang/String;Ljava/lang/String;ZZLjava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -966,7 +966,7 @@ public final class io/ktor/http/URLParserKt {
966
966
public static final fun takeFrom (Lio/ktor/http/URLBuilder;Ljava/lang/String;)Lio/ktor/http/URLBuilder;
967
967
}
968
968
969
-
public final class io/ktor/http/URLProtocol {
969
+
public final class io/ktor/http/URLProtocol : java/io/Serializable {
970
970
public static final field Companion Lio/ktor/http/URLProtocol$Companion;
971
971
public fun <init> (Ljava/lang/String;I)V
972
972
public final fun component1 ()Ljava/lang/String;
@@ -1026,7 +1026,7 @@ public final class io/ktor/http/UnsafeHeaderException : java/lang/IllegalArgumen
1026
1026
public fun <init> (Ljava/lang/String;)V
1027
1027
}
1028
1028
1029
-
public final class io/ktor/http/Url {
1029
+
public final class io/ktor/http/Url : java/io/Serializable {
1030
1030
public static final field Companion Lio/ktor/http/Url$Companion;
1031
1031
public fun equals (Ljava/lang/Object;)Z
1032
1032
public final fun getEncodedFragment ()Ljava/lang/String;
@@ -1053,13 +1053,23 @@ public final class io/ktor/http/Url {
1053
1053
}
1054
1054
1055
1055
public final class io/ktor/http/Url$Companion {
1056
+
public final fun serializer ()Lkotlinx/serialization/KSerializer;
1056
1057
}
1057
1058
1058
1059
public final class io/ktor/http/UrlKt {
1059
1060
public static final fun getAuthority (Lio/ktor/http/Url;)Ljava/lang/String;
1060
1061
public static final fun getProtocolWithAuthority (Lio/ktor/http/Url;)Ljava/lang/String;
1061
1062
}
1062
1063
1064
+
public final class io/ktor/http/UrlSerializer : kotlinx/serialization/KSerializer {
1065
+
public fun <init> ()V
1066
+
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lio/ktor/http/Url;
1067
+
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
1068
+
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
1069
+
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lio/ktor/http/Url;)V
1070
+
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
1071
+
}
1072
+
1063
1073
public final class io/ktor/http/auth/AuthScheme {
1064
1074
public static final field Basic Ljava/lang/String;
1065
1075
public static final field Bearer Ljava/lang/String;
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]
1133
1145
}
1134
1146
1135
1147
sealed class io.ktor.http.auth/HttpAuthHeader { // io.ktor.http.auth/HttpAuthHeader|null[0]
@@ -399,6 +406,7 @@ final fun (kotlinx.io/Source).io.ktor.utils.io.core/readTextExactCharacters(kotl
399
406
final fun (kotlinx.io/Source).io.ktor.utils.io.core/release() // io.ktor.utils.io.core/release|[email protected](){}[0]
400
407
final fun (kotlinx.io/Source).io.ktor.utils.io.core/takeWhile(kotlin/Function1<kotlinx.io/Buffer, kotlin/Boolean>) // io.ktor.utils.io.core/takeWhile|[email protected](kotlin.Function1<kotlinx.io.Buffer,kotlin.Boolean>){}[0]
401
408
final fun (kotlinx.io/Source).io.ktor.utils.io/readText(): kotlin/String // io.ktor.utils.io/readText|[email protected](){}[0]
409
+
final fun <#A: kotlin/Any> io.ktor.utils.io/JvmSerializerReplacement(io.ktor.utils.io/JvmSerializer<#A>, #A): kotlin/Any // io.ktor.utils.io/JvmSerializerReplacement|JvmSerializerReplacement(io.ktor.utils.io.JvmSerializer<0:0>;0:0){0§<kotlin.Any>}[0]
402
410
final fun <#A: kotlin/Any?> (kotlinx.io/Sink).io.ktor.utils.io.core/preview(kotlin/Function1<kotlinx.io/Source, #A>): #A // io.ktor.utils.io.core/preview|[email protected](kotlin.Function1<kotlinx.io.Source,0:0>){0§<kotlin.Any?>}[0]
403
411
final fun <#A: kotlin/Any?> (kotlinx.io/Source).io.ktor.utils.io.core/preview(kotlin/Function1<kotlinx.io/Source, #A>): #A // io.ktor.utils.io.core/preview|[email protected](kotlin.Function1<kotlinx.io.Source,0:0>){0§<kotlin.Any?>}[0]
404
412
final fun <#A: kotlin/Any?> io.ktor.utils.io.core/withMemory(kotlin/Int, kotlin/Function1<kotlin/ByteArray, #A>): #A // io.ktor.utils.io.core/withMemory|withMemory(kotlin.Int;kotlin.Function1<kotlin.ByteArray,0:0>){0§<kotlin.Any?>}[0]
0 commit comments