This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new e9192aa28135 CAMEL-24119: Fix thread-safety in camel-openapi-java
global state
e9192aa28135 is described below
commit e9192aa28135f80c816b377583f20e049fcf48b2
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Jul 20 21:59:52 2026 +0200
CAMEL-24119: Fix thread-safety in camel-openapi-java global state
Stop mutating JVM-global swagger-core singletons:
- RestModelConverters: use new ModelConverters() instead of getInstance()
to create Camel-private instances, avoiding converter chain pollution
- RestOpenApiSupport: use ObjectWriter.with(DateFormat) instead of
mutating the global ObjectMapper's date format, eliminating a race
condition under concurrent requests
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
.../main/java/org/apache/camel/openapi/RestModelConverters.java | 4 ++--
.../main/java/org/apache/camel/openapi/RestOpenApiSupport.java | 8 +++-----
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git
a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestModelConverters.java
b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestModelConverters.java
index b101405b1414..e2e293d58b20 100644
---
a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestModelConverters.java
+++
b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestModelConverters.java
@@ -44,14 +44,14 @@ public class RestModelConverters {
private static final ModelConverters MODEL31_CONVERTERS;
static {
- MODEL31_CONVERTERS = ModelConverters.getInstance(true);
+ MODEL31_CONVERTERS = new ModelConverters(true);
MODEL31_CONVERTERS.addConverter(new
ClassNameExtensionModelResolver(new FqnModelResolver(true)));
}
private static final ModelConverters MODEL30_CONVERTERS;
static {
- MODEL30_CONVERTERS = ModelConverters.getInstance();
+ MODEL30_CONVERTERS = new ModelConverters();
MODEL30_CONVERTERS.addConverter(new
ClassNameExtensionModelResolver(new FqnModelResolver()));
}
diff --git
a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java
b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java
index 6bfa861e7864..f194ee41a54f 100644
---
a/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java
+++
b/components/camel-openapi-java/src/main/java/org/apache/camel/openapi/RestOpenApiSupport.java
@@ -376,14 +376,12 @@ public class RestOpenApiSupport {
}
private static String getFromOpenAPI3(OpenAPI openAPI3, ObjectMapper
mapper) {
- DateFormat origin = mapper.getDateFormat();
try {
- mapper.setDateFormat(DEFAULT_DATE_FORMAT);
- return mapper.writer(new
DefaultPrettyPrinter()).writeValueAsString(openAPI3);
+ return mapper.writer(new DefaultPrettyPrinter())
+ .with(DEFAULT_DATE_FORMAT)
+ .writeValueAsString(openAPI3);
} catch (Exception e) {
return null;
- } finally {
- mapper.setDateFormat(origin);
}
}
}