Skip to content
This repository has been archived by the owner on Jan 5, 2020. It is now read-only.

Commit

Permalink
add more extensions for Jankson
Browse files Browse the repository at this point in the history
  • Loading branch information
NikkyAI committed Jun 28, 2018
1 parent 19e4136 commit 0ebb89c
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 15 deletions.
5 changes: 5 additions & 0 deletions core/src/main/kotlin/matterlink/Util.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package matterlink

import blue.endless.jankson.Jankson
import blue.endless.jankson.JsonObject
import matterlink.config.cfg
import java.io.PrintWriter
Expand Down Expand Up @@ -60,3 +61,7 @@ fun <T : Any> JsonObject.getOrDefault(key: String, default: T, comment: String?
// instance.info("type: ${default.javaClass.name} key: $key json: >>>${this.getObject(key)?.toJson()}<<< default: $default")
return putDefault(key, default, comment)!!
}

inline fun <reified T: Any> Jankson.Builder.registerTypeAdapter(noinline adapter: (JsonObject) -> T) = this.registerTypeAdapter(T::class.java, adapter)

inline fun <reified T: Any> Jankson.Builder.registerPrimitiveTypeAdapter(noinline adapter: (Any) -> T) = this.registerPrimitiveTypeAdapter(T::class.java, adapter)
23 changes: 10 additions & 13 deletions core/src/main/kotlin/matterlink/config/BaseConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import blue.endless.jankson.impl.SyntaxError
import matterlink.bridge.MessageHandlerInst
import matterlink.getOrDefault
import matterlink.instance
import matterlink.registerTypeAdapter
import matterlink.stackTraceString
import java.io.File
import java.io.FileNotFoundException
Expand Down Expand Up @@ -119,7 +120,7 @@ data class BaseConfig(val rootDir: File) {
companion object {
val jankson = Jankson
.builder()
.registerTypeAdapter(MatterLinkConfig::class.java) {
.registerTypeAdapter {
MatterLinkConfig(
command = it.getOrDefault(
"command",
Expand Down Expand Up @@ -161,7 +162,7 @@ data class BaseConfig(val rootDir: File) {
)
)
}
.registerTypeAdapter(CommandOptions::class.java) {
.registerTypeAdapter {
with(CommandOptions()) {
CommandOptions(
enable = it.getOrDefault(
Expand All @@ -182,7 +183,7 @@ data class BaseConfig(val rootDir: File) {
)
}
}
.registerTypeAdapter(ConnectOptions::class.java) {
.registerTypeAdapter {
with(ConnectOptions()) {
ConnectOptions(
url = it.getOrDefault(
Expand All @@ -208,14 +209,14 @@ data class BaseConfig(val rootDir: File) {
)
}
}
.registerTypeAdapter(DebugOptions::class.java) {
.registerTypeAdapter {
with(DebugOptions()) {
DebugOptions(
logLevel = it.getOrDefault("loglevel", logLevel, "MatterLink log level")
)
}
}
.registerTypeAdapter(IncomingOptions::class.java) {
.registerTypeAdapter {
with(IncomingOptions()) {
IncomingOptions(
chat = it.getOrDefault(
Expand All @@ -241,7 +242,7 @@ data class BaseConfig(val rootDir: File) {
)
}
}
.registerTypeAdapter(OutgoingOptions::class.java) {
.registerTypeAdapter {
with(OutgoingOptions()) {
OutgoingOptions(
systemUser = it.getOrDefault(
Expand Down Expand Up @@ -282,7 +283,7 @@ data class BaseConfig(val rootDir: File) {
)
}
}
.registerTypeAdapter(DeathOptions::class.java) { jsonObj ->
.registerTypeAdapter { jsonObj ->
with(DeathOptions()) {
DeathOptions(
enable = jsonObj.getOrDefault(
Expand Down Expand Up @@ -312,9 +313,7 @@ data class BaseConfig(val rootDir: File) {
)
}
}
.registerTypeAdapter(JoinPartOptions::
class.java)
{
.registerTypeAdapter {
with(JoinPartOptions()) {
JoinPartOptions(
enable = it.getOrDefault(
Expand All @@ -337,9 +336,7 @@ data class BaseConfig(val rootDir: File) {
)
}
}
.registerTypeAdapter(UpdateOptions::
class.java)
{
.registerTypeAdapter {
with(UpdateOptions()) {
UpdateOptions(
enable = it.getOrDefault(
Expand Down
6 changes: 4 additions & 2 deletions core/src/main/kotlin/matterlink/config/CommandConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import matterlink.bridge.command.CommandType
import matterlink.bridge.command.CustomCommand
import matterlink.getOrDefault
import matterlink.instance
import matterlink.registerPrimitiveTypeAdapter
import matterlink.registerTypeAdapter
import java.io.File
import java.io.FileNotFoundException

Expand Down Expand Up @@ -74,7 +76,7 @@ object CommandConfig {
fun readConfig(): Boolean {
val jankson = Jankson
.builder()
.registerTypeAdapter(CustomCommand::class.java) { jsonObj ->
.registerTypeAdapter { jsonObj ->
with(CustomCommand.DEFAULT) {
CustomCommand(
type = jsonObj.get(CommandType::class.java, "type") ?: type,
Expand All @@ -89,7 +91,7 @@ object CommandConfig {
)
}
}
.registerPrimitiveTypeAdapter(Regex::class.java) {
.registerPrimitiveTypeAdapter {
it.toString().toRegex()
}
.build()
Expand Down

0 comments on commit 0ebb89c

Please sign in to comment.