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

davsclaus pushed a commit to branch topology-external-endpoints
in repository https://gitbox.apache.org/repos/asf/camel.git

commit bb8cc797a4e04df879297e2453babf592602ec4c
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Jun 2 11:22:35 2026 +0200

    Skip stub endpoints when building scheme remote map
    
    When components are stubbed (e.g. --stub=kafka), StubEndpoint.isRemote()
    returns false which incorrectly masks the real component's remote status.
    Skip stub endpoints so the fallback logic correctly treats schemes like
    kafka as remote.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
 .../java/org/apache/camel/impl/DefaultRouteTopologyDumper.java    | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteTopologyDumper.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteTopologyDumper.java
index 1651465effef..fe9ccf214345 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteTopologyDumper.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultRouteTopologyDumper.java
@@ -92,8 +92,12 @@ public class DefaultRouteTopologyDumper implements 
RouteTopologyDumper {
             Map<String, List<String>> inputUriToRouteIds) {
 
         // Build scheme -> isRemote map from endpoint registry
+        // Skip stub endpoints — they mask the real component's remote status
         Map<String, Boolean> schemeRemoteMap = new HashMap<>();
         for (Endpoint ep : context.getEndpoints()) {
+            if (isStubEndpoint(ep)) {
+                continue;
+            }
             String scheme = extractScheme(ep.getEndpointUri());
             schemeRemoteMap.putIfAbsent(scheme, ep.isRemote());
         }
@@ -146,6 +150,10 @@ public class DefaultRouteTopologyDumper implements 
RouteTopologyDumper {
         return !INTERNAL_SCHEMES.contains(scheme) && 
!TRIGGER_SCHEMES.contains(scheme);
     }
 
+    private static boolean isStubEndpoint(Endpoint ep) {
+        return "StubEndpoint".equals(ep.getClass().getSimpleName());
+    }
+
     private static String extractScheme(String uri) {
         int idx = uri.indexOf(':');
         return idx > 0 ? uri.substring(0, idx) : uri;

Reply via email to