This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch fix/CAMEL-24119-thread-safety in repository https://gitbox.apache.org/repos/asf/camel.git
commit ef56cb324dee469e59c6f94edd49849a11f1b99d Author: Claus Ibsen <[email protected]> AuthorDate: Mon Jul 20 19:44:47 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]> Signed-off-by: Claus Ibsen <[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); } } }
