You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2023/06/24 17:18:47 UTC

[camel-karavan] 01/02: Fix #787

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

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 7f24e49f578c7f892609856a83b3a343054463fe
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Sat Jun 24 13:17:00 2023 -0400

    Fix #787
---
 karavan-core/src/core/api/CamelDefinitionYaml.ts   | 34 ++++++++++++----------
 .../src/core/api/CamelDefinitionYamlStep.ts        | 10 +++----
 .../CamelDefinitionYamlStepGenerator.java          |  8 +++--
 3 files changed, 29 insertions(+), 23 deletions(-)

diff --git a/karavan-core/src/core/api/CamelDefinitionYaml.ts b/karavan-core/src/core/api/CamelDefinitionYaml.ts
index 5c63b108..1343c8eb 100644
--- a/karavan-core/src/core/api/CamelDefinitionYaml.ts
+++ b/karavan-core/src/core/api/CamelDefinitionYaml.ts
@@ -112,20 +112,19 @@ export class CamelDefinitionYaml {
             let newValue: any = JSON.parse(JSON.stringify(value));
             delete newValue.dslName;
             delete newValue[stepNameField];
-            // if ((value.inArray && !value.inSteps
-            //     && ["intercept",
-            //         "interceptFrom",
-            //         "interceptSendToEndpoint",
-            //         "onCompletion",
-            //         "onException"]
-            //         .includes(stepName))) {
-            //     delete newValue.inArray;
-            //     delete newValue.inSteps;
-            //     const xValue: any = {};
-            //     xValue[stepName] = newValue;
-            //     return xValue;
-            // } else
-            if ((value.inArray && !value.inSteps)
+            if ((value.inArray && !value.inSteps
+                && ["intercept",
+                    "interceptFrom",
+                    "interceptSendToEndpoint",
+                    "onCompletion",
+                    "onException"]
+                    .includes(stepName))) {
+                delete newValue.inArray;
+                delete newValue.inSteps;
+                const xValue: any = {};
+                xValue[stepName] = newValue;
+                return xValue;
+            } else if ((value.inArray && !value.inSteps)
                 || dslName === 'ExpressionSubElementDefinition'
                 || dslName === 'ExpressionDefinition'
                 || dslName?.endsWith('Expression')
@@ -134,7 +133,6 @@ export class CamelDefinitionYaml {
                 || stepName === 'resilience4jConfiguration'
                 || stepName === 'faultToleranceConfiguration'
                 || stepName === 'errorHandler'
-                || stepName === 'onException'
                 || stepName === 'deadLetterChannel'
                 || stepName === 'defaultErrorHandler'
                 || stepName === 'jtaTransactionErrorHandler'
@@ -207,6 +205,12 @@ export class CamelDefinitionYaml {
             .forEach((f: any) =>  result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({onException: f.onException}))));
         flows.filter((e: any) => e.hasOwnProperty('intercept'))
             .forEach((f: any) =>  result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({intercept: f.intercept}))));
+        flows.filter((e: any) => e.hasOwnProperty('interceptFrom'))
+            .forEach((f: any) =>  result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({interceptFrom: f.interceptFrom}))));
+        flows.filter((e: any) => e.hasOwnProperty('interceptSendToEndpoint'))
+            .forEach((f: any) =>  result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({interceptSendToEndpoint: f.interceptSendToEndpoint}))));
+        flows.filter((e: any) => e.hasOwnProperty('onCompletion'))
+            .forEach((f: any) =>  result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({onCompletion: f.onCompletion}))));
         return result;
     }
 
diff --git a/karavan-core/src/core/api/CamelDefinitionYamlStep.ts b/karavan-core/src/core/api/CamelDefinitionYamlStep.ts
index 0f96dc0d..c31272f9 100644
--- a/karavan-core/src/core/api/CamelDefinitionYamlStep.ts
+++ b/karavan-core/src/core/api/CamelDefinitionYamlStep.ts
@@ -2008,9 +2008,9 @@ export class CamelDefinitionYamlStep {
     static readRouteConfigurationDefinition = (element: any): RouteConfigurationDefinition => {
         
         let def = element ? new RouteConfigurationDefinition({...element}) : new RouteConfigurationDefinition();
-        def.onCompletion = element && element?.onCompletion ? element?.onCompletion.map((x:any) => CamelDefinitionYamlStep.readOnCompletionDefinition(x)) :[]; 
-        def.interceptSendToEndpoint = element && element?.interceptSendToEndpoint ? element?.interceptSendToEndpoint.map((x:any) => CamelDefinitionYamlStep.readInterceptSendToEndpointDefinition(x)) :[]; 
-        def.intercept = element && element?.intercept ? element?.intercept.map((x:any) => CamelDefinitionYamlStep.readInterceptDefinition(x)) :[]; 
+        def.onCompletion = element && element?.onCompletion ? element?.onCompletion.map((x:any) => CamelDefinitionYamlStep.readOnCompletionDefinition(x.onCompletion)) :[]; 
+        def.interceptSendToEndpoint = element && element?.interceptSendToEndpoint ? element?.interceptSendToEndpoint.map((x:any) => CamelDefinitionYamlStep.readInterceptSendToEndpointDefinition(x.interceptSendToEndpoint)) :[]; 
+        def.intercept = element && element?.intercept ? element?.intercept.map((x:any) => CamelDefinitionYamlStep.readInterceptDefinition(x.intercept)) :[]; 
         if (element?.errorHandler !== undefined) { 
             if (Array.isArray(element.errorHandler)) { 
                def.errorHandler = CamelDefinitionYamlStep.readErrorHandlerDefinition(element.errorHandler[0]); 
@@ -2018,8 +2018,8 @@ export class CamelDefinitionYamlStep {
                def.errorHandler = CamelDefinitionYamlStep.readErrorHandlerDefinition(element.errorHandler); 
             } 
         } 
-        def.onException = element && element?.onException ? element?.onException.map((x:any) => CamelDefinitionYamlStep.readOnExceptionDefinition(x)) :[]; 
-        def.interceptFrom = element && element?.interceptFrom ? element?.interceptFrom.map((x:any) => CamelDefinitionYamlStep.readInterceptFromDefinition(x)) :[]; 
+        def.onException = element && element?.onException ? element?.onException.map((x:any) => CamelDefinitionYamlStep.readOnExceptionDefinition(x.onException)) :[]; 
+        def.interceptFrom = element && element?.interceptFrom ? element?.interceptFrom.map((x:any) => CamelDefinitionYamlStep.readInterceptFromDefinition(x.interceptFrom)) :[]; 
 
         return def;
     }
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionYamlStepGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionYamlStepGenerator.java
index fdb82864..f1c87d18 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionYamlStepGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelDefinitionYamlStepGenerator.java
@@ -111,9 +111,11 @@ public final class CamelDefinitionYamlStepGenerator extends AbstractGenerator {
                 if (isAttributeRefArray(aValue) && aName.equals("steps") && ! className.equals("ChoiceDefinition") && ! className.equals("SwitchDefinition") && ! className.equals("KameletDefinition")) {
                     attrs.put(aName, "        def.steps = CamelDefinitionYamlStep.readSteps(element?.steps);\n");
                 } else if (isAttributeRefArray(aValue) && !aName.equals("steps")) {
-                    String code = String.format(
-                            "        def.%1$s = element && element?.%1$s ? element?.%1$s.map((x:any) => CamelDefinitionYamlStep.read%2$s(x)) :[]; \n"
-                            , aName, getAttributeArrayClass(aValue));
+                    String format = Arrays.asList("intercept", "interceptFrom", "interceptSendToEndpoint", "onCompletion", "onException").contains(aName)
+                            ? "        def.%1$s = element && element?.%1$s ? element?.%1$s.map((x:any) => CamelDefinitionYamlStep.read%2$s(x.%1$s)) :[]; \n"
+                            : "        def.%1$s = element && element?.%1$s ? element?.%1$s.map((x:any) => CamelDefinitionYamlStep.read%2$s(x)) :[]; \n";
+
+                    String code = String.format(format, aName, getAttributeArrayClass(aValue));
                     attrs.put(aName, code);
                 } else if (isAttributeRef(aValue) && getAttributeClass(aValue).equals("ExpressionDefinition")) { // Expressions implicits
                     String code = String.format(