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 2de3e3aa538 CAMEL-20687: camel-kamelet - Make kamelets that have ids 
assigned - t… (#13849)
2de3e3aa538 is described below

commit 2de3e3aa5387a57852d7ff7ac0168337e1668895
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Apr 18 17:40:39 2024 +0200

    CAMEL-20687: camel-kamelet - Make kamelets that have ids assigned - t… 
(#13849)
    
    * CAMEL-20687: camel-kamelet - Make kamelets that have ids assigned - to 
use nodePrefixId for avoid duplicate id clashes
    
    * CAMEL-20687: camel-kamelet - Make kamelets that have ids assigned - to 
use nodePrefixId for avoid duplicate id clashes
---
 .../java/org/apache/camel/component/kamelet/Kamelet.java  | 12 ++++++++++--
 .../apache/camel/component/kamelet/KameletComponent.java  |  9 +++++++--
 .../apache/camel/component/kamelet/KameletRouteTest.java  | 15 ---------------
 3 files changed, 17 insertions(+), 19 deletions(-)

diff --git 
a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/Kamelet.java
 
b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/Kamelet.java
index 3db8c6f8250..0432b9d1f16 100644
--- 
a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/Kamelet.java
+++ 
b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/Kamelet.java
@@ -43,6 +43,7 @@ public final class Kamelet {
     public static final String PARAM_ROUTE_ID = "routeId";
     public static final String PARAM_TEMPLATE_ID = "templateId";
     public static final String PARAM_LOCATION = "location";
+    public static final String PARAM_UUID = "uuid";
     public static final String DEFAULT_LOCATION = "classpath:/kamelets";
     public static final String NO_ERROR_HANDLER = "noErrorHandler";
 
@@ -77,7 +78,11 @@ public final class Kamelet {
         return answer;
     }
 
-    public static String extractRouteId(CamelContext context, String 
remaining, Map<String, Object> parameters) {
+    public static String extractUuid() {
+        return UUID.generateUuid();
+    }
+
+    public static String extractRouteId(CamelContext context, String 
remaining, Map<String, Object> parameters, String uuid) {
         Object param = parameters.get(PARAM_ROUTE_ID);
         if (param != null) {
             return CamelContextHelper.mandatoryConvertTo(context, 
String.class, param);
@@ -92,7 +97,7 @@ public final class Kamelet {
             answer = StringHelper.after(remaining, "/");
         }
         if (answer == null) {
-            answer = extractTemplateId(context, remaining, parameters) + "-" + 
UUID.generateUuid();
+            answer = extractTemplateId(context, remaining, parameters) + "-" + 
uuid;
         }
 
         return answer;
@@ -126,8 +131,10 @@ public final class Kamelet {
     public static RouteDefinition templateToRoute(RouteTemplateDefinition in, 
Map<String, Object> parameters) {
         final String rid = (String) parameters.get(PARAM_ROUTE_ID);
         final boolean noErrorHandler = (boolean) 
parameters.get(NO_ERROR_HANDLER);
+        final String uuid = (String) parameters.get(PARAM_UUID);
 
         ObjectHelper.notNull(rid, PARAM_ROUTE_ID);
+        ObjectHelper.notNull(uuid, PARAM_UUID);
 
         RouteDefinition def = in.asRouteDefinition();
         // mark this as created from a kamelet
@@ -135,6 +142,7 @@ public final class Kamelet {
         def.setLocation(in.getLocation());
         def.setLineNumber(in.getLineNumber());
         def.setId(rid);
+        def.setNodePrefixId(uuid);
         if (noErrorHandler) {
             def.setErrorHandlerFactory(new NoErrorHandlerBuilder());
         }
diff --git 
a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletComponent.java
 
b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletComponent.java
index eede00621b4..06b1ace5cd2 100644
--- 
a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletComponent.java
+++ 
b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/KameletComponent.java
@@ -49,6 +49,7 @@ import static 
org.apache.camel.component.kamelet.Kamelet.NO_ERROR_HANDLER;
 import static org.apache.camel.component.kamelet.Kamelet.PARAM_LOCATION;
 import static org.apache.camel.component.kamelet.Kamelet.PARAM_ROUTE_ID;
 import static org.apache.camel.component.kamelet.Kamelet.PARAM_TEMPLATE_ID;
+import static org.apache.camel.component.kamelet.Kamelet.PARAM_UUID;
 
 /**
  * Materialize route templates
@@ -105,12 +106,14 @@ public class KameletComponent extends DefaultComponent {
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
         final String templateId = Kamelet.extractTemplateId(getCamelContext(), 
remaining, parameters);
-        final String routeId = Kamelet.extractRouteId(getCamelContext(), 
remaining, parameters);
+        final String uuid = Kamelet.extractUuid();
+        final String routeId = Kamelet.extractRouteId(getCamelContext(), 
remaining, parameters, uuid);
         final String loc = Kamelet.extractLocation(getCamelContext(), 
parameters);
 
         parameters.remove(PARAM_TEMPLATE_ID);
         parameters.remove(PARAM_ROUTE_ID);
         parameters.remove(PARAM_LOCATION);
+        parameters.remove(PARAM_UUID);
 
         // manually need to resolve raw parameters as input to the kamelet 
because
         // resolveRawParameterValues is false
@@ -224,6 +227,7 @@ public class KameletComponent extends DefaultComponent {
             //
             kameletProperties.put(PARAM_TEMPLATE_ID, templateId);
             kameletProperties.put(PARAM_ROUTE_ID, routeId);
+            kameletProperties.put(PARAM_UUID, uuid);
             kameletProperties.put(NO_ERROR_HANDLER, 
endpoint.isNoErrorHandler());
 
             // set kamelet specific properties
@@ -415,6 +419,7 @@ public class KameletComponent extends DefaultComponent {
             final String templateId = endpoint.getTemplateId();
             final String routeId = endpoint.getRouteId();
             final String loc = endpoint.getLocation() != null ? 
endpoint.getLocation() : getLocation();
+            final String uuid = (String) 
endpoint.getKameletProperties().get(PARAM_UUID);
 
             if (context.getRouteTemplateDefinition(templateId) == null && loc 
!= null) {
                 LOGGER.debug("Loading route template={} from {}", templateId, 
loc);
@@ -424,7 +429,7 @@ public class KameletComponent extends DefaultComponent {
 
             LOGGER.debug("Creating route from template={} and id={}", 
templateId, routeId);
             try {
-                String id = context.addRouteFromTemplate(routeId, templateId, 
endpoint.getKameletProperties());
+                String id = context.addRouteFromTemplate(routeId, templateId, 
uuid, endpoint.getKameletProperties());
                 RouteDefinition def = context.getRouteDefinition(id);
 
                 // start the route if not already started
diff --git 
a/components/camel-kamelet/src/test/java/org/apache/camel/component/kamelet/KameletRouteTest.java
 
b/components/camel-kamelet/src/test/java/org/apache/camel/component/kamelet/KameletRouteTest.java
index 3e6b1b1cbe2..052e09311b8 100644
--- 
a/components/camel-kamelet/src/test/java/org/apache/camel/component/kamelet/KameletRouteTest.java
+++ 
b/components/camel-kamelet/src/test/java/org/apache/camel/component/kamelet/KameletRouteTest.java
@@ -18,14 +18,12 @@ package org.apache.camel.component.kamelet;
 
 import java.util.UUID;
 
-import org.apache.camel.FailedToCreateRouteException;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class KameletRouteTest extends CamelTestSupport {
     @Test
@@ -44,19 +42,6 @@ public class KameletRouteTest extends CamelTestSupport {
                 
fluentTemplate.toF("direct:chain").withBody(body).request(String.class)).isEqualTo("b-a-"
 + body);
     }
 
-    @Test
-    public void duplicateRouteId() {
-        RouteBuilder rb = new RouteBuilder(context) {
-            @Override
-            public void configure() {
-                from("direct:start")
-                        .to("kamelet:echo/test?prefix=test");
-            }
-        };
-
-        assertThrows(FailedToCreateRouteException.class, () -> 
rb.addRoutesToCamelContext(context));
-    }
-
     // **********************************************
     //
     // test set-up

Reply via email to