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

Commit 15fed50

Browse files
authored
Merge pull request #16 from k163377/feature
Response to commonization.
2 parents dcfeaf9 + dc60213 commit 15fed50

File tree

2 files changed

+10
-15
lines changed

2 files changed

+10
-15
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ repositories {
3030
dependencies {
3131
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
3232
implementation(kotlin("reflect"))
33-
api("com.github.ProjectMapK:Shared:0.12")
33+
api("com.github.ProjectMapK:Shared:0.13")
3434
// 使うのはRowMapperのみなため他はexclude、またバージョンそのものは使う相手に合わせるためcompileOnly
3535
compileOnly(group = "org.springframework", name = "spring-jdbc", version = "5.2.4.RELEASE") {
3636
exclude(module = "spring-beans")

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

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ import com.mapk.annotations.KColumnDeserializer
44
import com.mapk.core.EnumMapper
55
import com.mapk.core.KFunctionWithInstance
66
import com.mapk.core.ValueParameter
7+
import com.mapk.core.getAnnotatedFunctions
8+
import com.mapk.core.getAnnotatedFunctionsFromCompanionObject
9+
import com.mapk.core.getKClass
710
import com.mapk.deserialization.AbstractKColumnDeserializer
811
import com.mapk.deserialization.KColumnDeserializeBy
912
import java.lang.IllegalArgumentException
1013
import java.sql.ResultSet
1114
import kotlin.reflect.KClass
1215
import kotlin.reflect.KFunction
13-
import kotlin.reflect.full.companionObjectInstance
1416
import kotlin.reflect.full.findAnnotation
15-
import kotlin.reflect.full.functions
1617
import kotlin.reflect.full.primaryConstructor
1718
import kotlin.reflect.full.staticFunctions
1819
import kotlin.reflect.jvm.isAccessible
@@ -57,7 +58,7 @@ internal sealed class ParameterForMap {
5758
}
5859

5960
param.requiredClazz.getDeserializer()?.let {
60-
val targetClass = (it.parameters.single().type.classifier as KClass<*>).javaObjectType
61+
val targetClass = it.parameters.single().getKClass().javaObjectType
6162
return Deserializer(param.name, targetClass, it)
6263
}
6364

@@ -97,8 +98,7 @@ private fun <T : Any> KClass<T>.getDeserializer(): KFunction<T>? {
9798
}
9899

99100
private fun <T> Collection<KFunction<T>>.getDeserializerFromFunctions(): Collection<KFunction<T>> {
100-
return filter { it.annotations.any { annotation -> annotation is KColumnDeserializer } }
101-
.onEach { it.isAccessible = true }
101+
return getAnnotatedFunctions<KColumnDeserializer, T>().onEach { it.isAccessible = true }
102102
}
103103

104104
private fun <T : Any> deserializerFromConstructors(clazz: KClass<T>): Collection<KFunction<T>> {
@@ -113,14 +113,9 @@ private fun <T : Any> deserializerFromStaticMethods(clazz: KClass<T>): Collectio
113113

114114
@Suppress("UNCHECKED_CAST")
115115
private fun <T : Any> deserializerFromCompanionObject(clazz: KClass<T>): Collection<KFunction<T>> {
116-
return clazz.companionObjectInstance?.let { companionObject ->
117-
companionObject::class.functions
118-
.filter { it.annotations.any { annotation -> annotation is KColumnDeserializer } }
119-
.map { function ->
120-
KFunctionWithInstance(
121-
function,
122-
companionObject
123-
) as KFunction<T>
124-
}.toSet()
116+
return clazz.getAnnotatedFunctionsFromCompanionObject<KColumnDeserializer>()?.let { (instance, functions) ->
117+
functions.map {
118+
KFunctionWithInstance(it, instance) as KFunction<T>
119+
}
125120
} ?: emptySet()
126121
}

0 commit comments

Comments
 (0)