Skip to content

Commit 3c496d2

Browse files
Merge pull request #2 from caplin/add-object-mapper
Add object mapper as optional parameter to SimpleDatasourceFactory.
2 parents 813696c + 44e4aca commit 3c496d2

File tree

5 files changed

+42
-17
lines changed

5 files changed

+42
-17
lines changed

buildSrc/src/main/kotlin/common-library.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import com.vanniktech.maven.publish.JavadocJar
22
import com.vanniktech.maven.publish.KotlinJvm
3-
import gradle.kotlin.dsl.accessors._94cffe4e74c4f6a3b1c88c3e0c336ef5.mavenPublishing
43
import org.gradle.api.JavaVersion.VERSION_17
54
import org.gradle.api.file.DuplicatesStrategy.WARN
65

spring/src/main/kotlin/com/caplin/integration/datasourcex/spring/internal/DataSourceAutoConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.caplin.datasource.messaging.json.JacksonJsonHandler
77
import com.caplin.integration.datasourcex.spring.DataSourceConfigurationProperties
88
import com.caplin.integration.datasourcex.util.SimpleDataSourceConfig.Discovery
99
import com.caplin.integration.datasourcex.util.SimpleDataSourceConfig.Peer
10-
import com.caplin.integration.datasourcex.util.SimpleDatasourceFactory.createDataSource
10+
import com.caplin.integration.datasourcex.util.SimpleDataSourceFactory.createDataSource
1111
import com.caplin.integration.datasourcex.util.getLogger
1212
import com.fasterxml.jackson.databind.ObjectMapper
1313
import java.nio.file.Paths

util/api/datasourcex-util.api

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,11 @@ public final class com/caplin/integration/datasourcex/util/SimpleDataSourceConfi
133133
public fun toString ()Ljava/lang/String;
134134
}
135135

136-
public final class com/caplin/integration/datasourcex/util/SimpleDatasourceFactory {
137-
public static final field INSTANCE Lcom/caplin/integration/datasourcex/util/SimpleDatasourceFactory;
138-
public static final fun createDataSource (Lcom/caplin/integration/datasourcex/util/SimpleDataSourceConfig;)Lcom/caplin/datasource/DataSource;
136+
public final class com/caplin/integration/datasourcex/util/SimpleDataSourceFactory {
137+
public static final field INSTANCE Lcom/caplin/integration/datasourcex/util/SimpleDataSourceFactory;
138+
public static final fun createDataSource (Lcom/caplin/integration/datasourcex/util/SimpleDataSourceConfig;Lcom/fasterxml/jackson/databind/ObjectMapper;)Lcom/caplin/datasource/DataSource;
139+
public static synthetic fun createDataSource$default (Lcom/caplin/integration/datasourcex/util/SimpleDataSourceConfig;Lcom/fasterxml/jackson/databind/ObjectMapper;ILjava/lang/Object;)Lcom/caplin/datasource/DataSource;
140+
public final fun getDefaultObjectMapper ()Lcom/fasterxml/jackson/databind/ObjectMapper;
139141
}
140142

141143
public final class com/caplin/integration/datasourcex/util/TimeoutKt {

util/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ dependencies {
88
api("org.slf4j:slf4j-api")
99
api("org.jetbrains.kotlinx:kotlinx-coroutines-core")
1010
api("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm")
11+
api("com.fasterxml.jackson.core:jackson-core")
12+
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
13+
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
1114

1215
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
1316
implementation(libs.kotlin.collections.immutable)

util/src/main/kotlin/com/caplin/integration/datasourcex/util/SimpleDatasourceFactory.kt renamed to util/src/main/kotlin/com/caplin/integration/datasourcex/util/SimpleDataSourceFactory.kt

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
package com.caplin.integration.datasourcex.util
22

33
import com.caplin.datasource.DataSource
4+
import com.caplin.datasource.messaging.json.JacksonJsonHandler
5+
import com.fasterxml.jackson.databind.ObjectMapper
6+
import com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS
7+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
8+
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
49
import java.nio.file.Files
510
import java.util.logging.Logger
611

7-
object SimpleDatasourceFactory {
12+
object SimpleDataSourceFactory {
813

914
private const val MAX_PATH_LENGTH = 32
1015

11-
private val logger = getLogger<SimpleDatasourceFactory>()
16+
private val logger = getLogger<SimpleDataSourceFactory>()
17+
18+
val defaultObjectMapper: ObjectMapper =
19+
jacksonObjectMapper()
20+
.configure(WRITE_DATES_AS_TIMESTAMPS, false)
21+
.registerModule(JavaTimeModule())
1222

1323
/**
1424
* Creates a data source based on the given simple configuration.
@@ -17,13 +27,17 @@ object SimpleDatasourceFactory {
1727
* @return The created data source.
1828
*/
1929
@JvmStatic
20-
fun createDataSource(simpleConfig: SimpleDataSourceConfig): DataSource {
30+
fun createDataSource(
31+
simpleConfig: SimpleDataSourceConfig,
32+
objectMapper: ObjectMapper = defaultObjectMapper
33+
): DataSource {
2134
val logPath =
2235
simpleConfig.logDirectory
2336
?: run {
2437
val tmpLogPath =
2538
Files.createTempDirectory(
26-
simpleConfig.name.replace("\\s".toRegex(), "").take(MAX_PATH_LENGTH))
39+
simpleConfig.name.replace("\\s".toRegex(), "").take(MAX_PATH_LENGTH),
40+
)
2741
logger.warn {
2842
"log file path is not specified, writing datasource logs to $tmpLogPath"
2943
}
@@ -50,24 +64,24 @@ object SimpleDatasourceFactory {
5064
|datasrc-dev-override ${simpleConfig.devOverride}
5165
|discovery-require-service ${simpleConfig.requiredServices.joinToString(" ")}
5266
${
53-
simpleConfig.incoming?.let {
54-
"""
67+
simpleConfig.incoming?.let {
68+
"""
5569
|${if (it.isWebsocket) "datasrc-ws-port" else "datasrc-port"} ${it.port}
5670
"""
57-
}.orEmpty()
58-
}
71+
}.orEmpty()
72+
}
5973
${
60-
simpleConfig.outgoing.joinToString("\n") {
61-
"""
74+
simpleConfig.outgoing.joinToString("\n") {
75+
"""
6276
|add-peer
6377
| addr ${it.hostname}
6478
| port ${it.port}
6579
| local-type active|contrib
6680
| websocket ${it.isWebsocket}
6781
|end-peer
6882
"""
69-
}
70-
}
83+
}
84+
}
7185
"""
7286
}
7387

@@ -99,5 +113,12 @@ object SimpleDatasourceFactory {
99113
.trimMargin()
100114

101115
return DataSource.fromConfigString(config, Logger.getLogger(DataSource::class.qualifiedName))
116+
.apply {
117+
extraConfiguration.jsonHandler =
118+
JacksonJsonHandler(
119+
Logger.getLogger(JacksonJsonHandler::class.qualifiedName),
120+
objectMapper,
121+
)
122+
}
102123
}
103124
}

0 commit comments

Comments
 (0)