Add default implementation to the provider.
This commit is contained in:
parent
b5b0a6898e
commit
617612bf67
18
CHANGELOG.md
Normal file
18
CHANGELOG.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Changelog
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
### Added
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Empty query in Name is null instead of ""
|
||||||
|
- Provider provides an empty map instead of error by default
|
||||||
|
|
||||||
|
### Deprecated
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
- Functional server prototype
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Global context CoroutineScope resolution
|
||||||
|
|
||||||
|
### Security
|
@ -4,9 +4,10 @@ plugins {
|
|||||||
id("scientifik.jvm") version toolsVersion apply false
|
id("scientifik.jvm") version toolsVersion apply false
|
||||||
id("scientifik.publish") version toolsVersion apply false
|
id("scientifik.publish") version toolsVersion apply false
|
||||||
id("org.jetbrains.dokka") version "0.10.1"
|
id("org.jetbrains.dokka") version "0.10.1"
|
||||||
|
id("org.jetbrains.changelog") version "0.4.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
val dataforgeVersion by extra("0.1.9-dev")
|
val dataforgeVersion by extra("0.1.9-dev-1")
|
||||||
|
|
||||||
val bintrayRepo by extra("dataforge")
|
val bintrayRepo by extra("dataforge")
|
||||||
val githubProject by extra("dataforge-core")
|
val githubProject by extra("dataforge-core")
|
||||||
|
@ -8,6 +8,7 @@ import hep.dataforge.provider.Provider
|
|||||||
import hep.dataforge.provider.top
|
import hep.dataforge.provider.top
|
||||||
import hep.dataforge.values.Value
|
import hep.dataforge.values.Value
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.SupervisorJob
|
import kotlinx.coroutines.SupervisorJob
|
||||||
import mu.KLogger
|
import mu.KLogger
|
||||||
@ -92,7 +93,7 @@ open class Context(
|
|||||||
config.action()
|
config.action()
|
||||||
}
|
}
|
||||||
|
|
||||||
override val coroutineContext: CoroutineContext by lazy {
|
open override val coroutineContext: CoroutineContext by lazy {
|
||||||
(parent ?: Global).coroutineContext.let { parenContext ->
|
(parent ?: Global).coroutineContext.let { parenContext ->
|
||||||
parenContext + SupervisorJob(parenContext[Job])
|
parenContext + SupervisorJob(parenContext[Job])
|
||||||
}
|
}
|
||||||
@ -130,6 +131,9 @@ inline fun <reified T : Any> Context.content(target: String): Map<Name, T> =
|
|||||||
* A global root context. Closing [Global] terminates the framework.
|
* A global root context. Closing [Global] terminates the framework.
|
||||||
*/
|
*/
|
||||||
object Global : Context("GLOBAL".asName(), null) {
|
object Global : Context("GLOBAL".asName(), null) {
|
||||||
|
|
||||||
|
override val coroutineContext: CoroutineContext = GlobalScope.coroutineContext + SupervisorJob()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Closing all contexts
|
* Closing all contexts
|
||||||
*
|
*
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
package hep.dataforge.provider
|
package hep.dataforge.provider
|
||||||
|
|
||||||
import hep.dataforge.names.Name
|
import hep.dataforge.names.Name
|
||||||
import hep.dataforge.names.toName
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A marker utility interface for providers.
|
* A marker utility interface for providers.
|
||||||
@ -64,16 +63,16 @@ fun Provider.provide(path: Path, targetOverride: String? = null): Any? {
|
|||||||
/**
|
/**
|
||||||
* Type checked provide
|
* Type checked provide
|
||||||
*/
|
*/
|
||||||
inline fun <reified T : Any> Provider.provide(path: String): T? {
|
inline fun <reified T : Any> Provider.provide(path: String, targetOverride: String? = null): T? {
|
||||||
return provide(Path.parse(path)) as? T
|
return provide(Path.parse(path), targetOverride) as? T
|
||||||
}
|
}
|
||||||
|
//
|
||||||
inline fun <reified T : Any> Provider.provide(target: String, name: Name): T? {
|
//inline fun <reified T : Any> Provider.provide(target: String, name: Name): T? {
|
||||||
return provide(PathToken(name, target).toPath()) as? T
|
// return provide(PathToken(name, target).toPath()) as? T
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
inline fun <reified T : Any> Provider.provide(target: String, name: String): T? =
|
//inline fun <reified T : Any> Provider.provide(target: String, name: String): T? =
|
||||||
provide(target, name.toName())
|
// provide(target, name.toName())
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Typed top level content
|
* Typed top level content
|
||||||
|
@ -26,11 +26,11 @@ inline fun <reified T : Any> Provider.provideByType(name: String): T? {
|
|||||||
val target = Types[T::class]
|
val target = Types[T::class]
|
||||||
return provide(target, name)
|
return provide(target, name)
|
||||||
}
|
}
|
||||||
|
//
|
||||||
inline fun <reified T : Any> Provider.provideByType(name: Name): T? {
|
//inline fun <reified T : Any> Provider.provideByType(name: Name): T? {
|
||||||
val target = Types[T::class]
|
// val target = Types[T::class]
|
||||||
return provide(target, name)
|
// return provide(target, name)
|
||||||
}
|
//}
|
||||||
|
|
||||||
inline fun <reified T : Any> Provider.top(): Map<Name, T> {
|
inline fun <reified T : Any> Provider.top(): Map<Name, T> {
|
||||||
val target = Types[T::class]
|
val target = Types[T::class]
|
||||||
|
Loading…
Reference in New Issue
Block a user