Skip to content

Commit f170f10

Browse files
committed
Delegate single instance resolve to QuarkusTypeResolver
1 parent 1880fc6 commit f170f10

File tree

2 files changed

+13
-21
lines changed

2 files changed

+13
-21
lines changed

projects/kediatr-quarkus-starter/src/main/kotlin/com/trendyol/kediatr/quarkus/KediatRBeanProvider.kt

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,21 @@
1-
@file:Suppress("UNCHECKED_CAST")
2-
31
package com.trendyol.kediatr.quarkus
42

53
import com.trendyol.kediatr.*
64
import io.quarkus.runtime.Startup
75
import jakarta.enterprise.context.ApplicationScoped
8-
import jakarta.enterprise.inject.spi.BeanManager
96

107
class KediatRBeanProvider(
11-
private val beanManager: BeanManager,
12-
private val quarkusTypeScanner: QuarkusTypeScanner
8+
private val resolver: QuarkusTypeResolver
139
) : DependencyProvider {
14-
override fun <T> getSingleInstanceOf(clazz: Class<T>): T {
15-
val beans = beanManager.getBeans(clazz)
16-
val bean = beans.firstOrNull() ?: error("No bean found for class $clazz")
17-
val ctx = beanManager.createCreationalContext(bean)
18-
return beanManager.getReference(bean, clazz, ctx) as T
19-
}
10+
override fun <T> getSingleInstanceOf(clazz: Class<T>): T = resolver.resolveOrThrow(clazz)
2011

21-
override fun <T> getSubTypesOf(clazz: Class<T>): Collection<Class<T>> = quarkusTypeScanner.getSubTypesOf(clazz)
12+
override fun <T> getSubTypesOf(clazz: Class<T>): Collection<Class<T>> = resolver.resolveTypesOrEmpty(clazz)
2213
}
2314

2415
@ApplicationScoped
2516
class QuarkusMediatorBuilder {
2617
@ApplicationScoped
27-
fun kediatRBeanProvider(
28-
beanManager: BeanManager,
29-
quarkusTypeScanner: QuarkusTypeScanner
30-
): KediatRBeanProvider =
31-
KediatRBeanProvider(beanManager, quarkusTypeScanner)
18+
fun kediatRBeanProvider(resolver: QuarkusTypeResolver): KediatRBeanProvider = KediatRBeanProvider(resolver)
3219

3320
@ApplicationScoped
3421
@Startup

projects/kediatr-quarkus-starter/src/main/kotlin/com/trendyol/kediatr/quarkus/QuarkusTypeScanner.kt renamed to projects/kediatr-quarkus-starter/src/main/kotlin/com/trendyol/kediatr/quarkus/QuarkusTypeResolver.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,17 @@ import jakarta.enterprise.inject.spi.*
77
import java.lang.reflect.*
88

99
@ApplicationScoped
10-
class QuarkusTypeScanner(
10+
class QuarkusTypeResolver(
1111
private val beanManager: BeanManager
1212
) {
13-
fun <T> getSubTypesOf(
14-
clazz: Class<T>
15-
): Collection<Class<T>> = beanManager.getBeans(Any::class.java)
13+
fun <T> resolveOrThrow(clazz: Class<T>): T {
14+
val beans = beanManager.getBeans(clazz)
15+
val bean = beans.firstOrNull() ?: error("No bean found for class $clazz")
16+
val ctx = beanManager.createCreationalContext(bean)
17+
return beanManager.getReference(bean, clazz, ctx) as T
18+
}
19+
20+
fun <T> resolveTypesOrEmpty(clazz: Class<T>): Collection<Class<T>> = beanManager.getBeans(Any::class.java)
1621
.asSequence()
1722
.filterNot(::quarkusThings)
1823
.flatMap { it.types }

0 commit comments

Comments
 (0)