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


The following commit(s) were added to refs/heads/main by this push:
     new 48f3ffd8 Fix #956
48f3ffd8 is described below

commit 48f3ffd8be8cd6d0eacb23364f35ca4ed04c76a4
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Mon Dec 18 17:44:46 2023 -0500

    Fix #956
---
 karavan-designer/public/example/demo.camel.yaml    | 38 +++++++++-------------
 .../src/designer/property/usePropertiesHook.tsx    | 19 +++++++----
 .../src/designer/property/usePropertiesHook.tsx    | 19 +++++++----
 .../src/designer/property/usePropertiesHook.tsx    | 19 +++++++----
 4 files changed, 54 insertions(+), 41 deletions(-)

diff --git a/karavan-designer/public/example/demo.camel.yaml 
b/karavan-designer/public/example/demo.camel.yaml
index 5f3d364c..a56231a5 100644
--- a/karavan-designer/public/example/demo.camel.yaml
+++ b/karavan-designer/public/example/demo.camel.yaml
@@ -1,27 +1,19 @@
-#- route:
-#    nodePrefixId: route-1e7
-#    id: route-3f85
-#    from:
-#      uri: timer
-#      id: from-cfa5
-#      steps:
-#        - choice:
-#            when:
-#              - expression:
-#                  simple:
-#                    id: simple-d546
-#                id: when-f549
-#            otherwise:
-#              id: otherwise-cda7
-#            id: choice-50fe
-#- rest:
-#    id: rest-2333
-#    put:
-#      - id: put-5a13
 - beans:
-    - constructors: {}
-    - constructors: {}
-
+      - constructors: {}
+      - constructors: {}
+- route:
+      id: route-a947
+      nodePrefixId: route-a32
+      from:
+          id: from-c489
+          uri: kamelet:aws-ddb-streams-source
+          steps:
+              - setBody:
+                    id: setBody-4434
+                    expression:
+                        simple:
+                            id: simple-abd8
+                            expression: dddddd
 #      steps:
 #        - marshal:
 #            id: marshal-b68c
diff --git a/karavan-designer/src/designer/property/usePropertiesHook.tsx 
b/karavan-designer/src/designer/property/usePropertiesHook.tsx
index 41ac95af..67f0e5d4 100644
--- a/karavan-designer/src/designer/property/usePropertiesHook.tsx
+++ b/karavan-designer/src/designer/property/usePropertiesHook.tsx
@@ -25,6 +25,7 @@ import {CamelDefinitionApi} from 
"karavan-core/lib/api/CamelDefinitionApi";
 import {RouteToCreate} from "../utils/CamelUi";
 import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {CamelMetadataApi} from "karavan-core/lib/model/CamelMetadata";
 
 export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = 
'routes') {
 
@@ -146,12 +147,18 @@ export function usePropertiesHook (designerType: 'routes' 
| 'rest' | 'beans' = '
     }
 
     const convertStep = (step: CamelElement, targetDslName: string ) => {
-        // const clone = CamelUtil.cloneIntegration(integration);
-        // const i = CamelDefinitionApiExt.addStepToIntegration(clone, step, 
parentId, position);
-        // const selectedStep = step.dslName === 'RouteDefinition' ? (step as 
RouteDefinition).from  : step;
-        // setIntegration(i, false);
-        // setSelectedStep(selectedStep);
-        // setSelectedUuids([selectedStep.uuid]);
+        const metaSource = 
CamelMetadataApi.getCamelModelMetadataByClassName(step.dslName);
+        const metaTarget = 
CamelMetadataApi.getCamelModelMetadataByClassName(targetDslName);
+        metaSource?.properties.forEach(pro => {
+            const toDelete = metaTarget?.properties.findIndex(x => x.name === 
pro.name) === -1;
+            if (toDelete) {
+                delete (step as any)[pro.name];
+            }
+        })
+        delete (step as any).dslName;
+        const converted = CamelDefinitionApi.createStep(targetDslName, step, 
true);
+        onPropertyUpdate(converted);
+        setSelectedStep(converted)
     }
 
     return {convertStep, cloneElement, onPropertyChange, onParametersChange, 
onDataFormatChange, onExpressionChange, getInternalComponentName}
diff --git a/karavan-space/src/designer/property/usePropertiesHook.tsx 
b/karavan-space/src/designer/property/usePropertiesHook.tsx
index 41ac95af..67f0e5d4 100644
--- a/karavan-space/src/designer/property/usePropertiesHook.tsx
+++ b/karavan-space/src/designer/property/usePropertiesHook.tsx
@@ -25,6 +25,7 @@ import {CamelDefinitionApi} from 
"karavan-core/lib/api/CamelDefinitionApi";
 import {RouteToCreate} from "../utils/CamelUi";
 import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {CamelMetadataApi} from "karavan-core/lib/model/CamelMetadata";
 
 export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = 
'routes') {
 
@@ -146,12 +147,18 @@ export function usePropertiesHook (designerType: 'routes' 
| 'rest' | 'beans' = '
     }
 
     const convertStep = (step: CamelElement, targetDslName: string ) => {
-        // const clone = CamelUtil.cloneIntegration(integration);
-        // const i = CamelDefinitionApiExt.addStepToIntegration(clone, step, 
parentId, position);
-        // const selectedStep = step.dslName === 'RouteDefinition' ? (step as 
RouteDefinition).from  : step;
-        // setIntegration(i, false);
-        // setSelectedStep(selectedStep);
-        // setSelectedUuids([selectedStep.uuid]);
+        const metaSource = 
CamelMetadataApi.getCamelModelMetadataByClassName(step.dslName);
+        const metaTarget = 
CamelMetadataApi.getCamelModelMetadataByClassName(targetDslName);
+        metaSource?.properties.forEach(pro => {
+            const toDelete = metaTarget?.properties.findIndex(x => x.name === 
pro.name) === -1;
+            if (toDelete) {
+                delete (step as any)[pro.name];
+            }
+        })
+        delete (step as any).dslName;
+        const converted = CamelDefinitionApi.createStep(targetDslName, step, 
true);
+        onPropertyUpdate(converted);
+        setSelectedStep(converted)
     }
 
     return {convertStep, cloneElement, onPropertyChange, onParametersChange, 
onDataFormatChange, onExpressionChange, getInternalComponentName}
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/designer/property/usePropertiesHook.tsx
 
b/karavan-web/karavan-app/src/main/webui/src/designer/property/usePropertiesHook.tsx
index 41ac95af..67f0e5d4 100644
--- 
a/karavan-web/karavan-app/src/main/webui/src/designer/property/usePropertiesHook.tsx
+++ 
b/karavan-web/karavan-app/src/main/webui/src/designer/property/usePropertiesHook.tsx
@@ -25,6 +25,7 @@ import {CamelDefinitionApi} from 
"karavan-core/lib/api/CamelDefinitionApi";
 import {RouteToCreate} from "../utils/CamelUi";
 import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {CamelMetadataApi} from "karavan-core/lib/model/CamelMetadata";
 
 export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = 
'routes') {
 
@@ -146,12 +147,18 @@ export function usePropertiesHook (designerType: 'routes' 
| 'rest' | 'beans' = '
     }
 
     const convertStep = (step: CamelElement, targetDslName: string ) => {
-        // const clone = CamelUtil.cloneIntegration(integration);
-        // const i = CamelDefinitionApiExt.addStepToIntegration(clone, step, 
parentId, position);
-        // const selectedStep = step.dslName === 'RouteDefinition' ? (step as 
RouteDefinition).from  : step;
-        // setIntegration(i, false);
-        // setSelectedStep(selectedStep);
-        // setSelectedUuids([selectedStep.uuid]);
+        const metaSource = 
CamelMetadataApi.getCamelModelMetadataByClassName(step.dslName);
+        const metaTarget = 
CamelMetadataApi.getCamelModelMetadataByClassName(targetDslName);
+        metaSource?.properties.forEach(pro => {
+            const toDelete = metaTarget?.properties.findIndex(x => x.name === 
pro.name) === -1;
+            if (toDelete) {
+                delete (step as any)[pro.name];
+            }
+        })
+        delete (step as any).dslName;
+        const converted = CamelDefinitionApi.createStep(targetDslName, step, 
true);
+        onPropertyUpdate(converted);
+        setSelectedStep(converted)
     }
 
     return {convertStep, cloneElement, onPropertyChange, onParametersChange, 
onDataFormatChange, onExpressionChange, getInternalComponentName}

Reply via email to