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/12/19 00:09:46 UTC
(camel-karavan) branch main updated: Fix #955
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 78b7fe4b Fix #955
78b7fe4b is described below
commit 78b7fe4b81c37bd7af5feebaf7c3f922554f72e2
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Mon Dec 18 19:09:39 2023 -0500
Fix #955
---
karavan-designer/public/example/demo.camel.yaml | 41 ++++++++++++++--------
.../designer/property/property/BeanProperties.tsx | 1 -
.../src/designer/property/usePropertiesHook.tsx | 41 ++++++++++++++++------
.../src/designer/route/useRouteDesignerHook.tsx | 1 -
karavan-designer/src/designer/utils/CamelUi.tsx | 1 +
.../designer/property/property/BeanProperties.tsx | 1 -
.../src/designer/property/usePropertiesHook.tsx | 41 ++++++++++++++++------
.../src/designer/route/useRouteDesignerHook.tsx | 1 -
karavan-space/src/designer/utils/CamelUi.tsx | 1 +
.../designer/property/property/BeanProperties.tsx | 1 -
.../src/designer/property/usePropertiesHook.tsx | 41 ++++++++++++++++------
.../src/designer/route/useRouteDesignerHook.tsx | 1 -
.../src/main/webui/src/designer/utils/CamelUi.tsx | 1 +
13 files changed, 119 insertions(+), 54 deletions(-)
diff --git a/karavan-designer/public/example/demo.camel.yaml b/karavan-designer/public/example/demo.camel.yaml
index a56231a5..f1df17dc 100644
--- a/karavan-designer/public/example/demo.camel.yaml
+++ b/karavan-designer/public/example/demo.camel.yaml
@@ -1,19 +1,30 @@
-- beans:
- - 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
+ id: route-a947
+ nodePrefixId: route-a32
+ from:
+ id: from-c489
+ uri: kamelet:aws-ddb-streams-source
+ steps:
+ - setHeader:
+ id: setBody-4434
+ expression:
+ simple:
+ id: simple-abd8
+ expression: dddddd
+ - filter:
+ id: filter-929b
+ expression:
+ simple:
+ id: simple-d932
+ expression: Hello
+ steps:
+ - bean:
+ id: bean-120b
+ ref: xxx
+ - log:
+ id: log-d86e
+ message: ${body}!!!
+
# steps:
# - marshal:
# id: marshal-b68c
diff --git a/karavan-designer/src/designer/property/property/BeanProperties.tsx b/karavan-designer/src/designer/property/property/BeanProperties.tsx
index 2322d8f4..2d03ec22 100644
--- a/karavan-designer/src/designer/property/property/BeanProperties.tsx
+++ b/karavan-designer/src/designer/property/property/BeanProperties.tsx
@@ -16,7 +16,6 @@
*/
import React, {useEffect, useState} from 'react';
import {
- FormGroup,
TextInput, Button, Tooltip, Popover, InputGroup, InputGroupItem, capitalize,
} from '@patternfly/react-core';
import '../../karavan.css';
diff --git a/karavan-designer/src/designer/property/usePropertiesHook.tsx b/karavan-designer/src/designer/property/usePropertiesHook.tsx
index 67f0e5d4..f8b94498 100644
--- a/karavan-designer/src/designer/property/usePropertiesHook.tsx
+++ b/karavan-designer/src/designer/property/usePropertiesHook.tsx
@@ -26,6 +26,7 @@ import {RouteToCreate} from "../utils/CamelUi";
import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {CamelMetadataApi} from "karavan-core/lib/model/CamelMetadata";
+import {EventBus} from "../utils/EventBus";
export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = 'routes') {
@@ -147,18 +148,36 @@ export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = '
}
const convertStep = (step: CamelElement, targetDslName: string ) => {
- 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];
+ try {
+ // setSelectedStep(undefined);
+ if (targetDslName === 'ChoiceDefinition' && step.dslName === 'FilterDefinition') {
+ const clone = CamelUtil.cloneStep(step, true);
+ delete (clone as any).dslName;
+ delete (clone as any).stepName;
+ const when = CamelDefinitionApi.createWhenDefinition(clone);
+ const otherwise = CamelDefinitionApi.createOtherwiseDefinition(undefined);
+ const choice = CamelDefinitionApi.createChoiceDefinition({uuid: step.uuid, when: [when], otherwise: otherwise});
+ onPropertyUpdate(choice);
+ setSelectedStep(choice);
+ } else {
+ const clone = CamelUtil.cloneStep(step, false);
+ const metaSource = CamelMetadataApi.getCamelModelMetadataByClassName(clone.dslName);
+ const metaTarget = CamelMetadataApi.getCamelModelMetadataByClassName(targetDslName);
+ metaSource?.properties.forEach(pro => {
+ const toDelete = metaTarget?.properties.findIndex(x => x.name === pro.name) === -1;
+ if (toDelete) {
+ delete (clone as any)[pro.name];
+ }
+ })
+ delete (clone as any).dslName;
+ delete (clone as any).stepName;
+ const converted= CamelDefinitionApi.createStep(targetDslName, clone, true);
+ onPropertyUpdate(converted);
+ setSelectedStep(converted);
}
- })
- delete (step as any).dslName;
- const converted = CamelDefinitionApi.createStep(targetDslName, step, true);
- onPropertyUpdate(converted);
- setSelectedStep(converted)
+ } catch (e: any) {
+ EventBus.sendAlert('Error converting step', e.message, 'danger')
+ }
}
return {convertStep, cloneElement, onPropertyChange, onParametersChange, onDataFormatChange, onExpressionChange, getInternalComponentName}
diff --git a/karavan-designer/src/designer/route/useRouteDesignerHook.tsx b/karavan-designer/src/designer/route/useRouteDesignerHook.tsx
index 51b97e20..192988ab 100644
--- a/karavan-designer/src/designer/route/useRouteDesignerHook.tsx
+++ b/karavan-designer/src/designer/route/useRouteDesignerHook.tsx
@@ -254,7 +254,6 @@ export function useRouteDesignerHook () {
default:
const step = CamelDefinitionApi.createStep(dsl.dsl, undefined);
const augmentedStep = setDslDefaults(step);
- console.log(step, augmentedStep)
addStep(augmentedStep, parentId, position)
break;
}
diff --git a/karavan-designer/src/designer/utils/CamelUi.tsx b/karavan-designer/src/designer/utils/CamelUi.tsx
index 92858e09..02acba92 100644
--- a/karavan-designer/src/designer/utils/CamelUi.tsx
+++ b/karavan-designer/src/designer/utils/CamelUi.tsx
@@ -169,6 +169,7 @@ const INTEGRATION_PATTERNS = 'Integration Patterns';
const stepConvertMap = new Map<string, string>([
["SetBodyDefinition", "SetHeaderDefinition"],
["SetHeaderDefinition", "SetBodyDefinition"],
+ ["FilterDefinition", "ChoiceDefinition"],
]);
export class CamelUi {
diff --git a/karavan-space/src/designer/property/property/BeanProperties.tsx b/karavan-space/src/designer/property/property/BeanProperties.tsx
index 2322d8f4..2d03ec22 100644
--- a/karavan-space/src/designer/property/property/BeanProperties.tsx
+++ b/karavan-space/src/designer/property/property/BeanProperties.tsx
@@ -16,7 +16,6 @@
*/
import React, {useEffect, useState} from 'react';
import {
- FormGroup,
TextInput, Button, Tooltip, Popover, InputGroup, InputGroupItem, capitalize,
} from '@patternfly/react-core';
import '../../karavan.css';
diff --git a/karavan-space/src/designer/property/usePropertiesHook.tsx b/karavan-space/src/designer/property/usePropertiesHook.tsx
index 67f0e5d4..f8b94498 100644
--- a/karavan-space/src/designer/property/usePropertiesHook.tsx
+++ b/karavan-space/src/designer/property/usePropertiesHook.tsx
@@ -26,6 +26,7 @@ import {RouteToCreate} from "../utils/CamelUi";
import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {CamelMetadataApi} from "karavan-core/lib/model/CamelMetadata";
+import {EventBus} from "../utils/EventBus";
export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = 'routes') {
@@ -147,18 +148,36 @@ export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = '
}
const convertStep = (step: CamelElement, targetDslName: string ) => {
- 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];
+ try {
+ // setSelectedStep(undefined);
+ if (targetDslName === 'ChoiceDefinition' && step.dslName === 'FilterDefinition') {
+ const clone = CamelUtil.cloneStep(step, true);
+ delete (clone as any).dslName;
+ delete (clone as any).stepName;
+ const when = CamelDefinitionApi.createWhenDefinition(clone);
+ const otherwise = CamelDefinitionApi.createOtherwiseDefinition(undefined);
+ const choice = CamelDefinitionApi.createChoiceDefinition({uuid: step.uuid, when: [when], otherwise: otherwise});
+ onPropertyUpdate(choice);
+ setSelectedStep(choice);
+ } else {
+ const clone = CamelUtil.cloneStep(step, false);
+ const metaSource = CamelMetadataApi.getCamelModelMetadataByClassName(clone.dslName);
+ const metaTarget = CamelMetadataApi.getCamelModelMetadataByClassName(targetDslName);
+ metaSource?.properties.forEach(pro => {
+ const toDelete = metaTarget?.properties.findIndex(x => x.name === pro.name) === -1;
+ if (toDelete) {
+ delete (clone as any)[pro.name];
+ }
+ })
+ delete (clone as any).dslName;
+ delete (clone as any).stepName;
+ const converted= CamelDefinitionApi.createStep(targetDslName, clone, true);
+ onPropertyUpdate(converted);
+ setSelectedStep(converted);
}
- })
- delete (step as any).dslName;
- const converted = CamelDefinitionApi.createStep(targetDslName, step, true);
- onPropertyUpdate(converted);
- setSelectedStep(converted)
+ } catch (e: any) {
+ EventBus.sendAlert('Error converting step', e.message, 'danger')
+ }
}
return {convertStep, cloneElement, onPropertyChange, onParametersChange, onDataFormatChange, onExpressionChange, getInternalComponentName}
diff --git a/karavan-space/src/designer/route/useRouteDesignerHook.tsx b/karavan-space/src/designer/route/useRouteDesignerHook.tsx
index 51b97e20..192988ab 100644
--- a/karavan-space/src/designer/route/useRouteDesignerHook.tsx
+++ b/karavan-space/src/designer/route/useRouteDesignerHook.tsx
@@ -254,7 +254,6 @@ export function useRouteDesignerHook () {
default:
const step = CamelDefinitionApi.createStep(dsl.dsl, undefined);
const augmentedStep = setDslDefaults(step);
- console.log(step, augmentedStep)
addStep(augmentedStep, parentId, position)
break;
}
diff --git a/karavan-space/src/designer/utils/CamelUi.tsx b/karavan-space/src/designer/utils/CamelUi.tsx
index 92858e09..02acba92 100644
--- a/karavan-space/src/designer/utils/CamelUi.tsx
+++ b/karavan-space/src/designer/utils/CamelUi.tsx
@@ -169,6 +169,7 @@ const INTEGRATION_PATTERNS = 'Integration Patterns';
const stepConvertMap = new Map<string, string>([
["SetBodyDefinition", "SetHeaderDefinition"],
["SetHeaderDefinition", "SetBodyDefinition"],
+ ["FilterDefinition", "ChoiceDefinition"],
]);
export class CamelUi {
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/property/property/BeanProperties.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/property/property/BeanProperties.tsx
index 2322d8f4..2d03ec22 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/property/property/BeanProperties.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/property/property/BeanProperties.tsx
@@ -16,7 +16,6 @@
*/
import React, {useEffect, useState} from 'react';
import {
- FormGroup,
TextInput, Button, Tooltip, Popover, InputGroup, InputGroupItem, capitalize,
} from '@patternfly/react-core';
import '../../karavan.css';
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 67f0e5d4..f8b94498 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
@@ -26,6 +26,7 @@ import {RouteToCreate} from "../utils/CamelUi";
import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {CamelMetadataApi} from "karavan-core/lib/model/CamelMetadata";
+import {EventBus} from "../utils/EventBus";
export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = 'routes') {
@@ -147,18 +148,36 @@ export function usePropertiesHook (designerType: 'routes' | 'rest' | 'beans' = '
}
const convertStep = (step: CamelElement, targetDslName: string ) => {
- 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];
+ try {
+ // setSelectedStep(undefined);
+ if (targetDslName === 'ChoiceDefinition' && step.dslName === 'FilterDefinition') {
+ const clone = CamelUtil.cloneStep(step, true);
+ delete (clone as any).dslName;
+ delete (clone as any).stepName;
+ const when = CamelDefinitionApi.createWhenDefinition(clone);
+ const otherwise = CamelDefinitionApi.createOtherwiseDefinition(undefined);
+ const choice = CamelDefinitionApi.createChoiceDefinition({uuid: step.uuid, when: [when], otherwise: otherwise});
+ onPropertyUpdate(choice);
+ setSelectedStep(choice);
+ } else {
+ const clone = CamelUtil.cloneStep(step, false);
+ const metaSource = CamelMetadataApi.getCamelModelMetadataByClassName(clone.dslName);
+ const metaTarget = CamelMetadataApi.getCamelModelMetadataByClassName(targetDslName);
+ metaSource?.properties.forEach(pro => {
+ const toDelete = metaTarget?.properties.findIndex(x => x.name === pro.name) === -1;
+ if (toDelete) {
+ delete (clone as any)[pro.name];
+ }
+ })
+ delete (clone as any).dslName;
+ delete (clone as any).stepName;
+ const converted= CamelDefinitionApi.createStep(targetDslName, clone, true);
+ onPropertyUpdate(converted);
+ setSelectedStep(converted);
}
- })
- delete (step as any).dslName;
- const converted = CamelDefinitionApi.createStep(targetDslName, step, true);
- onPropertyUpdate(converted);
- setSelectedStep(converted)
+ } catch (e: any) {
+ EventBus.sendAlert('Error converting step', e.message, 'danger')
+ }
}
return {convertStep, cloneElement, onPropertyChange, onParametersChange, onDataFormatChange, onExpressionChange, getInternalComponentName}
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/useRouteDesignerHook.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/route/useRouteDesignerHook.tsx
index 51b97e20..192988ab 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/useRouteDesignerHook.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/useRouteDesignerHook.tsx
@@ -254,7 +254,6 @@ export function useRouteDesignerHook () {
default:
const step = CamelDefinitionApi.createStep(dsl.dsl, undefined);
const augmentedStep = setDslDefaults(step);
- console.log(step, augmentedStep)
addStep(augmentedStep, parentId, position)
break;
}
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/utils/CamelUi.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/utils/CamelUi.tsx
index 92858e09..02acba92 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/utils/CamelUi.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/utils/CamelUi.tsx
@@ -169,6 +169,7 @@ const INTEGRATION_PATTERNS = 'Integration Patterns';
const stepConvertMap = new Map<string, string>([
["SetBodyDefinition", "SetHeaderDefinition"],
["SetHeaderDefinition", "SetBodyDefinition"],
+ ["FilterDefinition", "ChoiceDefinition"],
]);
export class CamelUi {