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 3bc920effa008f0a52fa2a78d465e903a1d7538c
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Jun 2 11:57:38 2026 +0200

    Fix ANSI coloring for multiple external nodes on the same row
    
    Sort counter positions right-to-left (descending column) within each row
    before applying ANSI escape codes. This prevents insertions from shifting
    character offsets for subsequent positions on the same line.
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
 .../main/java/org/apache/camel/diagram/TopologyAsciiRenderer.java   | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git 
a/components/camel-diagram/src/main/java/org/apache/camel/diagram/TopologyAsciiRenderer.java
 
b/components/camel-diagram/src/main/java/org/apache/camel/diagram/TopologyAsciiRenderer.java
index 5f49104308c1..84bbbd065f2f 100644
--- 
a/components/camel-diagram/src/main/java/org/apache/camel/diagram/TopologyAsciiRenderer.java
+++ 
b/components/camel-diagram/src/main/java/org/apache/camel/diagram/TopologyAsciiRenderer.java
@@ -18,6 +18,7 @@ package org.apache.camel.diagram;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.List;
 
 import org.apache.camel.diagram.TopologyLayoutEngine.TopologyLayoutEdge;
@@ -364,7 +365,10 @@ public class TopologyAsciiRenderer {
             return plain;
         }
         String[] lines = plain.split("\n", -1);
-        for (CounterPos cp : counterPositions) {
+        List<CounterPos> sorted = new ArrayList<>(counterPositions);
+        sorted.sort(
+                
Comparator.comparingInt(CounterPos::row).thenComparing(Comparator.comparingInt(CounterPos::col).reversed()));
+        for (CounterPos cp : sorted) {
             if (cp.row >= 0 && cp.row < lines.length) {
                 String line = lines[cp.row];
                 if (cp.col >= 0 && cp.col + cp.length <= line.length()) {

Reply via email to