|
1 | | -@file:Suppress("UNCHECKED_CAST") |
2 | | - |
3 | 1 | package com.trendyol.kediatr.quarkus |
4 | 2 |
|
5 | 3 | import com.trendyol.kediatr.* |
6 | 4 | import io.quarkus.runtime.Startup |
7 | 5 | import jakarta.enterprise.context.ApplicationScoped |
8 | | -import jakarta.enterprise.inject.spi.BeanManager |
9 | 6 |
|
10 | 7 | class KediatRBeanProvider( |
11 | | - private val beanManager: BeanManager, |
12 | | - private val quarkusTypeScanner: QuarkusTypeScanner |
| 8 | + private val resolver: QuarkusTypeResolver |
13 | 9 | ) : 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) |
20 | 11 |
|
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) |
22 | 13 | } |
23 | 14 |
|
24 | 15 | @ApplicationScoped |
25 | 16 | class QuarkusMediatorBuilder { |
26 | 17 | @ApplicationScoped |
27 | | - fun kediatRBeanProvider( |
28 | | - beanManager: BeanManager, |
29 | | - quarkusTypeScanner: QuarkusTypeScanner |
30 | | - ): KediatRBeanProvider = |
31 | | - KediatRBeanProvider(beanManager, quarkusTypeScanner) |
| 18 | + fun kediatRBeanProvider(resolver: QuarkusTypeResolver): KediatRBeanProvider = KediatRBeanProvider(resolver) |
32 | 19 |
|
33 | 20 | @ApplicationScoped |
34 | 21 | @Startup |
|
0 commit comments