Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class ProcessClient
null, null, null, null, null, null, null,
null, null, null, null, null,
null, null, null
).body.count
).body?.count
LOGGER.info("CLIENT-91: Found {} deployed processes", count)
val processDefinitions = processDefinitionApiClient.getProcessDefinitions(
null, null, null, null,
Expand All @@ -62,10 +62,8 @@ class ProcessClient
).body
LOGGER.info(
"CLIENT-92: Deployed process definition are {}",
processDefinitions.stream().map { o: ProcessDefinitionDto? -> Objects.toString(o) }
.collect(
Collectors.toList()
))
processDefinitions?.map { o: ProcessDefinitionDto? -> Objects.toString(o) }
)
}

/**
Expand All @@ -79,7 +77,7 @@ class ProcessClient
StartProcessInstanceDto()
.businessKey("WAIT_FOR_MESSAGE" + UUID.randomUUID())
.putVariablesItem("ID", stringValue("MESSAGING-" + UUID.randomUUID()))
).body
).body!!
LOGGER.trace("CLIENT-101: Started instance {} - {}", instance.id, instance.businessKey)
instances[instance.id] = instance.businessKey
}
Expand Down Expand Up @@ -125,7 +123,7 @@ class ProcessClient
.all(true)
.resultEnabled(true)
).body
result.forEach {
result?.forEach {
LOGGER.info(
"CLIENT-301: {}",
it.toString()
Expand Down
16 changes: 3 additions & 13 deletions extension/client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<groupId>tools.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<scope>provided</scope>
</dependency>
Expand All @@ -40,22 +40,12 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<groupId>tools.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<groupId>tools.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<scope>provided</scope>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,28 +23,29 @@
package org.camunda.community.rest.client

import com.fasterxml.jackson.annotation.JsonFormat
import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.databind.ser.std.DateSerializer
import com.fasterxml.jackson.datatype.jsr310.ser.OffsetDateTimeSerializer
import feign.Logger
import feign.Retryer
import feign.codec.Encoder
import org.camunda.community.rest.client.KeyChangingSpringManyMultipartFilesWriter.Companion.camundaMultipartFormEncoder
import org.springframework.beans.factory.ObjectFactory
import org.springframework.beans.factory.ObjectProvider
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
import org.springframework.boot.autoconfigure.http.HttpMessageConverters
import org.springframework.cloud.openfeign.EnableFeignClients
import org.springframework.cloud.openfeign.support.FeignEncoderProperties
import org.springframework.cloud.openfeign.support.HttpMessageConverterCustomizer
import org.springframework.cloud.openfeign.support.FeignHttpMessageConverters
import org.springframework.cloud.openfeign.support.SpringEncoder
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
import org.springframework.http.converter.HttpMessageConverter
import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter
import tools.jackson.databind.DeserializationFeature
import tools.jackson.databind.SerializationFeature
import tools.jackson.databind.cfg.DateTimeFeature
import tools.jackson.databind.ext.javatime.ser.OffsetDateTimeSerializer
import tools.jackson.databind.json.JsonMapper
import tools.jackson.databind.module.SimpleModule
import tools.jackson.databind.ser.jdk.JavaUtilDateSerializer
import java.text.SimpleDateFormat
import java.time.format.DateTimeFormatter

Expand All @@ -55,14 +56,20 @@ import java.time.format.DateTimeFormatter
@EnableFeignClients
class FeignClientConfiguration {

object CustomOffsetDateTimeSerializer : OffsetDateTimeSerializer(
OffsetDateTimeSerializer.INSTANCE,
false,
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"),
JsonFormat.Shape.STRING
)

@Bean
@ConditionalOnMissingBean
fun camundaFeignEncoder(
feignEncoderProperties: FeignEncoderProperties,
customizers: ObjectProvider<HttpMessageConverterCustomizer>
converters: ObjectProvider<FeignHttpMessageConverters>
): Encoder {
val myConverters = camunda7feignHttpMessageConverters()
return SpringEncoder(camundaMultipartFormEncoder(), myConverters, feignEncoderProperties, customizers)
return SpringEncoder(camundaMultipartFormEncoder(), feignEncoderProperties, converters)
}

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


/**
* Create an object factory for the message converter with the customized object mapper.
*/
fun camunda7feignHttpMessageConverters(): ObjectFactory<HttpMessageConverters> {
val builder = Jackson2ObjectMapperBuilder
.json()
.featuresToDisable(
DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE,
SerializationFeature.WRITE_DATES_AS_TIMESTAMPS
)
.serializers(
OffsetDateTimeSerializer(
OffsetDateTimeSerializer.INSTANCE,
false,
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"),
JsonFormat.Shape.STRING
),
DateSerializer(
false,
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
)
)
return ObjectFactory<HttpMessageConverters> {
HttpMessageConverters(
listOf(
MappingJackson2HttpMessageConverter(builder.build())
)
@Bean
fun jsonHttpMessageConverter(): HttpMessageConverter<*> {
val module = SimpleModule()
module.addSerializer(CustomOffsetDateTimeSerializer)
module.addSerializer(
JavaUtilDateSerializer(
false,
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
)
}
)
val builder = JsonMapper.builder()
.disable(DateTimeFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE)
.disable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS)
.addModule(module)
return JacksonJsonHttpMessageConverter(builder)
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@

package org.camunda.community.rest.exception

import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import feign.Response
import feign.codec.ErrorDecoder
import tools.jackson.module.kotlin.jacksonObjectMapper
import java.io.IOException

/**
Expand Down
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
<holunda-c7.version>2025.10.1</holunda-c7.version>
<spin.version>7.24.0</spin.version>

<spring-boot.version>3.5.8</spring-boot.version>
<spring-cloud.version>2025.0.0</spring-cloud.version>
<spring-boot.version>4.0.0</spring-boot.version>
<spring-cloud.version>2025.1.0</spring-cloud.version>

<kotlin.version>2.2.21</kotlin.version>
<kotlin-logging.version>7.0.13</kotlin-logging.version>
Expand Down
Loading