You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2026/07/16 10:25:04 UTC

(camel) 01/01: CAMEL-24116: camel-rest-openapi - Fix RestOpenApiProcessor lifecycle so services are properly stopped

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch fix/CAMEL-24116
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 2cb6ef3fc7d5e92abcd80fa6b0f727a2ce633fcc
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Jul 16 12:24:45 2026 +0200

    CAMEL-24116: camel-rest-openapi - Fix RestOpenApiProcessor lifecycle so services are properly stopped
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
    Signed-off-by: Claus Ibsen <cl...@gmail.com>
---
 .../camel/component/rest/openapi/RestOpenApiComponent.java    |  7 +++++++
 .../camel/component/rest/openapi/RestOpenApiEndpoint.java     | 11 +++++++++++
 2 files changed, 18 insertions(+)

diff --git a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
index c6d391e2cd9b..21922e53641a 100644
--- a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
+++ b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
@@ -27,6 +27,7 @@ import org.apache.camel.spi.RestProducerFactory;
 import org.apache.camel.spi.annotations.Component;
 import org.apache.camel.support.DefaultComponent;
 import org.apache.camel.support.jsse.SSLContextParameters;
+import org.apache.camel.support.service.ServiceHelper;
 
 import static org.apache.camel.component.rest.openapi.RestOpenApiHelper.isHostParam;
 import static org.apache.camel.component.rest.openapi.RestOpenApiHelper.isMediaRange;
@@ -202,6 +203,12 @@ public final class RestOpenApiComponent extends DefaultComponent implements SSLC
         }
     }
 
+    @Override
+    protected void doStop() throws Exception {
+        super.doStop();
+        ServiceHelper.stopService(restOpenapiProcessorStrategy);
+    }
+
     public String getBasePath() {
         return basePath;
     }
diff --git a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
index 11f5b98a5fd4..761ca925126c 100644
--- a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
+++ b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
@@ -75,6 +75,7 @@ import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.support.processor.RestBindingAdvice;
+import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.UnsafeUriCharactersEncoder;
@@ -183,6 +184,8 @@ public final class RestOpenApiEndpoint extends DefaultEndpoint {
                             + " endpoint protection.")
     private String oauthProfile;
 
+    private volatile RestOpenApiProcessor openApiProcessor;
+
     public RestOpenApiEndpoint() {
         // help tooling instantiate endpoint
     }
@@ -226,6 +229,7 @@ public final class RestOpenApiEndpoint extends DefaultEndpoint {
         RestOpenApiProcessor openApiProcessor
                 = new RestOpenApiProcessor(this, doc, path, apiContextPath, restOpenapiProcessorStrategy);
         CamelContextAware.trySetCamelContext(openApiProcessor, getCamelContext());
+        this.openApiProcessor = openApiProcessor;
 
         // use an advice to call the processor that is responsible for routing to the route that matches the
         // operation id, and also do validation of the incoming request
@@ -396,6 +400,13 @@ public final class RestOpenApiEndpoint extends DefaultEndpoint {
                                            + "`. Operations defined in the specification are: " + supportedOperations);
     }
 
+    @Override
+    protected void doStop() throws Exception {
+        super.doStop();
+        ServiceHelper.stopService(openApiProcessor);
+        openApiProcessor = null;
+    }
+
     public String getBasePath() {
         return basePath;
     }