Update kodein

This commit is contained in:
Hubert Van De Walle 2020-07-02 23:18:00 +02:00
parent 02c6b2a0c5
commit fb471f8100
8 changed files with 46 additions and 47 deletions

View File

@ -14,7 +14,7 @@
<junit_version>5.6.2</junit_version>
<ktorm_version>3.0.0</ktorm_version>
<mariadb_version>2.6.0</mariadb_version>
<kodein_version>6.5.4</kodein_version>
<kodein_version>7.0.0</kodein_version>
<flyway_version>6.3.3</flyway_version>
<javajwt_version>3.10.2</javajwt_version>
<jbcrypt_version>0.4</jbcrypt_version>
@ -99,7 +99,7 @@
</dependency>
<dependency>
<groupId>org.kodein.di</groupId>
<artifactId>kodein-di-generic-jvm</artifactId>
<artifactId>kodein-di-jvm</artifactId>
<version>${kodein_version}</version>
</dependency>
<dependency>
@ -216,6 +216,14 @@
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<mainClass>${main.class}</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>

View File

@ -14,11 +14,11 @@ import be.vandewalleh.routing.TagRoutes
import be.vandewalleh.routing.UserRoutes
import be.vandewalleh.services.NoteService
import be.vandewalleh.services.UserService
import org.kodein.di.Kodein
import org.kodein.di.generic.*
import org.kodein.di.*
import org.kodein.di.DI
import org.slf4j.LoggerFactory
val mainModule = Kodein.Module("main") {
val mainModule = DI.Module("main") {
bind() from singleton { NoteService(instance()) }
bind() from singleton { UserService(instance(), instance()) }

View File

@ -6,32 +6,28 @@ import io.ktor.application.*
import io.ktor.routing.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import org.kodein.di.Kodein
import org.kodein.di.DI
import org.kodein.di.description
import org.kodein.di.generic.instance
import org.kodein.di.instance
import org.slf4j.Logger
import java.util.concurrent.TimeUnit
fun main() {
val kodein = Kodein {
import(mainModule)
}
val config by kodein.instance<Config>()
val logger by kodein.instance<Logger>()
val di = DI { import(mainModule) }
val config by di.instance<Config>()
val logger by di.instance<Logger>()
logger.info("Running application with configuration $config")
logger.debug("Kodein bindings\n${kodein.container.tree.bindings.description()}")
serve(kodein)
logger.debug("Kodein bindings\n${di.container.tree.bindings.description()}")
serve(di)
}
fun serve(kodein: Kodein) {
val config by kodein.instance<Config>()
val logger by kodein.instance<Logger>()
fun serve(di: DI) {
val config by di.instance<Config>()
val logger by di.instance<Logger>()
val env = applicationEngineEnvironment {
module {
module(kodein)
module(di)
}
log = logger
connector {
@ -46,14 +42,14 @@ fun serve(kodein: Kodein) {
}
fun Application.module(kodein: Kodein) {
val builders: Set<ApplicationBuilder> by kodein.instance()
fun Application.module(di: DI) {
val builders: Set<ApplicationBuilder> by di.instance()
builders.forEach {
it.builder(this)
}
val routingBuilders: Set<RoutingBuilder> by kodein.instance()
val routingBuilders: Set<RoutingBuilder> by di.instance()
routingBuilders.forEach {
routing(it.builder)
}

View File

@ -7,8 +7,6 @@ import io.ktor.application.*
import io.ktor.auth.*
import io.ktor.response.*
import io.ktor.routing.*
import org.kodein.di.Kodein
import org.kodein.di.generic.instance
class TagRoutes(noteService: NoteService) : RoutingBuilder({
authenticate {

View File

@ -17,9 +17,9 @@ import io.mockk.mockk
import org.amshove.kluent.*
import org.json.JSONObject
import org.junit.jupiter.api.*
import org.kodein.di.Kodein
import org.kodein.di.generic.bind
import org.kodein.di.generic.instance
import org.kodein.di.DI
import org.kodein.di.bind
import org.kodein.di.instance
import utils.*
import java.util.*
@ -28,7 +28,7 @@ class AuthControllerKtTest {
private val userService = mockk<UserService>()
private val kodein = Kodein {
private val kodein = DI {
import(mainModule, allowOverride = true)
bind<UserService>(overrides = true) with instance(userService)
}

View File

@ -11,9 +11,9 @@ import io.mockk.coEvery
import io.mockk.mockk
import org.amshove.kluent.*
import org.junit.jupiter.api.*
import org.kodein.di.Kodein
import org.kodein.di.generic.bind
import org.kodein.di.generic.instance
import org.kodein.di.DI
import org.kodein.di.bind
import org.kodein.di.instance
import utils.*
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ -42,7 +42,7 @@ class UserControllerKtTest {
}
private val kodein = Kodein {
private val kodein = DI {
import(mainModule, allowOverride = true)
bind<UserService>(overrides = true) with instance(userService)
}

View File

@ -18,12 +18,11 @@ import kotlinx.coroutines.runBlocking
import me.liuwj.ktorm.jackson.*
import org.amshove.kluent.*
import org.junit.jupiter.api.*
import org.kodein.di.Kodein
import org.kodein.di.generic.bind
import org.kodein.di.generic.instance
import org.kodein.di.generic.singleton
import org.kodein.di.DI
import org.kodein.di.bind
import org.kodein.di.instance
import org.kodein.di.singleton
import utils.KMariadbContainer
import javax.sql.DataSource
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class NoteServiceTest {
@ -32,7 +31,7 @@ class NoteServiceTest {
inner class DB {
private val mariadb = KMariadbContainer().apply { start() }
private val kodein = Kodein {
private val kodein = DI {
import(mainModule, allowOverride = true)
bind(overrides = true) from singleton { mariadb.datasource() }
}

View File

@ -3,16 +3,14 @@ package integration.services
import be.vandewalleh.features.Migration
import be.vandewalleh.mainModule
import be.vandewalleh.services.UserService
import com.zaxxer.hikari.HikariDataSource
import kotlinx.coroutines.runBlocking
import org.amshove.kluent.*
import org.junit.jupiter.api.*
import org.kodein.di.Kodein
import org.kodein.di.generic.bind
import org.kodein.di.generic.instance
import org.kodein.di.generic.singleton
import org.kodein.di.DI
import org.kodein.di.bind
import org.kodein.di.instance
import org.kodein.di.singleton
import utils.KMariadbContainer
import javax.sql.DataSource
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ -21,7 +19,7 @@ class UserServiceTest {
private val mariadb = KMariadbContainer().apply { start() }
private val kodein = Kodein {
private val kodein = DI {
import(mainModule, allowOverride = true)
bind( overrides = true) from singleton { mariadb.datasource() }
}