Skip to content

Commit

Permalink
avoid blocling on lazy expression
Browse files Browse the repository at this point in the history
  • Loading branch information
arnaudgiuliani committed Dec 16, 2019
1 parent 6fb5ac1 commit 45ce7d2
Show file tree
Hide file tree
Showing 23 changed files with 35 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@ class CoffeeApp : KoinComponent {

fun main() {
startKoin {
printLogger()
modules(listOf(coffeeAppModule))
}
val coffeeShop = CoffeeApp()
measureDuration("Make coffee") {
measureDuration("Got Coffee") {
coffeeShop.maker.brew()
}
stopKoin()
Expand Down
2 changes: 1 addition & 1 deletion koin-projects/gradle/versions.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ext {
// Koin
koin_version = '2.1.0-alpha-8'
koin_version = '2.1.0-alpha-9'

// Kotlin
kotlin_version = '1.3.61'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ object ScopeCompat {
clazz: Class<T>,
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
): Lazy<T> = lazy { scope.getViewModel(owner, clazz.kotlin, qualifier, parameters) }
): Lazy<T> = lazy(LazyThreadSafetyMode.NONE) { scope.getViewModel(owner, clazz.kotlin, qualifier, parameters) }


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@ inline fun <reified T : ViewModel> Fragment.sharedViewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> =
lazy { getSharedViewModel<T>(qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { getSharedViewModel<T>(qualifier, parameters) }

fun <T : ViewModel> Fragment.sharedViewModel(
clazz: KClass<T>,
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
): Lazy<T> =
lazy { getSharedViewModel(clazz, qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { getSharedViewModel(clazz, qualifier, parameters) }

inline fun <reified T : ViewModel> Fragment.getSharedViewModel(
qualifier: Qualifier? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,14 @@ fun <T : ViewModel> LifecycleOwner.viewModel(
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(clazz, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(clazz, qualifier, parameters) }
}

inline fun <reified T : ViewModel> LifecycleOwner.viewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(T::class, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(T::class, qualifier, parameters) }
}

inline fun <reified T : ViewModel> LifecycleOwner.getViewModel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ inline fun <reified T : ViewModel> Koin.viewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { _scopeRegistry.rootScope.getViewModel<T>(owner, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { _scopeRegistry.rootScope.getViewModel<T>(owner, qualifier, parameters) }
}

inline fun <reified T : ViewModel> Koin.getViewModel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ inline fun <reified T : ViewModel> Scope.viewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(owner, T::class, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(owner, T::class, qualifier, parameters) }
}

inline fun <reified T : ViewModel> Scope.getViewModel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ fun ComponentCallbacks.getKoin() = when (this) {
inline fun <reified T : Any> ComponentCallbacks.inject(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
) = lazy { get<T>(qualifier, parameters) }
) = lazy(LazyThreadSafetyMode.NONE) { get<T>(qualifier, parameters) }

/**
* get given dependency for Android koincomponent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ object ScopeCompat {
clazz: Class<T>,
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
): Lazy<T> = lazy { scope.getViewModel(owner, clazz.kotlin, qualifier, parameters) }
): Lazy<T> = lazy(LazyThreadSafetyMode.NONE) { scope.getViewModel(owner, clazz.kotlin, qualifier, parameters) }


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@ inline fun <reified T : ViewModel> Fragment.sharedViewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> =
lazy { getSharedViewModel<T>(qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { getSharedViewModel<T>(qualifier, parameters) }

fun <T : ViewModel> Fragment.sharedViewModel(
clazz: KClass<T>,
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
): Lazy<T> =
lazy { getSharedViewModel(clazz, qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { getSharedViewModel(clazz, qualifier, parameters) }

inline fun <reified T : ViewModel> Fragment.getSharedViewModel(
qualifier: Qualifier? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ fun <T : ViewModel> LifecycleOwner.viewModel(
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(clazz, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(clazz, qualifier, parameters) }
}

inline fun <reified T : ViewModel> LifecycleOwner.viewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(T::class, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(T::class, qualifier, parameters) }
}

inline fun <reified T : ViewModel> LifecycleOwner.getViewModel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ fun <T : ViewModel> SavedStateRegistryOwner.viewModel(
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(clazz, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(clazz, qualifier, parameters) }
}

inline fun <reified T : ViewModel> SavedStateRegistryOwner.viewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(T::class, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(T::class, qualifier, parameters) }
}

inline fun <reified T : ViewModel> SavedStateRegistryOwner.getViewModel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ inline fun <reified T : ViewModel> Koin.viewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { _scopeRegistry.rootScope.getViewModel<T>(owner, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { _scopeRegistry.rootScope.getViewModel<T>(owner, qualifier, parameters) }
}

inline fun <reified T : ViewModel> Koin.viewModel(
owner: SavedStateRegistryOwner,
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { _scopeRegistry.rootScope.getViewModel<T>(owner, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { _scopeRegistry.rootScope.getViewModel<T>(owner, qualifier, parameters) }
}

inline fun <reified T : ViewModel> Koin.getViewModel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,15 @@ inline fun <reified T : ViewModel> Scope.viewModel(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(owner,T::class,qualifier,parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(owner,T::class,qualifier,parameters) }
}

inline fun <reified T : ViewModel> Scope.viewModel(
owner: SavedStateRegistryOwner,
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { getViewModel(owner,T::class,qualifier,parameters) }
return lazy(LazyThreadSafetyMode.NONE) { getViewModel(owner,T::class,qualifier,parameters) }
}

inline fun <reified T : ViewModel> Scope.getViewModel(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ inline fun <reified T> KoinComponent.inject(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> =
lazy { getKoin().get<T>(qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { getKoin().get<T>(qualifier, parameters) }

/**
* Get instance instance from Koin by Primary Type P, as secondary type S
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package org.koin.core.logger
/**
* No loggings Logger
*/
class EmptyLogger : Logger(Level.ERROR) {
class EmptyLogger : Logger(Level.NONE) {

override fun log(level: Level, msg: MESSAGE) {}
override fun log(level: Level, msg: MESSAGE) {
System.err.println("should see this - $level - $msg")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ const val KOIN_TAG = "[Koin]"
* Log Level
*/
enum class Level {
DEBUG, INFO, ERROR
DEBUG, INFO, ERROR, NONE
}

typealias MESSAGE = String
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ data class Scope(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> =
lazy { get<T>(qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { get<T>(qualifier, parameters) }

/**
* Lazy inject a Koin instance if available
Expand All @@ -73,7 +73,7 @@ data class Scope(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T?> =
lazy { getOrNull<T>(qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { getOrNull<T>(qualifier, parameters) }

/**
* Get a Koin instance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ object KoinJavaComponent {
qualifier: Qualifier? = null,
parameters: ParametersDefinition? = null
): Lazy<T> {
return lazy { get(clazz, qualifier, parameters) }
return lazy(LazyThreadSafetyMode.NONE) { get(clazz, qualifier, parameters) }
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ inline fun <reified T : Any> Application.inject(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
) =
lazy { get<T>(qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { get<T>(qualifier, parameters) }

/**
* Retrieve given dependency for KoinComponent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ inline fun <reified T : Any> Route.inject(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
) =
lazy { get<T>(qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { get<T>(qualifier, parameters) }

/**
* Retrieve given dependency for KoinComponent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ inline fun <reified T : Any> Routing.inject(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
) =
lazy { get<T>(qualifier, parameters) }
lazy(LazyThreadSafetyMode.NONE) { get<T>(qualifier, parameters) }

/**
* Retrieve given dependency for KoinComponent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ inline fun <reified T> KoinTest.get(
inline fun <reified T> KoinTest.inject(
qualifier: Qualifier? = null,
noinline parameters: ParametersDefinition? = null
): Lazy<T> = lazy { get<T>(qualifier, parameters) }
): Lazy<T> = lazy(LazyThreadSafetyMode.NONE) { get<T>(qualifier, parameters) }

0 comments on commit 45ce7d2

Please sign in to comment.