mirror of
https://github.com/tursom/TursomServer.git
synced 2025-03-13 11:20:10 +08:00
fix KtormTableName target bug
This commit is contained in:
parent
086079fa8d
commit
9d8b6e3f71
@ -7,14 +7,16 @@ class ArrayContextEnv : ContextEnv {
|
||||
val envId = ContextEnv.newEnvId()
|
||||
private val idGenerator = AtomicInteger()
|
||||
|
||||
override fun emptyContext(): Context = ArrayContext(envId, idGenerator, empty = true)
|
||||
override fun newContext(): Context = ArrayContext(envId, idGenerator)
|
||||
override fun <T> newKey() = ContextKey<T>(envId, idGenerator.getAndIncrement())
|
||||
|
||||
private class ArrayContext(
|
||||
override val envId: Int,
|
||||
private val idGenerator: AtomicInteger,
|
||||
empty: Boolean = false,
|
||||
) : Context {
|
||||
private var array = arrayOfNulls<Any?>(idGenerator.get())
|
||||
private var array = if (empty) emptyArray() else arrayOfNulls<Any?>(idGenerator.get())
|
||||
|
||||
override operator fun <T> get(key: ContextKey<T>): T? {
|
||||
checkEnv(key)
|
||||
|
@ -3,6 +3,17 @@ package cn.tursom.core.context
|
||||
|
||||
interface Context {
|
||||
val envId: Int
|
||||
operator fun <T> get(key: DefaultContextKey<T>): T {
|
||||
var value = get(key as ContextKey<T>)
|
||||
return if (value != null) {
|
||||
value
|
||||
} else {
|
||||
value = key.provider()
|
||||
set(key, value)
|
||||
value
|
||||
}
|
||||
}
|
||||
|
||||
operator fun <T> get(key: ContextKey<T>): T?
|
||||
operator fun <T> set(key: ContextKey<T>, value: T)
|
||||
|
||||
|
@ -8,6 +8,7 @@ interface ContextEnv {
|
||||
fun newEnvId() = contextEnvIdGenerator.incrementAndGet()
|
||||
}
|
||||
|
||||
fun emptyContext(): Context = newContext()
|
||||
fun newContext(): Context
|
||||
fun <T> newKey(): ContextKey<T>
|
||||
}
|
||||
|
@ -1,9 +1,11 @@
|
||||
package cn.tursom.core.context
|
||||
|
||||
data class ContextKey<T>(
|
||||
open class ContextKey<T>(
|
||||
val envId: Int,
|
||||
val id: Int,
|
||||
) {
|
||||
fun withDefault(provider: () -> T) = DefaultContextKey(envId, id, provider)
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return id
|
||||
}
|
||||
@ -17,4 +19,8 @@ data class ContextKey<T>(
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "ContextKey(envId=$envId, id=$id)"
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,3 @@
|
||||
package cn.tursom.core.context
|
||||
|
||||
class DefaultContextKey<T>(envId: Int, id: Int, val provider: () -> T) : ContextKey<T>(envId, id)
|
Loading…
Reference in New Issue
Block a user