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 64286dbd18b0 CAMEL-25411: camel-jbang - Source editor: the options 
popup of a kamelet: endpoint counts the Kamelet's properties (#27496)
64286dbd18b0 is described below

commit 64286dbd18b0e675c3979ecb745ff7f73fd983f0
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Oct 7 14:32:04 2026 +0200

    CAMEL-25411: camel-jbang - Source editor: the options popup of a kamelet: 
endpoint counts the Kamelet's properties (#27496)
    
    The title counted all the items, the options of the kamelet component
    below the divider included (tag-order-action options (9)). It now counts
    the properties of the Kamelet (2), or shown/total of them while filtering.
    
    
    Claude-Session: https://claude.ai/code/session_01STT6whBgK1AqsSsUKrnE8m
    
    Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
---
 .../jbang/core/commands/tui/AutocompletePopup.java | 23 ++++++++++++++++------
 .../commands/tui/SourceKameletValidationTest.java  |  8 ++++++++
 2 files changed, 25 insertions(+), 6 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AutocompletePopup.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AutocompletePopup.java
index 4552ee285820..e95fc700a6f8 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AutocompletePopup.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/AutocompletePopup.java
@@ -382,12 +382,7 @@ class AutocompletePopup {
             renderState.select(sel + 2 + (dividerAt >= 0 && sel >= dividerAt ? 
1 : 0));
         }
 
-        int total = allItems.size();
-        int shown = filteredItems.size();
-        String label = titlePrefix != null ? titlePrefix : "Completions";
-        String title = shown == total
-                ? " " + label + " (" + total + ") "
-                : " " + label + " (" + shown + "/" + total + ") ";
+        String title = title();
 
         ListWidget list = ListWidget.builder()
                 .items(items.toArray(ListItem[]::new))
@@ -597,6 +592,22 @@ class AutocompletePopup {
         listState.select(filteredItems.isEmpty() ? null : 0);
     }
 
+    /**
+     * The title of the list with its count. When the list has the properties 
of a Kamelet, the count is of those: the
+     * options of the kamelet component below the divider are for special 
uses, and not what the title names
+     * (CAMEL-25411).
+     */
+    String title() {
+        String label = titlePrefix != null ? titlePrefix : "Completions";
+        boolean kamelet = 
allItems.stream().anyMatch(AutocompletePopup::isKameletProperty);
+        long total = kamelet ? 
allItems.stream().filter(AutocompletePopup::isKameletProperty).count() : 
allItems.size();
+        long shown = kamelet
+                ? 
filteredItems.stream().filter(AutocompletePopup::isKameletProperty).count() : 
filteredItems.size();
+        return shown == total
+                ? " " + label + " (" + total + ") "
+                : " " + label + " (" + shown + "/" + total + ") ";
+    }
+
     private static boolean isKameletProperty(CompletionItem item) {
         return item.group() != null && item.group().startsWith(KAMELET_GROUP);
     }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/SourceKameletValidationTest.java
 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/SourceKameletValidationTest.java
index a8e046633e76..d1f584cf620d 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/SourceKameletValidationTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/test/java/org/apache/camel/dsl/jbang/core/commands/tui/SourceKameletValidationTest.java
@@ -160,6 +160,14 @@ class SourceKameletValidationTest {
         // filtering keeps the property of the Kamelet above: "t" matches tag 
and timeout
         AutocompletePopup filtered = new AutocompletePopup(items, "t", "t");
         assertThat(filtered.dividerAt()).isEqualTo(1);
+        // the title counts the properties of the Kamelet, not the options of 
the kamelet component
+        AutocompletePopup all = new AutocompletePopup(items, "", "");
+        all.setTitlePrefix("tag-order-action options");
+        assertThat(all.title()).isEqualTo(" tag-order-action options (1) ");
+        // "rout" matches routeId only: none of the Kamelet's properties shown
+        AutocompletePopup component = new AutocompletePopup(items, "rout", 
"rout");
+        component.setTitlePrefix("tag-order-action options");
+        assertThat(component.title()).isEqualTo(" tag-order-action options 
(0/1) ");
         // only the Kamelet's properties left, or none: no divider
         assertThat(new AutocompletePopup(items, "tag", 
"tag").dividerAt()).isEqualTo(-1);
         assertThat(new AutocompletePopup(items, "routeId", 
"routeId").dividerAt()).isEqualTo(-1);

Reply via email to