From a98cc49347e56bd5aa9e0d61a2d8daa5f6547a36 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sun, 7 Feb 2021 01:36:44 +0100
Subject: [PATCH] Redefining some APIs

---
 .../test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt  | 8 ++++----
 .../protocol/serializers/HandshakeSerializers.kt          | 7 +++----
 .../libquassel/protocol/serializers/QtSerializers.kt      | 7 +++----
 .../libquassel/protocol/serializers/QuasselSerializers.kt | 7 +++----
 .../serializers/handshake/ClientInitSerializer.kt         | 1 +
 .../protocol/serializers/primitive/QVariantSerializer.kt  | 4 ++--
 .../de/kuschku/libquassel/protocol/variant/QVariant.kt    | 4 ++--
 7 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt b/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt
index 1eabb869f..dae870cd4 100644
--- a/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt
+++ b/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt
@@ -4,6 +4,7 @@ import de.kuschku.libquassel.protocol.connection.ProtocolInfoSerializer
 import de.kuschku.libquassel.protocol.features.FeatureSet
 import de.kuschku.libquassel.protocol.io.ChainedByteBuffer
 import de.kuschku.libquassel.protocol.messages.handshake.ClientInit
+import de.kuschku.libquassel.protocol.serializers.HandshakeSerializers
 import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitAckSerializer
 import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitRejectSerializer
 import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitSerializer
@@ -111,10 +112,9 @@ class ExampleUnitTest {
       read {
         val data = HandshakeMapSerializer.deserialize(it, connectionFeatureSet)
         println(data)
-        when (data["MsgType"].into<String>()) {
-          "ClientInitAck" -> println(ClientInitAckSerializer.deserialize(data))
-          "ClientInitReject" -> println(ClientInitRejectSerializer.deserialize(data))
-        }
+        val msgType: String = data["MsgType"].into("")
+        val message: Any? = HandshakeSerializers[msgType]?.deserialize(data)
+        println(message)
       }
     }
   }
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/HandshakeSerializers.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/HandshakeSerializers.kt
index e11430ae8..c2a9dba55 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/HandshakeSerializers.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/HandshakeSerializers.kt
@@ -33,12 +33,11 @@ object HandshakeSerializers {
     ClientInitRejectSerializer,
   ).associateBy(HandshakeSerializer<*>::type)
 
-  @PublishedApi
-  internal fun find(type: String) = serializers[type]
+  operator fun get(type: String) = serializers[type]
 
   @Suppress("UNCHECKED_CAST")
-  inline operator fun <reified T> get(type: String): HandshakeSerializer<T> {
-    val serializer = find(type)
+  inline fun <reified T> find(type: String): HandshakeSerializer<T> {
+    val serializer = get(type)
       ?: throw NoSerializerForTypeException.Handshake(type, T::class.java)
     if (serializer.javaType == T::class.java) {
       return serializer as HandshakeSerializer<T>
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QtSerializers.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QtSerializers.kt
index 6cb668042..d03d777dc 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QtSerializers.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QtSerializers.kt
@@ -54,12 +54,11 @@ object QtSerializers {
     QVariantMapSerializer,
   ).associateBy(QtSerializer<*>::qtType)
 
-  @PublishedApi
-  internal fun find(type: QtType) = serializers[type]
+  operator fun get(type: QtType) = serializers[type]
 
   @Suppress("UNCHECKED_CAST")
-  inline operator fun <reified T> get(type: QtType): QtSerializer<T> {
-    val serializer = find(type)
+  inline fun <reified T> find(type: QtType): QtSerializer<T> {
+    val serializer = get(type)
       ?: throw NoSerializerForTypeException.Qt(type, T::class.java)
     if (serializer.javaType == T::class.java) {
       return serializer as QtSerializer<T>
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QuasselSerializers.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QuasselSerializers.kt
index 0d201e7ac..59c3d014d 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QuasselSerializers.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/QuasselSerializers.kt
@@ -42,12 +42,11 @@ object QuasselSerializers {
     PeerPtrSerializer,
   ).associateBy(QuasselSerializer<*>::quasselType)
 
-  @PublishedApi
-  internal fun find(type: QuasselType) = serializers[type]
+  operator fun get(type: QuasselType) = serializers[type]
 
   @Suppress("UNCHECKED_CAST")
-  inline operator fun <reified T> get(type: QuasselType): QuasselSerializer<T> {
-    val serializer = find(type)
+  inline fun <reified T> find(type: QuasselType): QuasselSerializer<T> {
+    val serializer = get(type)
       ?: throw NoSerializerForTypeException.Quassel(type, T::class.java)
     if (serializer.javaType == T::class.java) {
       return serializer as QuasselSerializer<T>
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializer.kt
index 0d1348698..831feaf55 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializer.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializer.kt
@@ -34,6 +34,7 @@ object ClientInitSerializer : HandshakeSerializer<ClientInit> {
   override val javaType: Class<out ClientInit> = ClientInit::class.java
 
   override fun serialize(data: ClientInit) = mapOf(
+    "MsgType" to qVariant(type, QtType.QString),
     "ClientVersion" to qVariant(data.clientVersion, QtType.QString),
     "ClientDate" to qVariant(data.buildDate, QtType.QString),
     "Features" to qVariant(data.clientFeatures.toBits(), QtType.UInt),
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializer.kt
index 8deb400fd..19dd1b435 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializer.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializer.kt
@@ -62,7 +62,7 @@ object QVariantSerializer : QtSerializer<QVariant_> {
 
   @Suppress("UNCHECKED_CAST")
   private fun deserialize(type: QtType, buffer: ByteBuffer, featureSet: FeatureSet): QVariant_ {
-    val serializer = QtSerializers.find(type)
+    val serializer = QtSerializers[type]
       ?: throw NoSerializerForTypeException.Qt(type)
     val value = serializer.deserialize(buffer, featureSet)
     return QVariant.of(value, serializer as QtSerializer<Any?>)
@@ -70,7 +70,7 @@ object QVariantSerializer : QtSerializer<QVariant_> {
 
   @Suppress("UNCHECKED_CAST")
   private fun deserialize(type: QuasselType, buffer: ByteBuffer, featureSet: FeatureSet): QVariant_ {
-    val serializer = QuasselSerializers.find(type)
+    val serializer = QuasselSerializers[type]
       ?: throw NoSerializerForTypeException.Quassel(type)
     val value = serializer.deserialize(buffer, featureSet)
     return QVariant.of(value, serializer as QuasselSerializer<Any?>)
diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt
index 8747eeb4e..c4bf2986c 100644
--- a/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt
+++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt
@@ -72,10 +72,10 @@ sealed class QVariant<T> constructor(
 }
 
 inline fun <reified T> qVariant(data: T, type: QtType): QVariant<T> =
-  QVariant.of(data, QtSerializers[type])
+  QVariant.of(data, QtSerializers.find(type))
 
 inline fun <reified T> qVariant(data: T, type: QuasselType): QVariant<T> =
-  QVariant.of(data, QuasselSerializers[type])
+  QVariant.of(data, QuasselSerializers.find(type))
 
 inline fun <reified T> QVariant_?.into(): T? =
   this?.withType<T>()?.value()
-- 
GitLab