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 2021/11/03 21:13:43 UTC
[camel-karavan] branch main updated: Fixed #76 (#77)
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 eadc47e Fixed #76 (#77)
eadc47e is described below
commit eadc47e291f34435e387a7a0189fa48d3757d1ce
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Wed Nov 3 17:13:37 2021 -0400
Fixed #76 (#77)
---
karavan-designer/src/App.tsx | 18 ++++++++------
karavan-designer/src/designer/api/CamelApi.tsx | 29 ++++++++++++++--------
karavan-designer/src/designer/api/CamelUi.tsx | 22 ++++++++++------
karavan-designer/src/designer/ui/DslProperties.tsx | 2 +-
.../src/designer/ui/KaravanDesigner.tsx | 7 +++++-
.../karavan/generator/CamelModelGenerator.java | 8 +++---
.../src/main/resources/CamelApi.camelize.tx | 12 ++++++++-
7 files changed, 67 insertions(+), 31 deletions(-)
diff --git a/karavan-designer/src/App.tsx b/karavan-designer/src/App.tsx
index bf5d01e..a331f5d 100644
--- a/karavan-designer/src/App.tsx
+++ b/karavan-designer/src/App.tsx
@@ -45,13 +45,17 @@ class App extends React.Component<Props, State> {
' - from:\n' +
' uri: \'kamelet:http-secured-source\'\n' +
' steps:\n' +
- ' - set-body:\n' +
- ' expression: \n' +
- ' constant: "Hello Yaml !!!"\n' +
- ' - set-body:\n' +
- ' constant: "Hello Yaml !!!"\n' +
- ' - pollEnrich:\n' +
- ' expression: {}',
+ // ' - set-body:\n' +
+ // ' expression: \n' +
+ // ' constant: "Hello Yaml !!!"\n' +
+ // ' - set-body:\n' +
+ // ' constant: "Hello Yaml !!!"\n' +
+ // ' - pollEnrich:\n' +
+ // ' expression: {}\n' +
+ // ' - to: \n' +
+ // ' uri: "log:info"\n' +
+ ' - to: "log:info"\n'
+ ,
key: ''
};
diff --git a/karavan-designer/src/designer/api/CamelApi.tsx b/karavan-designer/src/designer/api/CamelApi.tsx
index 9baf364..5556525 100644
--- a/karavan-designer/src/designer/api/CamelApi.tsx
+++ b/karavan-designer/src/designer/api/CamelApi.tsx
@@ -8,7 +8,7 @@ import { CamelElement,
PolicyStep,
SetPropertyStep,
SagaStep,
- TodStep,
+ ToDStep,
ThreadsStep,
InterceptSendToEndpointStep,
LogStep,
@@ -92,17 +92,25 @@ export class CamelApi {
return firstSmall ? res[0].toLowerCase() + res.substring(1) : res;
};
+ static camelizeBody = (name: string, body: any, clone: boolean): any => {
+ if (body){
+ const oldKey = Object.keys(body)[0];
+ const key = CamelApi.camelizeName(oldKey, '-', true);
+ return !clone && key === name ? {[key]: body[oldKey]} : body;
+ } else {
+ return {};
+ }
+ };
+
static createStep = (name: string, body: any, clone: boolean = false): CamelElement => {
- const oldKey = Object.keys(body)[0];
- const key = CamelApi.camelizeName(oldKey, '-', true);
- const newBody = !clone && key === name ? {[key]: body[oldKey]} : body;
+ const newBody = CamelApi.camelizeBody(name, body, clone);
switch (name){
case 'from': return CamelApi.createFrom(newBody);
case 'expression': return CamelApi.createExpression(newBody);
case 'policy': return CamelApi.createPolicy(newBody);
case 'setProperty': return CamelApi.createSetProperty(newBody);
case 'saga': return CamelApi.createSaga(newBody);
- case 'tod': return CamelApi.createTod(newBody);
+ case 'toD': return CamelApi.createToD(newBody);
case 'threads': return CamelApi.createThreads(newBody);
case 'interceptSendToEndpoint': return CamelApi.createInterceptSendToEndpoint(newBody);
case 'log': return CamelApi.createLog(newBody);
@@ -202,10 +210,10 @@ export class CamelApi {
return sagaStep;
}
- static createTod = (element: any): TodStep => {
- const todStep = element ? new TodStep({...element.tod}) : new TodStep();
- todStep.uuid = element?.uuid ? element.uuid : todStep.uuid;
- return todStep;
+ static createToD = (element: any): ToDStep => {
+ const toDStep = element ? new ToDStep({...element.toD}) : new ToDStep();
+ toDStep.uuid = element?.uuid ? element.uuid : toDStep.uuid;
+ return toDStep;
}
static createThreads = (element: any): ThreadsStep => {
@@ -581,6 +589,7 @@ export class CamelApi {
}
static createTo = (element: any): ToStep => {
+ if (typeof element.to !== 'object') element.to = {uri: element.to};
const toStep = element ? new ToStep({...element.to}) : new ToStep();
toStep.uuid = element?.uuid ? element.uuid : toStep.uuid;
return toStep;
@@ -751,7 +760,7 @@ export class CamelApi {
case 'policyStep': return (step as PolicyStep).policy
case 'setPropertyStep': return (step as SetPropertyStep).setProperty
case 'sagaStep': return (step as SagaStep).saga
- case 'todStep': return (step as TodStep).tod
+ case 'toDStep': return (step as ToDStep).toD
case 'threadsStep': return (step as ThreadsStep).threads
case 'interceptSendToEndpointStep': return (step as InterceptSendToEndpointStep).interceptSendToEndpoint
case 'logStep': return (step as LogStep).log
diff --git a/karavan-designer/src/designer/api/CamelUi.tsx b/karavan-designer/src/designer/api/CamelUi.tsx
index e18a8fb..e18fbda 100644
--- a/karavan-designer/src/designer/api/CamelUi.tsx
+++ b/karavan-designer/src/designer/api/CamelUi.tsx
@@ -207,14 +207,20 @@ export class CamelUi {
};
static getComponentProperties = (element: any, advanced: boolean): ComponentProperty[] => {
- const uri: string = (element as any).uri;
- const name = ComponentApi.getComponentNameFromUri(uri);
- if (name){
- const component = ComponentApi.findByName(name);
- return component ? ComponentApi.getComponentProperties(component?.component.name, element.dslName === 'from' ? 'consumer' : 'producer', advanced) : [];
- } else {
- return [];
- }
+ const dslName: string = (element as any).dslName;
+ if (dslName === 'toD'){
+ const component = ComponentApi.findByName(dslName);
+ return component ? ComponentApi.getComponentProperties(component?.component.name,'producer', advanced) : [];
+ } else {
+ const uri: string = (element as any).uri;
+ const name = ComponentApi.getComponentNameFromUri(uri);
+ if (name){
+ const component = ComponentApi.findByName(name);
+ return component ? ComponentApi.getComponentProperties(component?.component.name, element.dslName === 'from' ? 'consumer' : 'producer', advanced) : [];
+ } else {
+ return [];
+ }
+ }
};
static getTitle = (element: CamelElement): string => {
diff --git a/karavan-designer/src/designer/ui/DslProperties.tsx b/karavan-designer/src/designer/ui/DslProperties.tsx
index 9492c33..d55e016 100644
--- a/karavan-designer/src/designer/ui/DslProperties.tsx
+++ b/karavan-designer/src/designer/ui/DslProperties.tsx
@@ -364,7 +364,7 @@ export class DslProperties extends React.Component<Props, State> {
}>
{['string', 'duration', 'integer', 'number'].includes(property.type) && !property.enumVals &&
<TextInput
- isReadOnly={property.name === 'uri'}
+ isReadOnly={property.name === 'uri' && this.state.element?.dslName !== 'toD'}
className="text-field" isRequired
type={['integer', 'number'].includes(property.type) ? 'number' : (property.secret ? "password" : "text")}
id={property.name} name={property.name}
diff --git a/karavan-designer/src/designer/ui/KaravanDesigner.tsx b/karavan-designer/src/designer/ui/KaravanDesigner.tsx
index abf7d4e..0f594ee 100644
--- a/karavan-designer/src/designer/ui/KaravanDesigner.tsx
+++ b/karavan-designer/src/designer/ui/KaravanDesigner.tsx
@@ -125,6 +125,7 @@ export class KaravanDesigner extends React.Component<Props, State> {
}
onDslSelect = (dsl: DslMetaModel, parentId: string) => {
+ console.log(dsl)
switch (dsl.dsl) {
case 'from' :
const from = CamelApi.createStep(dsl.dsl, {from: {uri: dsl.uri}});
@@ -134,12 +135,16 @@ export class KaravanDesigner extends React.Component<Props, State> {
const to = CamelApi.createStep(dsl.dsl, {to: {uri: dsl.uri}});
this.addStep(to, parentId)
break;
+ case 'toD' :
+ const toD = CamelApi.createStep(dsl.dsl, {toD: {uri: dsl.uri}});
+ this.addStep(toD, parentId)
+ break;
case 'kamelet' :
const kamelet = CamelApi.createStep(dsl.dsl, {kamelet: {name: dsl.name}});
this.addStep(kamelet, parentId)
break;
default:
- const step = CamelApi.createStep(dsl.dsl, {});
+ const step = CamelApi.createStep(dsl.dsl, undefined);
this.addStep(step, parentId)
break;
}
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelModelGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelModelGenerator.java
index a946c90..2b52154 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelModelGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelModelGenerator.java
@@ -81,6 +81,7 @@ public final class CamelModelGenerator {
e -> e.getValue()
)).forEach((s, o) -> {
String name = camelize(s, "-");
+ if (name.equalsIgnoreCase("tod")) name = "ToD";
String className = classNameFromRef(procList.getJsonObject(s).getString("$ref"));
processors.put(className, name);
});
@@ -134,9 +135,7 @@ public final class CamelModelGenerator {
camelApi.append(
" static createStep = (name: string, body: any, clone: boolean = false): CamelElement => {\n" +
- " const oldKey = Object.keys(body)[0];\n" +
- " const key = CamelApi.camelizeName(oldKey, '-', true);\n" +
- " const newBody = !clone && key === name ? {[key]: body[oldKey]} : body;\n" +
+ " const newBody = CamelApi.camelizeBody(name, body, clone);\n" +
" switch (name){\n" +
" case 'from': return CamelApi.createFrom(newBody);\n" +
" case 'expression': return CamelApi.createExpression(newBody);\n");
@@ -337,6 +336,9 @@ public final class CamelModelGenerator {
String funcName = "create".concat(capitalize(name));
StringBuilder f = new StringBuilder();
f.append(String.format(" static %s = (element: any): %s => {\n", funcName, stepClass));
+ if (stepClass.equals("ToStep") || stepClass.equals("TodStep")) {
+ f.append(String.format(" if (typeof element.%1$s !== 'object') element.%1$s = {uri: element.%1$s};\n", elementName));
+ }
f.append(String.format(" const %1$s = element ? new %2$s({...element.%3$s}) : new %2$s();\n", stepField, stepClass, elementName));
elProps.stream().forEach(e -> {
if (e.name.equals("steps")) {
diff --git a/karavan-generator/src/main/resources/CamelApi.camelize.tx b/karavan-generator/src/main/resources/CamelApi.camelize.tx
index 3c11863..bcdab9e 100644
--- a/karavan-generator/src/main/resources/CamelApi.camelize.tx
+++ b/karavan-generator/src/main/resources/CamelApi.camelize.tx
@@ -16,4 +16,14 @@
.map((value) => CamelApi.capitalizeName(value))
.join("");
return firstSmall ? res[0].toLowerCase() + res.substring(1) : res;
- };
\ No newline at end of file
+ };
+
+ static camelizeBody = (name: string, body: any, clone: boolean): any => {
+ if (body){
+ const oldKey = Object.keys(body)[0];
+ const key = CamelApi.camelizeName(oldKey, '-', true);
+ return !clone && key === name ? {[key]: body[oldKey]} : body;
+ } else {
+ return {};
+ }
+ };