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 5af52e2429fc camel-jbang - Allow --example to match by short name 
without category prefix
5af52e2429fc is described below

commit 5af52e2429fc49b706ca3689b481eb6d1a8ab9de
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Jul 18 10:51:59 2026 +0200

    camel-jbang - Allow --example to match by short name without category prefix
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../camel/dsl/jbang/core/common/ExampleHelper.java   | 14 +++++++++++++-
 .../dsl/jbang/core/common/ExampleHelperTest.java     | 20 ++++++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ExampleHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ExampleHelper.java
index e1ba0ed1d2f8..b466bacbd454 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ExampleHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ExampleHelper.java
@@ -64,18 +64,30 @@ public final class ExampleHelper {
     }
 
     public static JsonObject findExample(List<JsonObject> catalog, String 
name) {
+        // first try exact match (e.g. "language/groovy")
         for (JsonObject entry : catalog) {
             if (name.equals(entry.getString("name"))) {
                 return entry;
             }
         }
+        // then try matching by short name without category prefix (e.g. 
"groovy" matches "language/groovy")
+        for (JsonObject entry : catalog) {
+            if (name.equals(getShortName(entry))) {
+                return entry;
+            }
+        }
         return null;
     }
 
     public static List<String> getExampleNames(List<JsonObject> catalog) {
         List<String> names = new ArrayList<>();
         for (JsonObject entry : catalog) {
-            names.add(entry.getString("name"));
+            String name = entry.getString("name");
+            names.add(name);
+            String shortName = getShortName(entry);
+            if (!shortName.equals(name)) {
+                names.add(shortName);
+            }
         }
         return names;
     }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/common/ExampleHelperTest.java
 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/common/ExampleHelperTest.java
index 965c3417fa03..72c46e504e5f 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/common/ExampleHelperTest.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/common/ExampleHelperTest.java
@@ -41,6 +41,22 @@ class ExampleHelperTest {
         assertEquals("Circuit Breaker", entry.getString("title"));
     }
 
+    @Test
+    void shouldFindExampleByShortName() {
+        List<JsonObject> catalog = ExampleHelper.loadCatalog();
+        JsonObject entry = ExampleHelper.findExample(catalog, 
"circuit-breaker");
+        assertNotNull(entry);
+        assertEquals("eip/circuit-breaker", entry.getString("name"));
+    }
+
+    @Test
+    void shouldFindExampleByShortNameGroovy() {
+        List<JsonObject> catalog = ExampleHelper.loadCatalog();
+        JsonObject entry = ExampleHelper.findExample(catalog, "groovy");
+        assertNotNull(entry);
+        assertEquals("language/groovy", entry.getString("name"));
+    }
+
     @Test
     void shouldReturnNullForUnknownExample() {
         List<JsonObject> catalog = ExampleHelper.loadCatalog();
@@ -161,5 +177,9 @@ class ExampleHelperTest {
         assertTrue(names.contains("eip/circuit-breaker"));
         assertTrue(names.contains("messaging/mqtt"));
         assertTrue(names.contains("cloud/aws-sqs"));
+        // short names should also be included
+        assertTrue(names.contains("circuit-breaker"));
+        assertTrue(names.contains("mqtt"));
+        assertTrue(names.contains("aws-sqs"));
     }
 }

Reply via email to