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/12/06 23:54:30 UTC
[camel-karavan] branch main updated: Fixed #141 (#143)
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 e8f8594 Fixed #141 (#143)
e8f8594 is described below
commit e8f8594e245afe801988a1311e1685e86eb80d0c
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Mon Dec 6 18:54:22 2021 -0500
Fixed #141 (#143)
---
karavan-designer/src/App.tsx | 4 +---
karavan-designer/src/designer/api/CamelApi.tsx | 14 ++++++++++++++
.../apache/camel/karavan/generator/AbstractGenerator.java | 15 +++++++++++++--
.../camel/karavan/generator/CamelModelGenerator.java | 14 +++++++++++---
4 files changed, 39 insertions(+), 8 deletions(-)
diff --git a/karavan-designer/src/App.tsx b/karavan-designer/src/App.tsx
index df7f5cf..2e78822 100644
--- a/karavan-designer/src/App.tsx
+++ b/karavan-designer/src/App.tsx
@@ -52,6 +52,7 @@ class App extends React.Component<Props, State> {
' constant: "Hello Yaml !!!"\n' +
' - pollEnrich:\n' +
' expression: {}\n' +
+ ' - log: \'${body}\'\n' +
' - to: \n' +
' uri: "log:info:xxx"\n' +
' parameters:\n' +
@@ -67,7 +68,6 @@ class App extends React.Component<Props, State> {
key: ''
};
-
componentDidMount() {
["http-secured-sink.kamelet.yaml",
@@ -85,7 +85,6 @@ class App extends React.Component<Props, State> {
.then((r) => r.text())
.then(value => KameletApi.saveKamelet(value)));
-
["bonita.json",
"activemq.json",
"docker.json",
@@ -104,7 +103,6 @@ class App extends React.Component<Props, State> {
.then((r) => r.text())
.then(value => ComponentApi.saveComponent(value)));
-
}
save(filename: string, yaml: string) {
diff --git a/karavan-designer/src/designer/api/CamelApi.tsx b/karavan-designer/src/designer/api/CamelApi.tsx
index 7db2f49..2b31b00 100644
--- a/karavan-designer/src/designer/api/CamelApi.tsx
+++ b/karavan-designer/src/designer/api/CamelApi.tsx
@@ -181,6 +181,7 @@ export class CamelApi {
return new Expression({...element})
}
static createFrom = (element: any): FromStep => {
+ if (element && element.from && typeof element.from === 'string') element.from = {uri: element.from};
const fromStep = element ? new FromStep({...element.from}) : new FromStep();
fromStep.from.steps = CamelApi.createSteps(element?.from?.steps);
fromStep.uuid = element?.uuid ? element.uuid : fromStep.uuid;
@@ -215,6 +216,7 @@ export class CamelApi {
}
static createToD = (element: any): ToDStep => {
+ if (element && element.toD && typeof element.toD === 'string') element.toD = {uri: element.toD};
const toDStep = element ? new ToDStep({...element.toD}) : new ToDStep();
toDStep.uuid = element?.uuid ? element.uuid : toDStep.uuid;
return toDStep;
@@ -227,6 +229,7 @@ export class CamelApi {
}
static createInterceptSendToEndpoint = (element: any): InterceptSendToEndpointStep => {
+ if (element && element.interceptSendToEndpoint && typeof element.interceptSendToEndpoint === 'string') element.interceptSendToEndpoint = {uri: element.interceptSendToEndpoint};
const interceptSendToEndpointStep = element ? new InterceptSendToEndpointStep({...element.interceptSendToEndpoint}) : new InterceptSendToEndpointStep();
interceptSendToEndpointStep.interceptSendToEndpoint.steps = CamelApi.createSteps(element?.interceptSendToEndpoint?.steps);
interceptSendToEndpointStep.uuid = element?.uuid ? element.uuid : interceptSendToEndpointStep.uuid;
@@ -234,6 +237,7 @@ export class CamelApi {
}
static createLog = (element: any): LogStep => {
+ if (element && element.log && typeof element.log === 'string') element.log = {message: element.log};
const logStep = element ? new LogStep({...element.log}) : new LogStep();
logStep.uuid = element?.uuid ? element.uuid : logStep.uuid;
return logStep;
@@ -313,6 +317,7 @@ export class CamelApi {
}
static createRemoveHeaders = (element: any): RemoveHeadersStep => {
+ if (element && element.removeHeaders && typeof element.removeHeaders === 'string') element.removeHeaders = {pattern: element.removeHeaders};
const removeHeadersStep = element ? new RemoveHeadersStep({...element.removeHeaders}) : new RemoveHeadersStep();
removeHeadersStep.uuid = element?.uuid ? element.uuid : removeHeadersStep.uuid;
return removeHeadersStep;
@@ -430,12 +435,14 @@ export class CamelApi {
}
static createInOnly = (element: any): InOnlyStep => {
+ if (element && element.inOnly && typeof element.inOnly === 'string') element.inOnly = {uri: element.inOnly};
const inOnlyStep = element ? new InOnlyStep({...element.inOnly}) : new InOnlyStep();
inOnlyStep.uuid = element?.uuid ? element.uuid : inOnlyStep.uuid;
return inOnlyStep;
}
static createConvertBodyTo = (element: any): ConvertBodyToStep => {
+ if (element && element.convertBodyTo && typeof element.convertBodyTo === 'string') element.convertBodyTo = {type: element.convertBodyTo};
const convertBodyToStep = element ? new ConvertBodyToStep({...element.convertBodyTo}) : new ConvertBodyToStep();
convertBodyToStep.uuid = element?.uuid ? element.uuid : convertBodyToStep.uuid;
return convertBodyToStep;
@@ -516,6 +523,7 @@ export class CamelApi {
}
static createKamelet = (element: any): KameletStep => {
+ if (element && element.kamelet && typeof element.kamelet === 'string') element.kamelet = {name: element.kamelet};
const kameletStep = element ? new KameletStep({...element.kamelet}) : new KameletStep();
kameletStep.uuid = element?.uuid ? element.uuid : kameletStep.uuid;
return kameletStep;
@@ -541,6 +549,7 @@ export class CamelApi {
}
static createInOut = (element: any): InOutStep => {
+ if (element && element.inOut && typeof element.inOut === 'string') element.inOut = {uri: element.inOut};
const inOutStep = element ? new InOutStep({...element.inOut}) : new InOutStep();
inOutStep.uuid = element?.uuid ? element.uuid : inOutStep.uuid;
return inOutStep;
@@ -635,6 +644,7 @@ export class CamelApi {
static createTo = (element: any): ToStep => {
if (typeof element.to !== 'object') element.to = {uri: element.to};
+ if (element && element.to && typeof element.to === 'string') element.to = {uri: element.to};
const toStep = element ? new ToStep({...element.to}) : new ToStep();
toStep.uuid = element?.uuid ? element.uuid : toStep.uuid;
return toStep;
@@ -655,6 +665,7 @@ export class CamelApi {
}
static createServiceCall = (element: any): ServiceCallStep => {
+ if (element && element.serviceCall && typeof element.serviceCall === 'string') element.serviceCall = {name: element.serviceCall};
const serviceCallStep = element ? new ServiceCallStep({...element.serviceCall}) : new ServiceCallStep();
serviceCallStep.uuid = element?.uuid ? element.uuid : serviceCallStep.uuid;
return serviceCallStep;
@@ -689,6 +700,7 @@ export class CamelApi {
}
static createRemoveProperties = (element: any): RemovePropertiesStep => {
+ if (element && element.removeProperties && typeof element.removeProperties === 'string') element.removeProperties = {pattern: element.removeProperties};
const removePropertiesStep = element ? new RemovePropertiesStep({...element.removeProperties}) : new RemovePropertiesStep();
removePropertiesStep.uuid = element?.uuid ? element.uuid : removePropertiesStep.uuid;
return removePropertiesStep;
@@ -729,6 +741,7 @@ export class CamelApi {
}
static createRemoveProperty = (element: any): RemovePropertyStep => {
+ if (element && element.removeProperty && typeof element.removeProperty === 'string') element.removeProperty = {propertyName: element.removeProperty};
const removePropertyStep = element ? new RemovePropertyStep({...element.removeProperty}) : new RemovePropertyStep();
removePropertyStep.uuid = element?.uuid ? element.uuid : removePropertyStep.uuid;
return removePropertyStep;
@@ -763,6 +776,7 @@ export class CamelApi {
}
static createSetExchangePattern = (element: any): SetExchangePatternStep => {
+ if (element && element.setExchangePattern && typeof element.setExchangePattern === 'string') element.setExchangePattern = {pattern: element.setExchangePattern};
const setExchangePatternStep = element ? new SetExchangePatternStep({...element.setExchangePattern}) : new SetExchangePatternStep();
setExchangePatternStep.uuid = element?.uuid ? element.uuid : setExchangePatternStep.uuid;
return setExchangePatternStep;
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
index 5e883a6..155e0b6 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
@@ -58,8 +58,9 @@ public class AbstractGenerator {
}
protected JsonObject getProperties(JsonObject definitions, String classname) {
- JsonObject props = definitions.getJsonObject(classname).getJsonObject("properties");
- JsonArray oneOf = definitions.getJsonObject(classname).getJsonArray("oneOf");
+ JsonObject root = definitions.getJsonObject(classname);
+ JsonObject props = root.getJsonObject("properties");
+ JsonArray oneOf = root.getJsonArray("oneOf");
if (props != null) {
return props;
} else {
@@ -67,6 +68,16 @@ public class AbstractGenerator {
}
}
+ protected String getPropertyToMapString(JsonObject definitions, String classname) {
+ JsonObject root = definitions.getJsonObject(classname);
+ JsonArray oneOf = root.getJsonArray("oneOf");
+ JsonArray required = root.getJsonArray("required");
+ if (oneOf !=null && required != null){
+ return required.getString(0);
+ }
+ return null;
+ }
+
protected String camelize(String name, String separator) {
return Arrays.stream(name.split(separator)).map(s -> capitalize(s)).collect(Collectors.joining());
}
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 efc3f7d..f19deda 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
@@ -59,6 +59,7 @@ public final class CamelModelGenerator extends AbstractGenerator {
// generate properties for elements
Map<String, List<ElementProp>> models = new HashMap<>();
+ Map<String, String> propertyToMapStrings = new HashMap<>();
// from
JsonObject fromList = getProperties(definitions, "org.apache.camel.dsl.yaml.deserializers.RouteFromDefinitionDeserializer");
List<ElementProp> fProps = generateElementProp("from", fromList, definitions, Map.of());
@@ -89,6 +90,8 @@ public final class CamelModelGenerator extends AbstractGenerator {
String className = classNameFromRef(procList.getJsonObject(s.getKey()).getString("$ref"));
JsonObject props = getProperties(definitions, className);
List<ElementProp> elProps = generateElementProp(name, props, definitions, processors);
+ String propertyToMapString = getPropertyToMapString(definitions, className);
+ propertyToMapStrings.put(name, propertyToMapString);
models.put(name, elProps);
});
@@ -149,8 +152,8 @@ public final class CamelModelGenerator extends AbstractGenerator {
" static createExpression = (element: any): Expression => {\n" +
" return new Expression({...element})\n" +
" }\n");
- camelApi.append(createCreateFunction("from", models.get("from")));
- processors.values().forEach((model) -> camelApi.append(createCreateFunction(model, models.get(model))));
+ camelApi.append(createCreateFunction("from", models.get("from"), "uri"));
+ processors.values().forEach((model) -> camelApi.append(createCreateFunction(model, models.get(model), propertyToMapStrings.get(model))));
camelApi.append(
@@ -309,7 +312,7 @@ public final class CamelModelGenerator extends AbstractGenerator {
writeFileText(targetMetadata, metadata.toString());
}
- private String createCreateFunction(String name, List<ElementProp> elProps) {
+ private String createCreateFunction(String name, List<ElementProp> elProps, String propertyToMapStrings) {
if (name.equalsIgnoreCase("otherwise")) {
return getTemplateFile("CamelApi.createOtherwise.tx").concat("\n\n");
} else if (name.equalsIgnoreCase("when")) {
@@ -326,6 +329,11 @@ public final class CamelModelGenerator extends AbstractGenerator {
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));
}
+ // for oneOf string or object Definitions
+ if (propertyToMapStrings != null){
+ String p = deCapitalize(camelize(propertyToMapStrings, "-"));
+ f.append(String.format(" if (element && element.%1$s && typeof element.%1$s === 'string') element.%1$s = {%2$s: element.%1$s};\n", elementName, p));
+ }
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")) {