Skip to content

Commit d6490ad

Browse files
authored
Type extraction should work with Inherited Handlers for Parameterized Commands (#29)
* Type extraction should work with Inherited Handlers for Parameterized Type * Bump the version
1 parent b81e31c commit d6490ad

File tree

8 files changed

+18
-16
lines changed

8 files changed

+18
-16
lines changed

kediatr-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.trendyol</groupId>
88
<artifactId>kediatr-core</artifactId>
9-
<version>1.1.1</version>
9+
<version>1.1.2</version>
1010
<packaging>jar</packaging>
1111

1212
<parent>

kediatr-core/src/main/kotlin/com/trendyol/kediatr/Registrar.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.trendyol.kediatr
22

33
import java.lang.reflect.ParameterizedType
4+
import java.lang.reflect.TypeVariable
45

56
@Suppress("UNCHECKED_CAST")
67
abstract class Registrar {
@@ -23,15 +24,15 @@ abstract class Registrar {
2324

2425
handler.genericInterfaces
2526
.filterIsInstance<ParameterizedType>()
26-
.map { extractParameter<TParameter>(it) }
27+
.map { extractParameter(it) }
2728
.forEach { registrar(it, handler) }
2829

2930
when (handler.genericSuperclass) {
3031
is ParameterizedType -> {
3132
val inheritedHandler = (handler.genericSuperclass as ParameterizedType).rawType as Class<*>
3233
inheritedHandler.genericInterfaces
3334
.filterIsInstance<ParameterizedType>()
34-
.map { extractParameter<TParameter>(handler.genericSuperclass as ParameterizedType) }
35+
.map { extractParameter(handler.genericSuperclass as ParameterizedType) }
3536
.forEach { registrar(it, handler) }
3637
}
3738

@@ -40,7 +41,7 @@ abstract class Registrar {
4041
if (interfaceOrBaseClass.isAssignableFrom(inheritedHandler)) {
4142
inheritedHandler.genericInterfaces
4243
.filterIsInstance<ParameterizedType>()
43-
.map { extractParameter<TParameter>(it) }
44+
.map { extractParameter(it) }
4445
.forEach { registrar(it, handler) }
4546
}
4647
}
@@ -63,9 +64,10 @@ abstract class Registrar {
6364
registrar(handler)
6465
}
6566

66-
protected fun <T> extractParameter(genericInterface: ParameterizedType): Class<out T> =
67+
protected fun extractParameter(genericInterface: ParameterizedType): Class<*> =
6768
when (val typeArgument = genericInterface.actualTypeArguments[0]) {
68-
is ParameterizedType -> typeArgument.rawType as Class<out T>
69-
else -> typeArgument as Class<out T>
69+
is ParameterizedType -> typeArgument.rawType as Class<*>
70+
is TypeVariable<*> -> extractParameter((genericInterface.rawType as Class<*>).genericInterfaces[0] as ParameterizedType)
71+
else -> typeArgument as Class<*>
7072
}
7173
}

kediatr-core/src/test/kotlin/com/trendyol/CommandHandlerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import com.trendyol.kediatr.CommandBusBuilder
77
import com.trendyol.kediatr.CommandHandler
88
import com.trendyol.kediatr.HandlerNotFoundException
99
import kotlinx.coroutines.runBlocking
10-
import org.junit.Test
1110
import org.junit.jupiter.api.Nested
11+
import org.junit.jupiter.api.Test
1212
import kotlin.test.assertEquals
1313
import kotlin.test.assertFailsWith
1414
import kotlin.test.assertNotNull

kediatr-core/src/test/kotlin/com/trendyol/PipelineBehaviorTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.trendyol
33
import com.trendyol.kediatr.*
44
import kotlinx.coroutines.delay
55
import kotlinx.coroutines.runBlocking
6-
import org.junit.Test
6+
import org.junit.jupiter.api.Test
77
import org.junit.jupiter.api.assertThrows
88
import kotlin.test.assertEquals
99
import kotlin.test.assertTrue

kediatr-koin-starter/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<groupId>com.trendyol</groupId>
99
<artifactId>kediatr-koin-starter</artifactId>
10-
<version>1.1.1</version>
10+
<version>1.1.2</version>
1111
<packaging>jar</packaging>
1212

1313
<properties>
@@ -195,7 +195,7 @@
195195
<dependency>
196196
<groupId>com.trendyol</groupId>
197197
<artifactId>kediatr-core</artifactId>
198-
<version>1.0.18</version>
198+
<version>1.1.2</version>
199199
</dependency>
200200
<dependency>
201201
<groupId>io.insert-koin</groupId>

kediatr-quarkus-starter/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<groupId>com.trendyol</groupId>
99
<artifactId>kediatr-quarkus-starter</artifactId>
10-
<version>1.1.1</version>
10+
<version>1.1.2</version>
1111
<packaging>jar</packaging>
1212

1313
<parent>
@@ -219,7 +219,7 @@
219219
<dependency>
220220
<groupId>com.trendyol</groupId>
221221
<artifactId>kediatr-core</artifactId>
222-
<version>1.0.18</version>
222+
<version>1.1.2</version>
223223
</dependency>
224224
</dependencies>
225225
<build>

kediatr-spring-starter/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.trendyol</groupId>
88
<artifactId>kediatr-spring-starter</artifactId>
9-
<version>1.1.1</version>
9+
<version>1.1.2</version>
1010
<packaging>jar</packaging>
1111

1212
<parent>
@@ -274,7 +274,7 @@
274274
<dependency>
275275
<groupId>com.trendyol</groupId>
276276
<artifactId>kediatr-core</artifactId>
277-
<version>1.0.18</version>
277+
<version>1.1.2</version>
278278
</dependency>
279279

280280
<dependency>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.trendyol</groupId>
88
<artifactId>kediatR</artifactId>
9-
<version>1.0.5</version>
9+
<version>1.1.2</version>
1010
<modules>
1111
<module>kediatr-core</module>
1212
<module>kediatr-spring-starter</module>

0 commit comments

Comments
 (0)