Skip to content
This repository was archived by the owner on Jan 20, 2023. It is now read-only.

Commit 91fa5bb

Browse files
committed
デシリアライザー取得を外だし
1 parent 7df3dcf commit 91fa5bb

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/main/kotlin/com/mapk/krowmapper/ParameterForMap.kt

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,7 @@ class ParameterForMap private constructor(
2424
private val deserializer: KFunction<*>?
2525

2626
init {
27-
val deserializers = deserializerFromConstructors(kClazz) +
28-
deserializerFromStaticMethods(kClazz) +
29-
deserializerFromCompanionObject(kClazz)
30-
31-
deserializer = when {
32-
deserializers.isEmpty() -> null
33-
deserializers.size == 1 -> deserializers.single()
34-
else -> throw IllegalArgumentException("Find multiple deserializer from ${kClazz.jvmName}")
35-
}
27+
deserializer = kClazz.getDeserializer()
3628
}
3729

3830
fun getObject(rs: ResultSet): Any? = when {
@@ -54,6 +46,18 @@ class ParameterForMap private constructor(
5446
}
5547
}
5648

49+
private fun <T : Any> KClass<T>.getDeserializer(): KFunction<T>? {
50+
val deserializers = deserializerFromConstructors(this) +
51+
deserializerFromStaticMethods(this) +
52+
deserializerFromCompanionObject(this)
53+
54+
return when {
55+
deserializers.isEmpty() -> null
56+
deserializers.size == 1 -> deserializers.single()
57+
else -> throw IllegalArgumentException("Find multiple deserializer from $jvmName")
58+
}
59+
}
60+
5761
private fun <T> Collection<KFunction<T>>.getDeserializerFromFunctions(): Collection<KFunction<T>> {
5862
return filter { it.annotations.any { annotation -> annotation is KColumnDeserializer } }
5963
.map { func ->

0 commit comments

Comments
 (0)