From 782313a47bd7039da309cc7fdec109065b51923d Mon Sep 17 00:00:00 2001 From: Ross Anderson Date: Fri, 29 May 2026 14:09:43 +0100 Subject: [PATCH] Expose JsonHandler as an overridable bean in the Spring starter Move JsonHandler creation out of the dataSource bean into its own @ConditionalOnMissingBean bean so consumers can supply their own (e.g. a Jackson 3 handler) without replacing the whole DataSource. --- .../spring/internal/DataSourceAutoConfiguration.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/spring/src/main/kotlin/com/caplin/integration/datasourcex/spring/internal/DataSourceAutoConfiguration.kt b/spring/src/main/kotlin/com/caplin/integration/datasourcex/spring/internal/DataSourceAutoConfiguration.kt index cb19685..0aa154c 100644 --- a/spring/src/main/kotlin/com/caplin/integration/datasourcex/spring/internal/DataSourceAutoConfiguration.kt +++ b/spring/src/main/kotlin/com/caplin/integration/datasourcex/spring/internal/DataSourceAutoConfiguration.kt @@ -3,6 +3,7 @@ package com.caplin.integration.datasourcex.spring.internal import com.caplin.datasource.DataSource import com.caplin.datasource.internal.configuration.AttributeConfiguration.DATASRC_LOCAL_LABEL import com.caplin.datasource.internal.configuration.AttributeConfiguration.DATASRC_NAME +import com.caplin.datasource.messaging.json.JsonHandler import com.caplin.integration.datasourcex.spring.DataSourceConfigurationProperties import com.caplin.integration.datasourcex.util.SimpleDataSourceConfig.Discovery import com.caplin.integration.datasourcex.util.SimpleDataSourceConfig.Peer @@ -30,10 +31,15 @@ internal class DataSourceAutoConfiguration { internal const val DEFAULT_DATASOURCE_NAME = "caplin-adapter" } + @Bean + @ConditionalOnMissingBean + fun jsonHandler(objectMapper: ObjectMapper): JsonHandler<*> = + createJackson2JsonHandler(objectMapper) + @Bean @ConditionalOnMissingBean fun dataSource( - objectMapper: ObjectMapper, + jsonHandler: JsonHandler<*>, dataSourceConfigurationProperties: DataSourceConfigurationProperties, @Value("\${spring.application.name:#{null}}") applicationName: String?, ): DataSource { @@ -91,7 +97,7 @@ internal class DataSourceAutoConfiguration { } ) } - .apply { extraConfiguration.jsonHandler = createJackson2JsonHandler(objectMapper) } + .apply { extraConfiguration.jsonHandler = jsonHandler } } @Bean