agta1991
01/14/2020, 9:13 PMromainbsl
01/15/2020, 10:08 AMagta1991
01/15/2020, 10:24 AMorg.kodein.di:kodein-di-erased:6.5.0
agta1991
01/15/2020, 10:27 AMUncaught Kotlin exception: kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozen kotlin.collections.HashMap@1761508
at 0 FitpuliShared 0x0000000111e768e7 kfun:kotlin.Throwable.<init>(kotlin.String?)kotlin.Throwable + 87
at 1 FitpuliShared 0x0000000111e70305 kfun:kotlin.Exception.<init>(kotlin.String?)kotlin.Exception + 85
at 2 FitpuliShared 0x0000000111e6fee5 kfun:kotlin.RuntimeException.<init>(kotlin.String?)kotlin.RuntimeException + 85
at 3 FitpuliShared 0x0000000111ea3235 kfun:kotlin.native.concurrent.InvalidMutabilityException.<init>(kotlin.String)kotlin.native.concurrent.InvalidMutabilityException + 85
at 4 FitpuliShared 0x0000000111ea4a08 ThrowInvalidMutabilityException + 680
at 5 FitpuliShared 0x0000000112185048 MutationCheck + 104
at 6 FitpuliShared 0x0000000111e86c2d kfun:kotlin.collections.HashMap.<set-length>#internal + 77
at 7 FitpuliShared 0x0000000111e8b73d kfun:kotlin.collections.HashMap.addKey$stdlib(#GENERIC)ValueType + 1181
at 8 FitpuliShared 0x0000000111e87d4d kfun:kotlin.collections.HashMap.put(#GENERIC;#GENERIC)#GENERIC? + 317
at 9 FitpuliShared 0x0000000112037300 kfun:org.kodein.di.bindings.StandardScopeRegistry.getOrCreate(kotlin.Any;kotlin.Boolean;kotlin.Function0<org.kodein.di.bindings.Reference<kotlin.Any>>)kotlin.Any + 1408
at 10 FitpuliShared 0x000000011203c880 kfun:org.kodein.di.bindings.Singleton.getFactory$lambda-3#internal + 528
at 11 FitpuliShared 0x000000011203ccfb kfun:org.kodein.di.bindings.Singleton.$getFactory$lambda-3$FUNCTION_REFERENCE$59.invoke#internal + 203
at 12 FitpuliShared 0x000000011202eb2c kfun:org.kodein.di.KodeinContainer.provider$<anonymous>_1#internal + 188
at 13 FitpuliShared 0x000000011202ef27 kfun:org.kodein.di.KodeinContainer.$provider$<anonymous>_1$FUNCTION_REFERENCE$47.invoke#internal + 151
at 14 FitpuliShared 0x0000000112041c99 kfun:org.kodein.di.internal.DKodeinBaseImpl.Instance(org.kodein.di.TypeToken<#GENERIC_kotlin.Any>;kotlin.Any?)Generic + 1001
at 15 FitpuliShared 0x00000001120bbddd kfun:hu.fitpuli.mpp.data.di.useCaseModule$lambda-3$lambda-1#internal + 1165
at 16 FitpuliShared 0x00000001120bd6fd kfun:hu.fitpuli.mpp.data.di.$useCaseModule$lambda-3$lambda-1$FUNCTION_REFERENCE$4.invoke#internal + 173
at 17 FitpuliShared 0x000000011203c3ec kfun:org.kodein.di.bindings.Singleton.getFactory$lambda-3$lambda-2$lambda-1#internal + 524
at 18 FitpuliShared 0x000000011203cf0b kfun:org.kodein.di.bindings.Singleton.$getFactory$lambda-3$lambda-2$lambda-1$FUNCTION_REFERENCE$60.invoke#internal + 155
at 19 FitpuliShared 0x0000000112036573 kfun:org.kodein.di.bindings.SingletonReference.make(kotlin.Function0<#GENERIC_kotlin.Any>)Generic + 275
at 20 FitpuliShared 0x000000011203c5e8 kfun:org.kodein.di.bindings.Singleton.getFactory$lambda-3$lambda-2#internal + 376
at 21 FitpuliShared 0x000000011203d10b kfun:org.kodein.di.bindings.Singleton.$getFactory$lambda-3$lambda-2$FUNCTION_REFERENCE$61.invoke#internal + 155
at 22 FitpuliShared 0x00000001120371f7 kfun:org.kodein.di.bindings.StandardScopeRegistry.getOrCreate(kotlin.Any;kotlin.Boolean;kotlin.Function0<org.kodein.di.bindings.Reference<kotlin.Any>>)kotlin.Any + 1143
at 23 FitpuliShared 0x000000011203c880 kfun:org.kodein.di.bindings.Singleton.getFactory$lambda-3#internal + 528
at 24 FitpuliShared 0x000000011203ccfb kfun:org.kodein.di.bindings.Singleton.$getFactory$lambda-3$FUNCTION_REFERENCE$59.invoke#internal + 203
at 25 FitpuliShared 0x000000011202eb2c kfun:org.kodein.di.KodeinContainer.provider$<anonymous>_1#internal + 188
at 26 FitpuliShared 0x000000011202ef27 kfun:org.kodein.di.KodeinContainer.$provider$<anonymous>_1$FUNCTION_REFERENCE$47.invoke#internal + 151
at 27 FitpuliShared 0x0000000112041c99 kfun:org.kodein.di.internal.DKodeinBaseImpl.Instance(org.kodein.di.TypeToken<#GENERIC_kotlin.Any>;kotlin.Any?)Generic + 1001
at 28 FitpuliShared 0x00000001120d9df1 kfun:hu.fitpuli.mpp.FrameworkImpl.<init>$lambda-1$lambda-0#internal + 1217
at 29 FitpuliShared 0x00000001120db4c3 kfun:hu.fitpuli.mpp.FrameworkImpl.$<init>$lambda-1$lambda-0$FUNCTION_REFERENCE$1.invoke#internal + 195
(lldb)
agta1991
01/15/2020, 10:27 AMimport co.touchlab.stately.collections.SharedHashMap
import hu.fitpuli.mpp.data.auth.User
import org.kodein.di.bindings.Scope
import org.kodein.di.bindings.ScopeRegistry
import org.kodein.di.bindings.StandardScopeRegistry
import kotlin.native.concurrent.ThreadLocal
@ThreadLocal
object UserSessionScope : Scope<User> {
private val sessionRegistry: MutableMap<User, ScopeRegistry> = SharedHashMap()
override fun getRegistry(context: User): ScopeRegistry = sessionRegistry.getOrPut(
key = context,
defaultValue = ::StandardScopeRegistry
)
}
And when the framework tries to add a singleton to the scope I get this error:romainbsl
01/15/2020, 10:35 AMsessionRegistry
in the getRegistry()
method ? something like:
override fun getRegistry(context: User): ScopeRegistry {
return synchronized(sessionRegistry) {
sessionRegistry.getOrPut(
key = context,
defaultValue = ::StandardScopeRegistry
)
}
}
romainbsl
01/15/2020, 10:46 AMagta1991
01/15/2020, 11:35 AMagta1991
01/15/2020, 5:16 PMromainbsl
01/15/2020, 5:52 PMagta1991
01/15/2020, 5:53 PMimport org.kodein.di.bindings.Scope
import org.kodein.di.bindings.ScopeRegistry
import org.kodein.di.bindings.StandardScopeRegistry
import org.kodein.di.internal.maySynchronized
class UserSessionScope : Scope<User> {
private val sessionRegistry: MutableMap<User, ScopeRegistry> = HashMap()
override fun getRegistry(context: User): ScopeRegistry = maySynchronized(sessionRegistry) {
sessionRegistry.getOrPut(
key = context,
defaultValue = ::StandardScopeRegistry
)
}
}
agta1991
01/15/2020, 5:54 PMromainbsl
01/15/2020, 5:56 PMagta1991
01/15/2020, 6:04 PM