Skip to content

Commit 87d68fe

Browse files
committed
adjustments for update to spring boot 4
1 parent 3cd7c48 commit 87d68fe

File tree

5 files changed

+44
-63
lines changed

5 files changed

+44
-63
lines changed

examples/example-feign-client/src/main/kotlin/org/camunda/community/rest/example/feign/client/ProcessClient.kt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class ProcessClient
5050
null, null, null, null, null, null, null,
5151
null, null, null, null, null,
5252
null, null, null
53-
).body.count
53+
).body?.count
5454
LOGGER.info("CLIENT-91: Found {} deployed processes", count)
5555
val processDefinitions = processDefinitionApiClient.getProcessDefinitions(
5656
null, null, null, null,
@@ -62,10 +62,8 @@ class ProcessClient
6262
).body
6363
LOGGER.info(
6464
"CLIENT-92: Deployed process definition are {}",
65-
processDefinitions.stream().map { o: ProcessDefinitionDto? -> Objects.toString(o) }
66-
.collect(
67-
Collectors.toList()
68-
))
65+
processDefinitions?.map { o: ProcessDefinitionDto? -> Objects.toString(o) }
66+
)
6967
}
7068

7169
/**
@@ -79,7 +77,7 @@ class ProcessClient
7977
StartProcessInstanceDto()
8078
.businessKey("WAIT_FOR_MESSAGE" + UUID.randomUUID())
8179
.putVariablesItem("ID", stringValue("MESSAGING-" + UUID.randomUUID()))
82-
).body
80+
).body!!
8381
LOGGER.trace("CLIENT-101: Started instance {} - {}", instance.id, instance.businessKey)
8482
instances[instance.id] = instance.businessKey
8583
}
@@ -125,7 +123,7 @@ class ProcessClient
125123
.all(true)
126124
.resultEnabled(true)
127125
).body
128-
result.forEach {
126+
result?.forEach {
129127
LOGGER.info(
130128
"CLIENT-301: {}",
131129
it.toString()

extension/client/pom.xml

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030

3131
<!-- Jackson -->
3232
<dependency>
33-
<groupId>com.fasterxml.jackson.core</groupId>
33+
<groupId>tools.jackson.core</groupId>
3434
<artifactId>jackson-core</artifactId>
3535
<scope>provided</scope>
3636
</dependency>
@@ -40,22 +40,12 @@
4040
<scope>provided</scope>
4141
</dependency>
4242
<dependency>
43-
<groupId>com.fasterxml.jackson.core</groupId>
43+
<groupId>tools.jackson.core</groupId>
4444
<artifactId>jackson-databind</artifactId>
4545
<scope>provided</scope>
4646
</dependency>
4747
<dependency>
48-
<groupId>com.fasterxml.jackson.datatype</groupId>
49-
<artifactId>jackson-datatype-jdk8</artifactId>
50-
<scope>provided</scope>
51-
</dependency>
52-
<dependency>
53-
<groupId>com.fasterxml.jackson.datatype</groupId>
54-
<artifactId>jackson-datatype-jsr310</artifactId>
55-
<scope>provided</scope>
56-
</dependency>
57-
<dependency>
58-
<groupId>com.fasterxml.jackson.module</groupId>
48+
<groupId>tools.jackson.module</groupId>
5949
<artifactId>jackson-module-kotlin</artifactId>
6050
<scope>provided</scope>
6151
</dependency>

extension/client/src/main/kotlin/org/camunda/community/rest/client/FeignClientConfiguration.kt

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,29 @@
2323
package org.camunda.community.rest.client
2424

2525
import com.fasterxml.jackson.annotation.JsonFormat
26-
import com.fasterxml.jackson.databind.DeserializationFeature
27-
import com.fasterxml.jackson.databind.SerializationFeature
28-
import com.fasterxml.jackson.databind.ser.std.DateSerializer
29-
import com.fasterxml.jackson.datatype.jsr310.ser.OffsetDateTimeSerializer
3026
import feign.Logger
3127
import feign.Retryer
3228
import feign.codec.Encoder
3329
import org.camunda.community.rest.client.KeyChangingSpringManyMultipartFilesWriter.Companion.camundaMultipartFormEncoder
34-
import org.springframework.beans.factory.ObjectFactory
3530
import org.springframework.beans.factory.ObjectProvider
3631
import org.springframework.beans.factory.annotation.Value
3732
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
3833
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
39-
import org.springframework.boot.autoconfigure.http.HttpMessageConverters
4034
import org.springframework.cloud.openfeign.EnableFeignClients
4135
import org.springframework.cloud.openfeign.support.FeignEncoderProperties
42-
import org.springframework.cloud.openfeign.support.HttpMessageConverterCustomizer
36+
import org.springframework.cloud.openfeign.support.FeignHttpMessageConverters
4337
import org.springframework.cloud.openfeign.support.SpringEncoder
4438
import org.springframework.context.annotation.Bean
4539
import org.springframework.context.annotation.Configuration
46-
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder
47-
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
40+
import org.springframework.http.converter.HttpMessageConverter
41+
import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter
42+
import tools.jackson.databind.DeserializationFeature
43+
import tools.jackson.databind.SerializationFeature
44+
import tools.jackson.databind.cfg.DateTimeFeature
45+
import tools.jackson.databind.ext.javatime.ser.OffsetDateTimeSerializer
46+
import tools.jackson.databind.json.JsonMapper
47+
import tools.jackson.databind.module.SimpleModule
48+
import tools.jackson.databind.ser.jdk.JavaUtilDateSerializer
4849
import java.text.SimpleDateFormat
4950
import java.time.format.DateTimeFormatter
5051

@@ -55,14 +56,20 @@ import java.time.format.DateTimeFormatter
5556
@EnableFeignClients
5657
class FeignClientConfiguration {
5758

59+
object CustomOffsetDateTimeSerializer : OffsetDateTimeSerializer(
60+
OffsetDateTimeSerializer.INSTANCE,
61+
false,
62+
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"),
63+
JsonFormat.Shape.STRING
64+
)
65+
5866
@Bean
5967
@ConditionalOnMissingBean
6068
fun camundaFeignEncoder(
6169
feignEncoderProperties: FeignEncoderProperties,
62-
customizers: ObjectProvider<HttpMessageConverterCustomizer>
70+
converters: ObjectProvider<FeignHttpMessageConverters>
6371
): Encoder {
64-
val myConverters = camunda7feignHttpMessageConverters()
65-
return SpringEncoder(camundaMultipartFormEncoder(), myConverters, feignEncoderProperties, customizers)
72+
return SpringEncoder(camundaMultipartFormEncoder(), feignEncoderProperties, converters)
6673
}
6774

6875
@Bean
@@ -76,36 +83,22 @@ class FeignClientConfiguration {
7683
fun feignLoggerLevel(@Value("\${feign.client.config.default.loggerLevel}") defaultLogLevel: String) =
7784
Logger.Level.valueOf(defaultLogLevel)
7885

79-
80-
/**
81-
* Create an object factory for the message converter with the customized object mapper.
82-
*/
83-
fun camunda7feignHttpMessageConverters(): ObjectFactory<HttpMessageConverters> {
84-
val builder = Jackson2ObjectMapperBuilder
85-
.json()
86-
.featuresToDisable(
87-
DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE,
88-
SerializationFeature.WRITE_DATES_AS_TIMESTAMPS
89-
)
90-
.serializers(
91-
OffsetDateTimeSerializer(
92-
OffsetDateTimeSerializer.INSTANCE,
93-
false,
94-
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"),
95-
JsonFormat.Shape.STRING
96-
),
97-
DateSerializer(
98-
false,
99-
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
100-
)
101-
)
102-
return ObjectFactory<HttpMessageConverters> {
103-
HttpMessageConverters(
104-
listOf(
105-
MappingJackson2HttpMessageConverter(builder.build())
106-
)
86+
@Bean
87+
fun jsonHttpMessageConverter(): HttpMessageConverter<*> {
88+
val module = SimpleModule()
89+
module.addSerializer(CustomOffsetDateTimeSerializer)
90+
module.addSerializer(
91+
JavaUtilDateSerializer(
92+
false,
93+
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
10794
)
108-
}
95+
)
96+
val builder = JsonMapper.builder()
97+
.disable(DateTimeFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE)
98+
.disable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS)
99+
.addModule(module)
100+
return JacksonJsonHttpMessageConverter(builder)
109101
}
102+
110103
}
111104

extension/client/src/main/kotlin/org/camunda/community/rest/exception/CamundaHttpFeignErrorDecoder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323

2424
package org.camunda.community.rest.exception
2525

26-
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
2726
import feign.Response
2827
import feign.codec.ErrorDecoder
28+
import tools.jackson.module.kotlin.jacksonObjectMapper
2929
import java.io.IOException
3030

3131
/**

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
<spin.version>7.24.0</spin.version>
3939

4040
<spring-boot.version>4.0.0</spring-boot.version>
41-
<spring-cloud.version>2025.0.0</spring-cloud.version>
41+
<spring-cloud.version>2025.1.0</spring-cloud.version>
4242

4343
<kotlin.version>2.2.21</kotlin.version>
4444
<kotlin-logging.version>7.0.13</kotlin-logging.version>

0 commit comments

Comments
 (0)