Cleaner logging of class registrations

This commit is contained in:
nathan 2020-08-25 02:28:47 +02:00
parent 3326fba214
commit 81302648b3
7 changed files with 37 additions and 45 deletions

View File

@ -205,9 +205,14 @@ object RmiUtils {
cachedMethods[i] = cachedMethod cachedMethods[i] = cachedMethod
if (overwrittenMethod != null && logger.isTraceEnabled) { if (overwrittenMethod != null && logger.isDebugEnabled) {
logger.trace("Overridden method: ${makeFancyMethodName(cachedMethod)}") val name = if (cachedMethod.method.declaringClass.isInterface) {
logger.trace(" to method: ${makeFancyMethodName(overwrittenMethod)}") "iface"
} else {
"method"
}
logger.debug("Overridden $name : ${makeFancyMethodName(cachedMethod)}")
logger.debug(" to method: ${makeFancyMethodName(overwrittenMethod)}")
} }
} }
@ -447,31 +452,35 @@ object RmiUtils {
} }
fun makeFancyMethodName(method: CachedMethod): String { fun makeFancyMethodName(method: CachedMethod): String {
val parameterTypes = method.method.parameterTypes return makeFancyMethodName(method.method)
val size = parameterTypes.size
val args: String = if (size == 0 || parameterTypes[size - 1] == Continuation::class.java) {
""
} else {
parameterTypes.joinToString { it.simpleName }
}
return "${method.method.declaringClass.name}.${method.method.name}($args)"
} }
fun makeFancyMethodName(method: Method): String { fun makeFancyMethodName(method: Method): String {
val parameterTypes = method.parameterTypes val parameterTypes: Array<Class<*>> = method.parameterTypes
val size = parameterTypes.size val size = parameterTypes.size
val args: String = if (size == 0 || parameterTypes[size - 1] == Continuation::class.java) { val isSuspend = size > 0 && parameterTypes[size - 1] == Continuation::class.java
val args: String = if (size == 0 || (size == 1 && isSuspend)) {
"" ""
} else { } else {
parameterTypes.joinToString { it.simpleName } // ALWAYS remove Continuation, since it's REALLY with "suspend" modifier)
if (isSuspend) {
parameterTypes.filter { it != Continuation::class.java }.joinToString { it.simpleName }
} else {
parameterTypes.joinToString { it.simpleName }
}
} }
return "${method.declaringClass.name}.${method.name}($args)" return if (isSuspend) {
"suspend ${method.declaringClass.name}.${method.name}($args)"
} else {
"${method.declaringClass.name}.${method.name}($args)"
}
} }
/** /**
* Remove from the stacktrace the "slice" of stack that relates to "dorkbox.network." package * Remove from the stacktrace the "slice" of stack that relates to "dorkbox.network." package
* *

View File

@ -16,7 +16,6 @@
package dorkbox.network.serialization package dorkbox.network.serialization
import com.esotericsoftware.kryo.Serializer import com.esotericsoftware.kryo.Serializer
import mu.KLogger
internal open class ClassRegistration(var clazz: Class<*>) { internal open class ClassRegistration(var clazz: Class<*>) {
var id = 0 var id = 0
@ -27,10 +26,8 @@ internal open class ClassRegistration(var clazz: Class<*>) {
id = registration.id id = registration.id
} }
open fun log(logger: KLogger) { open fun info(): String {
logger.trace { return "Registered $id -> ${clazz.name}"
"Registered $id -> ${clazz.name}"
}
} }
fun getInfoArray(): Array<Any> { fun getInfoArray(): Array<Any> {

View File

@ -16,7 +16,6 @@
package dorkbox.network.serialization package dorkbox.network.serialization
import com.esotericsoftware.kryo.Serializer import com.esotericsoftware.kryo.Serializer
import mu.KLogger
internal class ClassRegistration0(clazz: Class<*>, serializer: Serializer<*>) : ClassRegistration(clazz) { internal class ClassRegistration0(clazz: Class<*>, serializer: Serializer<*>) : ClassRegistration(clazz) {
init { init {
@ -27,9 +26,7 @@ internal class ClassRegistration0(clazz: Class<*>, serializer: Serializer<*>) :
id = kryo.register(clazz, serializer).id id = kryo.register(clazz, serializer).id
} }
override fun log(logger: KLogger) { override fun info(): String {
logger.trace { return "Registered $id -> ${clazz.name} using ${serializer?.javaClass?.name}"
"Registered $id -> ${clazz.name} using ${serializer?.javaClass?.name}"
}
} }
} }

View File

@ -15,8 +15,6 @@
*/ */
package dorkbox.network.serialization package dorkbox.network.serialization
import mu.KLogger
internal class ClassRegistration1(clazz: Class<*>, id: Int) : ClassRegistration(clazz) { internal class ClassRegistration1(clazz: Class<*>, id: Int) : ClassRegistration(clazz) {
init { init {
this.id = id this.id = id
@ -26,9 +24,7 @@ internal class ClassRegistration1(clazz: Class<*>, id: Int) : ClassRegistration(
kryo.register(clazz, id) kryo.register(clazz, id)
} }
override fun log(logger: KLogger) { override fun info(): String {
logger.trace { return "Registered $id -> (specified) ${clazz.name}"
"Registered $id -> (specified) ${clazz.name}"
}
} }
} }

View File

@ -16,7 +16,6 @@
package dorkbox.network.serialization package dorkbox.network.serialization
import com.esotericsoftware.kryo.Serializer import com.esotericsoftware.kryo.Serializer
import mu.KLogger
internal class ClassRegistration2(clazz: Class<*>, serializer: Serializer<*>, id: Int) : ClassRegistration(clazz) { internal class ClassRegistration2(clazz: Class<*>, serializer: Serializer<*>, id: Int) : ClassRegistration(clazz) {
init { init {
@ -28,9 +27,7 @@ internal class ClassRegistration2(clazz: Class<*>, serializer: Serializer<*>, id
kryo.register(clazz, serializer, id) kryo.register(clazz, serializer, id)
} }
override fun log(logger: KLogger) { override fun info(): String {
logger.trace { return "Registered $id -> (specified) ${clazz.name} using ${serializer?.javaClass?.name}"
"Registered $id -> (specified) ${clazz.name} using ${serializer?.javaClass?.name}"
}
} }
} }

View File

@ -16,7 +16,6 @@
package dorkbox.network.serialization package dorkbox.network.serialization
import dorkbox.network.rmi.messages.ObjectResponseSerializer import dorkbox.network.rmi.messages.ObjectResponseSerializer
import mu.KLogger
internal class ClassRegistrationIfaceAndImpl(ifaceClass: Class<*>, val implClass: Class<*>, objectResponseSerializer: ObjectResponseSerializer) : ClassRegistration(ifaceClass) { internal class ClassRegistrationIfaceAndImpl(ifaceClass: Class<*>, val implClass: Class<*>, objectResponseSerializer: ObjectResponseSerializer) : ClassRegistration(ifaceClass) {
@ -28,9 +27,7 @@ internal class ClassRegistrationIfaceAndImpl(ifaceClass: Class<*>, val implClass
id = kryo.register(clazz, serializer).id id = kryo.register(clazz, serializer).id
} }
override fun log(logger: KLogger) { override fun info(): String {
logger.trace { return "Registered $id -> (RMI) ${implClass.name}"
"Registered $id -> (RMI) ${implClass.name}"
}
} }
} }

View File

@ -382,14 +382,13 @@ class Serialization(private val references: Boolean,
// now create the registration details, used to validate that the client/server have the EXACT same class registration setup // now create the registration details, used to validate that the client/server have the EXACT same class registration setup
val registrationDetails = arrayListOf<Array<Any>>() val registrationDetails = arrayListOf<Array<Any>>()
if (logger.isTraceEnabled) { if (logger.isDebugEnabled) {
// log the in-order output first // log the in-order output first
classesToRegister.forEach { classRegistration -> classesToRegister.forEach { classRegistration ->
classRegistration.log(logger) logger.debug(classRegistration.info())
} }
} }
classesToRegister.forEach { classRegistration -> classesToRegister.forEach { classRegistration ->
// now save all of the registration IDs for quick verification/access // now save all of the registration IDs for quick verification/access
registrationDetails.add(classRegistration.getInfoArray()) registrationDetails.add(classRegistration.getInfoArray())