@@ -39,17 +39,6 @@ class KMapper<T : Any> private constructor(
3939 ParameterForMap .newInstance(it)
4040 }
4141
42- private fun throwExceptionOnNotInitialized (argumentBucket : ArgumentBucket ): Nothing {
43- val notInitializedIndexes = argumentBucket.notInitializedParameterIndexes
44- function.parameters
45- .filter { it.index in notInitializedIndexes }
46- .map { it.name }
47- .joinToString(" , " )
48- .let {
49- throw IllegalArgumentException (" Not passed arguments: $it " )
50- }
51- }
52-
5342 private fun bindArguments (argumentBucket : ArgumentBucket , src : Any ) {
5443 src::class .memberProperties.forEach outer@{ property ->
5544 // propertyが公開されていない場合は処理を行わない
@@ -68,7 +57,7 @@ class KMapper<T : Any> private constructor(
6857 parameterMap[alias ? : property.name]?.let {
6958 // javaGetterを呼び出す方が高速
7059 javaGetter.isAccessible = true
71- argumentBucket.setArgument(javaGetter.invoke(src)?.let { value -> mapObject(it, value) }, it.index )
60+ argumentBucket.setArgument(it.param, javaGetter.invoke(src)?.let { value -> mapObject(it, value) })
7261 // 終了判定
7362 if (argumentBucket.isInitialized) return
7463 }
@@ -79,7 +68,7 @@ class KMapper<T : Any> private constructor(
7968 src.forEach { (key, value) ->
8069 parameterMap[key]?.let { param ->
8170 // 取得した内容がnullでなければ適切にmapする
82- argumentBucket.setArgument(value?.let { mapObject(param, it) }, param.index )
71+ argumentBucket.setArgument(param.param, value?.let { mapObject(param, it) })
8372 // 終了判定
8473 if (argumentBucket.isInitialized) return
8574 }
@@ -88,39 +77,28 @@ class KMapper<T : Any> private constructor(
8877
8978 private fun bindArguments (argumentBucket : ArgumentBucket , srcPair : Pair <* , * >) {
9079 parameterMap[srcPair.first.toString()]?.let {
91- argumentBucket.setArgument(srcPair.second?.let { value ->
92- mapObject(
93- it,
94- value
95- )
96- }, it.index)
80+ argumentBucket.setArgument(it.param, srcPair.second?.let { value -> mapObject(it, value) })
9781 }
9882 }
9983
10084 fun map (srcMap : Map <String , Any ?>): T {
10185 val bucket: ArgumentBucket = function.getArgumentBucket()
10286 bindArguments(bucket, srcMap)
10387
104- if (! bucket.isInitialized) throwExceptionOnNotInitialized(bucket)
105-
10688 return function.call(bucket)
10789 }
10890
10991 fun map (srcPair : Pair <String , Any ?>): T {
11092 val bucket: ArgumentBucket = function.getArgumentBucket()
11193 bindArguments(bucket, srcPair)
11294
113- if (! bucket.isInitialized) throwExceptionOnNotInitialized(bucket)
114-
11595 return function.call(bucket)
11696 }
11797
11898 fun map (src : Any ): T {
11999 val bucket: ArgumentBucket = function.getArgumentBucket()
120100 bindArguments(bucket, src)
121101
122- if (! bucket.isInitialized) throwExceptionOnNotInitialized(bucket)
123-
124102 return function.call(bucket)
125103 }
126104
@@ -135,8 +113,6 @@ class KMapper<T : Any> private constructor(
135113 }
136114 }
137115
138- if (! bucket.isInitialized) throwExceptionOnNotInitialized(bucket)
139-
140116 return function.call(bucket)
141117 }
142118}
0 commit comments