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);
         }
     }
 }

Reply via email to