Skip to content

Commit

Permalink
Add Gradle Version catalog + upgrade dependencies (#424)
Browse files Browse the repository at this point in the history
  • Loading branch information
Romain Boisselle committed Nov 29, 2022
1 parent d51db04 commit a480fe3
Show file tree
Hide file tree
Showing 16 changed files with 128 additions and 85 deletions.
Expand Up @@ -5,7 +5,7 @@ plugins {
dependencies {
api(project(":framework:android:kodein-di-framework-android-core"))

implementation("com.android.support:appcompat-v7:28.0.0")
implementation(libs.android.appcompat)
}

kodeinUpload {
Expand Down
Expand Up @@ -4,11 +4,11 @@ plugins {

dependencies {
api(project(":framework:android:kodein-di-framework-android-x"))
implementation("androidx.appcompat:appcompat:1.3.1")
implementation("androidx.fragment:fragment-ktx:1.3.6")
val lifecycleVersion = "2.3.0"
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion")
implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycleVersion")

implementation(libs.android.x.appcompat)
implementation(libs.android.x.fragment.ktx)
implementation(libs.android.x.lifecycle.viewmodel.ktx)
implementation(libs.android.x.lifecycle.viewmodel.savedstate)
}

kodeinUpload {
Expand Down
Expand Up @@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.createViewModelLazy
import androidx.lifecycle.*
import androidx.lifecycle.viewmodel.CreationExtras
import org.kodein.di.DI
import org.kodein.di.DIAware
import org.kodein.di.direct
Expand Down Expand Up @@ -74,13 +75,15 @@ inline fun <F, reified VM> F.viewModelWithSavedStateHandle(
tag: Any? = null,
): Lazy<VM> where F : Fragment, F : DIAware, VM : ViewModel {
return createViewModelLazy(
VM::class,
{ ownerProducer().viewModelStore},
{ object : AbstractSavedStateViewModelFactory(this, arguments) {
override fun <T : ViewModel> create(key: String, modelClass: Class<T>, handle: SavedStateHandle): T {
val factory = direct.Factory(generic<SavedStateHandle>(), generic<VM>(), tag)
return factory(handle) as T
viewModelClass = VM::class,
storeProducer = { ownerProducer().viewModelStore},
factoryProducer = {
object : AbstractSavedStateViewModelFactory(this, arguments) {
override fun <T : ViewModel> create(key: String, modelClass: Class<T>, handle: SavedStateHandle): T {
val factory = direct.Factory(generic<SavedStateHandle>(), generic<VM>(), tag)
return factory(handle) as T
}
}
} }
}
)
}
Expand Up @@ -4,10 +4,10 @@ plugins {

dependencies {
api(project(":framework:android:kodein-di-framework-android-x"))
implementation("androidx.appcompat:appcompat:1.3.1")
implementation("androidx.fragment:fragment-ktx:1.3.6")
val lifecycleVersion = "2.3.0"
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion")

implementation(libs.android.x.appcompat)
implementation(libs.android.x.fragment.ktx)
implementation(libs.android.x.lifecycle.viewmodel.ktx)
}

kodeinUpload {
Expand Down
Expand Up @@ -74,13 +74,15 @@ inline fun <F, reified VM> F.viewModel(
tag: Any? = null,
): Lazy<VM> where F : Fragment, F : DIAware, VM : ViewModel {
return createViewModelLazy(
VM::class,
{ ownerProducer().viewModelStore },
{ object : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
val vmProvider = direct.provider<VM>(tag)
return vmProvider() as T
viewModelClass = VM::class,
storeProducer = { ownerProducer().viewModelStore },
factoryProducer = {
object : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
val vmProvider = direct.provider<VM>(tag)
return vmProvider() as T
}
}
} }
}
)
}
Expand Up @@ -5,7 +5,7 @@ plugins {
dependencies {
api(project(":framework:android:kodein-di-framework-android-core"))

implementation("androidx.appcompat:appcompat:1.3.0")
implementation(libs.android.x.appcompat)
}

kodeinUpload {
Expand Down
@@ -1,39 +1,46 @@
package org.kodein.di.android.x

import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.OnLifecycleEvent
import org.kodein.di.bindings.*
import org.kodein.di.internal.synchronizedIfNull
import java.util.*

open class AndroidLifecycleScope private constructor(private val newRegistry: () -> ScopeRegistry) : Scope<LifecycleOwner> {
open class AndroidLifecycleScope private constructor(
private val newRegistry: () -> ScopeRegistry
) : Scope<LifecycleOwner>, DefaultLifecycleObserver {

companion object multiItem: AndroidLifecycleScope(::StandardScopeRegistry)
companion object multiItem : AndroidLifecycleScope(::StandardScopeRegistry)

object singleItem: AndroidLifecycleScope(::SingleItemScopeRegistry)
object singleItem : AndroidLifecycleScope(::SingleItemScopeRegistry)

private val map = HashMap<LifecycleOwner, ScopeRegistry>()

override fun getRegistry(context: LifecycleOwner): ScopeRegistry {
return synchronizedIfNull(
lock = map,
lock = map,
predicate = { map[context] },
ifNotNull = { it },
ifNull = {
val registry = newRegistry()
map[context] = registry
context.lifecycle.addObserver(object : LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestroy() {
context.lifecycle.removeObserver(this)
registry.clear()
map.remove(context)
context.lifecycle.addObserver(
LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_DESTROY) {
context.lifecycle.removeObserver(this)
registry.clear()
map.remove(context)
}
}
})
)
registry
}
)
}

override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
}
}
@@ -1,6 +1,6 @@
plugins {
id("org.jetbrains.compose") version "1.2.1"
id("org.kodein.library.mpp-with-android")
alias(libs.plugins.compose)
}

kodein {
Expand All @@ -17,7 +17,7 @@ kodein {
add(kodeinTargets.jvm.android) {
main.dependencies {
api(project(":framework:android:kodein-di-framework-android-x"))
api("androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1")
api(libs.android.x.lifecycle.viewmodel.compose)
}
}

Expand Down
@@ -1,5 +1,3 @@
val ktorVersion = "2.0.0"

plugins {
id("org.kodein.library.jvm")
}
Expand All @@ -9,13 +7,11 @@ repositories {
}

dependencies {
fun ktor(module: String = "", version: String = ktorVersion) = "io.ktor:ktor$module:$version"

api(project(":framework:ktor:kodein-di-framework-ktor-server-jvm"))
implementation(ktor("-server-core"))
testImplementation(ktor("-server-tests"))
testImplementation(ktor("-server-default-headers"))

implementation(libs.ktor.server.core)
testImplementation(libs.ktor.test.server)
testImplementation(libs.ktor.test.server.default.headers)
}

kodeinUpload {
Expand Down
@@ -1,5 +1,3 @@
val ktorVersion = "2.0.0"

plugins {
id("org.kodein.library.jvm")
}
Expand All @@ -9,13 +7,11 @@ repositories {
}

dependencies {
fun ktor(module: String = "", version: String = ktorVersion) = "io.ktor:ktor$module:$version"

api(project(":kodein-di"))
implementation(ktor("-server-core"))
implementation(ktor("-server-sessions"))
testImplementation(ktor("-server-tests"))
testImplementation(ktor("-server-default-headers"))
implementation(libs.ktor.server.core)
implementation(libs.ktor.server.sessions)
testImplementation(libs.ktor.test.server)
testImplementation(libs.ktor.test.server.default.headers)
}

kodeinUpload {
Expand Down
Expand Up @@ -2,34 +2,28 @@ import org.jetbrains.kotlin.gradle.tasks.*

plugins {
id("org.kodein.library.jvm")
id("org.openjfx.javafxplugin") version "0.0.7"
alias(libs.plugins.openjfx)
}

javafx {
version = "12.0.1"
version = libs.versions.javafx.version.get()
modules("javafx.controls")
}

tasks.withType<KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}

// TODO to be remove in 7.0 in benefit of kodein-internal-gradle 1.8 source compatibility
project.withConvention(JavaPluginConvention::class) {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

tasks.withType<Test> {
useJUnitPlatform()
}

dependencies {
api(project(":kodein-di"))
implementation("no.tornado:tornadofx:1.7.20")
implementation("org.jetbrains.kotlin:kotlin-reflect:${kodeinVersions.kotlin}")
testImplementation("org.testfx:testfx-core:4.0.4-alpha")
testImplementation("org.junit.jupiter:junit-jupiter:5.6.0")
implementation(libs.tornadofx)
implementation(libs.kotlin.reflect)
testImplementation(libs.testfx)
testImplementation(libs.junit.jupiter)
}

kodeinUpload {
Expand Down
54 changes: 54 additions & 0 deletions gradle/libs.versions.toml
@@ -0,0 +1,54 @@
[versions]
# Core
kaverit-version = "2.2.1"
kotlin-version = "1.7.20"
# Android
android-appcompat-version = "28.0.0"
androidx-appcompat-version = "1.5.1"
androidx-fragment-version = "1.5.4"
androidx-lifecycle-version = "2.5.1"
# Compose
compose-version = "1.2.1"
# Ktor
ktor-version = "2.1.3"
# JxInject
javax-inject-version = "1"
# TornadoFX
openjfx-version = "0.0.7"
javafx-version = "12.0.1"
tornadofx-version = "1.7.20"
testfx-version = "4.0.4-alpha"
# Test
junit-version = "4.13.2"
junit-jupiter-version = "5.6.0"

[libraries]
# Core
kosi-kaverit = { module = "org.kodein.type:kaverit", version.ref = "kaverit-version" }
# Android
android-appcompat = { module = "com.android.support:appcompat-v7", version.ref = "android-appcompat-version" }
android-x-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat-version" }
android-x-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment-version" }
android-x-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "androidx-lifecycle-version" }
android-x-lifecycle-viewmodel-savedstate = { module = "androidx.lifecycle:lifecycle-viewmodel-savedstate", version.ref = "androidx-lifecycle-version" }
android-x-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle-version" }
# Ktor
ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor-version" }
ktor-server-sessions = { module = "io.ktor:ktor-server-sessions", version.ref = "ktor-version" }
ktor-test-server = { module = "io.ktor:ktor-server-tests", version.ref = "ktor-version" }
ktor-test-server-default-headers = { module = "io.ktor:ktor-server-default-headers", version.ref = "ktor-version" }
# JxInject
javax-inject = { module = "javax.inject:javax.inject", version.ref = "javax-inject-version" }
# TornadoFX
tornadofx = { module = "no.tornado:tornadofx", version.ref = "tornadofx-version" }
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin-version" }
testfx = { module = "org.testfx:testfx-core", version.ref = "testfx-version" }
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter-version" }
# Test
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin-version" }
kotlin-test-junit = { module = "org.jetbrains.kotlin:kotlin-test-junit", version.ref = "kotlin-version" }
junit = { module = "junit:junit", version.ref = "junit-version" }

[plugins]
openjfx = { id = "org.openjfx.javafxplugin", version.ref = "openjfx-version" }
compose = { id = "org.jetbrains.compose", version.ref = "compose-version" }
4 changes: 2 additions & 2 deletions kodein-di-conf/build.gradle.kts
Expand Up @@ -27,6 +27,6 @@ kodein {
}

kodeinUpload {
name = "Kodein-Conf"
description = "Kodein that can be configured / mutated"
name = "Kodein-JxInject"
description = "Kodein that can be use with JSR-330: Using reflexivity to auto-inject"
}
2 changes: 1 addition & 1 deletion kodein-di-jxinject-jvm/build.gradle.kts
Expand Up @@ -4,7 +4,7 @@ plugins {

dependencies {
api(project(":kodein-di"))
api("javax.inject:javax.inject:1")
api(libs.javax.inject)

testImplementation(project(":test-utils"))
}
Expand Down
2 changes: 1 addition & 1 deletion kodein-di/build.gradle.kts
Expand Up @@ -7,7 +7,7 @@ kodein {

common {
main.dependencies {
api("org.kodein.type:kaverit:2.2.1")
api(libs.kosi.kaverit)
}
test.dependencies {
implementation(project(":test-utils"))
Expand Down
17 changes: 4 additions & 13 deletions test-utils/build.gradle.kts
@@ -1,4 +1,3 @@

plugins {
id("org.kodein.mpp")
}
Expand All @@ -7,25 +6,17 @@ kodein {
kotlin {

common.main.dependencies {
api("org.jetbrains.kotlin:kotlin-test-common")
api("org.jetbrains.kotlin:kotlin-test-annotations-common")
// api(project(":kodein-di"))
api(libs.kotlin.test)
}

add(kodeinTargets.jvm.jvm) {
main.dependencies {
api("org.jetbrains.kotlin:kotlin-test")
api("org.jetbrains.kotlin:kotlin-test-junit")
api("junit:junit:4.12")
api(libs.kotlin.test.junit)
api(libs.junit)
}
}

add(kodeinTargets.js.js) {
main.dependencies {
api("org.jetbrains.kotlin:kotlin-test-js")
api("org.jetbrains.kotlin:kotlin-stdlib-js")
}
}
add(kodeinTargets.js.js)

add(kodeinTargets.native.all)

Expand Down

0 comments on commit a480fe3

Please sign in to comment.