Skip to content

Commit 1fa690f

Browse files
committed
feat(scheduling): use kotlinx.serialization as the JsonMapper
1 parent 4080840 commit 1fa690f

File tree

5 files changed

+13
-14
lines changed

5 files changed

+13
-14
lines changed

build.gradle.kts

+1-5
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,9 @@ dependencies { with(libs) {
112112
implementation(log.kotlinLogging)
113113
implementation(log.coroutines)
114114

115-
// serialization
116-
implementation(libraries.jackson.core)
117-
implementation(libraries.jackson.databind)
118-
implementation(libraries.jackson.kotlin)
119-
120115
// task scheduling
121116
implementation(libraries.jobrunr)
117+
implementation(libraries.jobrunr.kotlin)
122118

123119
// feature flags
124120
implementation(libraries.openfeature)

gradle/libs.versions.toml

+4-5
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ hoplite = "2.9.0"
33
koin = "4.1.0-Beta5"
44
koin-annotations = "2.0.0-RC1"
55
ksp = "2.1.10-1.0.29"
6-
jackson = "2.18.2"
76
kotlinx-serialization = "1.8.0"
87
kotlin = "2.1.10"
98
coroutines = "1.10.1"
109

1110
mongodb = "5.3.1"
1211
exposed = "0.59.0"
1312

13+
jobrunr = "7.4.0-kotlinx.1"
14+
1415
opentelemetry = "1.47.0"
1516
opentelemetry-semconv = "1.29.0-alpha"
1617
opentelemetry-instrumentation = "2.11.0-alpha"
@@ -79,10 +80,8 @@ libraries-coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-c
7980
libraries-bson-kotlin = { group = "org.mongodb", name = "bson-kotlin", version.ref = "mongodb" }
8081
libraries-bson-kotlinx = { group = "org.mongodb", name = "bson-kotlinx", version.ref = "mongodb" }
8182
libraries-ical4j = { group = "org.mnode.ical4j", name = "ical4j", version = "4.1.0" }
82-
libraries-jackson-core = { group = "com.fasterxml.jackson.core", name = "jackson-core", version.ref = "jackson" }
83-
libraries-jackson-databind = { group = "com.fasterxml.jackson.core", name = "jackson-databind", version.ref = "jackson" }
84-
libraries-jackson-kotlin = { group = "com.fasterxml.jackson.module", name = "jackson-module-kotlin", version.ref = "jackson" }
85-
libraries-jobrunr = { group = "org.jobrunr", name = "jobrunr", version = "7.4.0" }
83+
libraries-jobrunr = { group = "org.jobrunr", name = "jobrunr", version.ref = "jobrunr" }
84+
libraries-jobrunr-kotlin = { group = "org.jobrunr", name = "jobrunr-kotlin-2.1-support", version.ref = "jobrunr" }
8685
libraries-kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version = "0.6.1" }
8786
libraries-kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-core", version.ref = "kotlinx-serialization" }
8887
libraries-openfeature = { group = "dev.openfeature", name = "sdk", version = "1.14.0" }

gradle/repositories.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ dependencyResolutionManagement {
22
repositories {
33
mavenCentral()
44
maven("https://maven.simulatan.me/releases")
5+
maven("https://maven.simulatan.me/snapshots")
56
gradlePluginPortal()
67
}
78
}

src/main/kotlin/me/snoty/backend/scheduling/jobrunr/JobRunrConfigurer.kt

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package me.snoty.backend.scheduling.jobrunr
22

3-
import com.fasterxml.jackson.databind.ObjectMapper
4-
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
53
import io.micrometer.core.instrument.MeterRegistry
4+
import kotlinx.serialization.ExperimentalSerializationApi
5+
import kotlinx.serialization.InternalSerializationApi
66
import org.jobrunr.configuration.JobRunr
77
import org.jobrunr.configuration.JobRunrMicroMeterIntegration
88
import org.jobrunr.dashboard.JobRunrDashboardWebServerConfiguration
9+
import org.jobrunr.kotlin.utils.mapper.KotlinxSerializationJsonMapper
910
import org.jobrunr.server.JobActivator
1011
import org.jobrunr.storage.StorageProvider
11-
import org.jobrunr.utils.mapper.jackson.JacksonJsonMapper
1212
import org.koin.core.Koin
1313
import org.koin.core.annotation.Single
1414

@@ -18,8 +18,9 @@ class JobRunrConfigurer(
1818
private val storageProvider: StorageProvider,
1919
private val koin: Koin,
2020
) {
21+
@OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
2122
fun initialize() = JobRunr.configure()
22-
.useJsonMapper(JacksonJsonMapper(ObjectMapper().registerKotlinModule()))
23+
.useJsonMapper(KotlinxSerializationJsonMapper())
2324
.useStorageProvider(storageProvider)
2425
.useJobActivator(object : JobActivator {
2526
override fun <T : Any> activateJob(type: Class<T>): T? = koin.getOrNull(type.kotlin)

src/main/kotlin/me/snoty/backend/scheduling/jobrunr/node/JobRunrFlowJobRequest.kt

+2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package me.snoty.backend.scheduling.jobrunr.node
22

3+
import kotlinx.serialization.Serializable
34
import me.snoty.backend.integration.config.flow.NodeId
45
import me.snoty.backend.scheduling.FlowTriggerReason
56
import me.snoty.backend.scheduling.JobRequest
67
import org.slf4j.event.Level
78

9+
@Serializable
810
data class JobRunrFlowJobRequest(
911
val flowId: NodeId,
1012
val triggeredBy: FlowTriggerReason = FlowTriggerReason.Unknown,

0 commit comments

Comments
 (0)