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 {