karavan-core 4.8.0 → 99.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of karavan-core might be problematic. Click here for more details.
- package/index.js +3 -0
- package/package.json +8 -58
- package/.bebelrc +0 -3
- package/.mocharc.json +0 -11
- package/.prettierignore +0 -9
- package/.prettierrc +0 -14
- package/src/core/api/CamelDefinitionApi.ts +0 -3271
- package/src/core/api/CamelDefinitionApiExt.ts +0 -757
- package/src/core/api/CamelDefinitionYaml.ts +0 -412
- package/src/core/api/CamelDefinitionYamlStep.ts +0 -4733
- package/src/core/api/CamelDisplayUtil.ts +0 -143
- package/src/core/api/CamelUtil.ts +0 -360
- package/src/core/api/ComponentApi.ts +0 -368
- package/src/core/api/KameletApi.ts +0 -147
- package/src/core/api/MainConfigurationApi.ts +0 -47
- package/src/core/api/ProjectModelApi.ts +0 -75
- package/src/core/api/SpiBeanApi.ts +0 -104
- package/src/core/api/TemplateApi.ts +0 -58
- package/src/core/api/TopologyUtils.ts +0 -392
- package/src/core/api/VariableUtil.ts +0 -104
- package/src/core/model/CamelDefinition.ts +0 -3783
- package/src/core/model/CamelMetadata.ts +0 -2714
- package/src/core/model/ComponentModels.ts +0 -106
- package/src/core/model/IntegrationDefinition.ts +0 -188
- package/src/core/model/KameletModels.ts +0 -223
- package/src/core/model/MainConfigurationModel.ts +0 -37
- package/src/core/model/ProjectModel.ts +0 -43
- package/src/core/model/SpiBeanModels.ts +0 -53
- package/src/core/model/TopologyDefinition.ts +0 -117
- package/test/addStep.spec.ts +0 -124
- package/test/addStep1.yaml +0 -27
- package/test/allowableValues.camel.yaml +0 -19
- package/test/allowableValues.spec.ts +0 -30
- package/test/avro-serialize-action.kamelet.yaml +0 -70
- package/test/beans.spec.ts +0 -92
- package/test/beans1.yaml +0 -36
- package/test/beans2.yaml +0 -42
- package/test/beans3.yaml +0 -7
- package/test/checkRequired.spec.ts +0 -53
- package/test/circuitBreaker.spec.ts +0 -57
- package/test/circuitBreaker.yaml +0 -19
- package/test/cloneDefinition.spec.ts +0 -106
- package/test/createKamelet.spec.ts +0 -38
- package/test/cxf.json +0 -615
- package/test/cxf.spec.ts +0 -44
- package/test/cxf.yaml +0 -15
- package/test/deleteStep.spec.ts +0 -74
- package/test/demo.spec.ts +0 -49
- package/test/demo.yaml +0 -32
- package/test/doCatchOnWhen.camel.yaml +0 -20
- package/test/doCatchOnWhen.spec.ts +0 -36
- package/test/errorHandler.spec.ts +0 -38
- package/test/errorHandler1.yaml +0 -27
- package/test/expression.spec.ts +0 -55
- package/test/findStep.spec.ts +0 -112
- package/test/findStep.yaml +0 -65
- package/test/getElementProperties.spec.ts +0 -32
- package/test/getElementPropertiesByName.spec.ts +0 -31
- package/test/getExpressionLanguage.spec.ts +0 -40
- package/test/hasElementWithId.camel.yaml +0 -98
- package/test/hasElementWithId.spec.ts +0 -57
- package/test/hasElementWithId1.camel.yaml +0 -16
- package/test/hasElementWithIdError.camel.yaml +0 -98
- package/test/integration.spec.ts +0 -60
- package/test/integration1.yaml +0 -24
- package/test/integration2.yaml +0 -23
- package/test/integrationToYaml.spec.ts +0 -51
- package/test/intercept.spec.ts +0 -62
- package/test/intercept.yaml +0 -19
- package/test/is-not-integration.yaml +0 -5114
- package/test/isIntegration.spec.ts +0 -45
- package/test/kamelet.spec.ts +0 -61
- package/test/metadata/components.json +0 -697
- package/test/metadata/kamelets.yaml +0 -23414
- package/test/metadata/spiBeans.json +0 -3094
- package/test/multiObjectProperties.spec.ts +0 -46
- package/test/multiObjectProperties1.yaml +0 -19
- package/test/multiple.spec.ts +0 -38
- package/test/multiple.yaml +0 -29
- package/test/openapi.spec.ts +0 -48
- package/test/openapi.yaml +0 -7
- package/test/placeholder.spec.ts +0 -32
- package/test/placeholder.yaml +0 -133
- package/test/plain-try-catch.yaml +0 -31
- package/test/plain.spec.ts +0 -72
- package/test/plain1.yaml +0 -22
- package/test/plain2.yaml +0 -13
- package/test/plain3.yaml +0 -5
- package/test/plain4.yaml +0 -5
- package/test/postgresql-source.kamelet.yaml +0 -113
- package/test/restConfigDsl.yaml +0 -15
- package/test/restDsl.spec.ts +0 -83
- package/test/restDsl.yaml +0 -29
- package/test/routes.spec.ts +0 -37
- package/test/routes1.yaml +0 -31
- package/test/supported-components.json +0 -1221
- package/test/supportedComponents.spec.ts +0 -34
- package/test/template1.AggregationStrategy.java +0 -21
- package/test/template1.Processor.java +0 -13
- package/test/template2.AggregationStrategy.java +0 -21
- package/test/template2.Processor.java +0 -13
- package/test/templateApi.spec.ts +0 -45
- package/test/timer-source.kamelet.yaml +0 -75
- package/test/tod.spec.ts +0 -31
- package/test/tod.yaml +0 -9
- package/test/topology.spec.ts +0 -51
- package/test/topology1.camel.yaml +0 -56
- package/test/topology2.camel.yaml +0 -44
- package/test/topology3.camel.yaml +0 -27
- package/test/tsconfig.testing.json +0 -14
- package/test/updateStep.spec.ts +0 -72
- package/test/variable1.camel.yaml +0 -42
- package/test/variable2.camel.yaml +0 -42
- package/test/variables.spec.ts +0 -34
- package/tsconfig.json +0 -34
@@ -1,412 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Licensed to the Apache Software Foundation (ASF) under one or more
|
3
|
-
* contributor license agreements. See the NOTICE file distributed with
|
4
|
-
* this work for additional information regarding copyright ownership.
|
5
|
-
* The ASF licenses this file to You under the Apache License, Version 2.0
|
6
|
-
* (the "License"); you may not use this file except in compliance with
|
7
|
-
* the License. You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*/
|
17
|
-
import * as yaml from 'js-yaml';
|
18
|
-
import { Beans, CamelElement, Integration } from '../model/IntegrationDefinition';
|
19
|
-
import { BeanFactoryDefinition, RouteConfigurationDefinition, RouteDefinition } from '../model/CamelDefinition';
|
20
|
-
import { CamelUtil } from './CamelUtil';
|
21
|
-
import { CamelDefinitionYamlStep } from './CamelDefinitionYamlStep';
|
22
|
-
|
23
|
-
export class CamelDefinitionYaml {
|
24
|
-
private constructor() {
|
25
|
-
}
|
26
|
-
|
27
|
-
static integrationToYaml = (integration: Integration): string => {
|
28
|
-
const clone: any = CamelUtil.cloneIntegration(integration);
|
29
|
-
const flows = integration.spec.flows;
|
30
|
-
clone.spec.flows = flows
|
31
|
-
?.map((f: any) => CamelDefinitionYaml.cleanupElement(f))
|
32
|
-
.filter(x => Object.keys(x).length !== 0);
|
33
|
-
if (integration.type === 'crd') {
|
34
|
-
delete clone.type;
|
35
|
-
const i = JSON.parse(JSON.stringify(clone, (key, value) => CamelDefinitionYaml.replacer(key, value), 3)); // fix undefined in string attributes
|
36
|
-
return CamelDefinitionYaml.yamlDump(i);
|
37
|
-
} else if (integration.type === 'kamelet') {
|
38
|
-
delete clone.type;
|
39
|
-
// turn array of flows to object properties in template for Kamelet
|
40
|
-
const template: any = {route: {}}
|
41
|
-
const route: RouteDefinition = clone.spec.flows.filter((f: any) => f.dslName === 'RouteDefinition')?.[0];
|
42
|
-
if (route) {
|
43
|
-
template.route = Object.assign(template.route, route);
|
44
|
-
} else if (clone.spec.template?.route) {
|
45
|
-
template.route = clone.spec.template.route;
|
46
|
-
} else if (clone.spec.template?.from) {
|
47
|
-
template.route = {from: clone.spec.template?.from};
|
48
|
-
}
|
49
|
-
const from: RouteDefinition = clone.spec.flows.filter((f: any) => f.dslName === 'FromDefinition')?.[0];
|
50
|
-
if (from) {
|
51
|
-
template.from = {from: from};
|
52
|
-
}
|
53
|
-
const beans = clone.spec.flows.filter((f: any) => f.dslName === 'Beans')?.at(0)?.beans;
|
54
|
-
if (beans) {
|
55
|
-
template.beans = beans;
|
56
|
-
} else if (clone.spec.template?.beans){
|
57
|
-
template.beans = clone.spec.template.beans;
|
58
|
-
}
|
59
|
-
clone.spec.template = template;
|
60
|
-
delete clone.spec.flows;
|
61
|
-
const i = JSON.parse(JSON.stringify(clone, (key, value) => CamelDefinitionYaml.replacer(key, value, true), 3)); // fix undefined in string attributes
|
62
|
-
return CamelDefinitionYaml.yamlDump(i);
|
63
|
-
} else {
|
64
|
-
const f = JSON.parse(
|
65
|
-
JSON.stringify(clone.spec.flows, (key, value) => CamelDefinitionYaml.replacer(key, value), 3),
|
66
|
-
);
|
67
|
-
return CamelDefinitionYaml.yamlDump(f);
|
68
|
-
}
|
69
|
-
};
|
70
|
-
|
71
|
-
static isEmpty = (value?: string): boolean => {
|
72
|
-
return value === undefined || (value.trim && value.trim().length === 0);
|
73
|
-
};
|
74
|
-
|
75
|
-
static isEmptyObject(obj: any): boolean {
|
76
|
-
// Check if it's an object and not null
|
77
|
-
if (obj && typeof obj === 'object') {
|
78
|
-
// Get all enumerable property names
|
79
|
-
const keys = Object.keys(obj);
|
80
|
-
// Get all non-enumerable property names
|
81
|
-
const nonEnumProps = Object.getOwnPropertyNames(obj);
|
82
|
-
// Check if there are no properties
|
83
|
-
return keys.length === 0 && nonEnumProps.length === 0;
|
84
|
-
}
|
85
|
-
return false;
|
86
|
-
}
|
87
|
-
|
88
|
-
|
89
|
-
static cleanupElement = (element: CamelElement, inArray?: boolean, inSteps?: boolean): CamelElement => {
|
90
|
-
const result: any = {};
|
91
|
-
const object: any = { ...element };
|
92
|
-
|
93
|
-
if (inArray) {
|
94
|
-
object.inArray = inArray;
|
95
|
-
object.inSteps = !!inSteps;
|
96
|
-
}
|
97
|
-
|
98
|
-
if (object.dslName.endsWith('Expression')) {
|
99
|
-
delete object.language;
|
100
|
-
delete object.expressionName;
|
101
|
-
} else if (object.dslName.endsWith('DataFormat')) {
|
102
|
-
delete object.dataFormatName;
|
103
|
-
} else if (object.dslName === 'BeanFactoryDefinition') {
|
104
|
-
if (object.properties && Object.keys(object.properties).length === 0) {
|
105
|
-
delete object.properties;
|
106
|
-
}
|
107
|
-
if (object.constructors && CamelDefinitionYaml.isEmptyObject(object.constructors)) {
|
108
|
-
delete object.constructors;
|
109
|
-
}
|
110
|
-
} else if (object.dslName === 'CatchDefinition' && object?.onWhen?.stepName !== undefined) {
|
111
|
-
object.onWhen.stepName = 'onWhen'; // https://github.com/apache/camel-karavan/issues/1420
|
112
|
-
}
|
113
|
-
|
114
|
-
delete object.uuid;
|
115
|
-
delete object.showChildren;
|
116
|
-
|
117
|
-
for (const [key, value] of Object.entries(object) as [string, any][]) {
|
118
|
-
if (value instanceof CamelElement || (typeof value === 'object' && value?.dslName)) {
|
119
|
-
result[key] = CamelDefinitionYaml.cleanupElement(value);
|
120
|
-
} else if (Array.isArray(value)) {
|
121
|
-
if (value.length > 0) {
|
122
|
-
result[key] = CamelDefinitionYaml.cleanupElements(value, key === 'steps');
|
123
|
-
}
|
124
|
-
} else if (key === 'parameters' && typeof value === 'object') {
|
125
|
-
const parameters = Object.entries(value || {})
|
126
|
-
.filter(([_, v]: [string, any]) => !CamelDefinitionYaml.isEmpty(v))
|
127
|
-
.reduce((x: any, [k, v]) => ({ ...x, [k]: v }), {});
|
128
|
-
if (Object.keys(parameters).length > 0) {
|
129
|
-
result[key] = parameters;
|
130
|
-
}
|
131
|
-
} else {
|
132
|
-
if (!CamelDefinitionYaml.isEmpty(value)) {
|
133
|
-
result[key] = value;
|
134
|
-
}
|
135
|
-
}
|
136
|
-
}
|
137
|
-
return result as CamelElement;
|
138
|
-
};
|
139
|
-
|
140
|
-
static cleanupElements = (elements: CamelElement[], inSteps?: boolean): CamelElement[] => {
|
141
|
-
const result: any[] = [];
|
142
|
-
for (const element of elements) {
|
143
|
-
if (typeof element === 'object') {
|
144
|
-
result.push(CamelDefinitionYaml.cleanupElement(element, true, inSteps));
|
145
|
-
} else {
|
146
|
-
result.push(element);
|
147
|
-
}
|
148
|
-
}
|
149
|
-
return result;
|
150
|
-
};
|
151
|
-
|
152
|
-
static yamlDump = (integration: any): string => {
|
153
|
-
return yaml.dump(integration, {
|
154
|
-
noRefs: false,
|
155
|
-
noArrayIndent: false,
|
156
|
-
// forceQuotes: true,
|
157
|
-
quotingType: '"',
|
158
|
-
sortKeys: function(a: any, b: any) {
|
159
|
-
if (a === 'steps') return 1;
|
160
|
-
else if (b === 'steps') return -1;
|
161
|
-
else return 0;
|
162
|
-
},
|
163
|
-
});
|
164
|
-
};
|
165
|
-
|
166
|
-
static replacer = (key: string, value: any, isKamelet: boolean = false): any => {
|
167
|
-
if (
|
168
|
-
typeof value === 'object' &&
|
169
|
-
(value.hasOwnProperty('stepName') || value.hasOwnProperty('inArray') || value.hasOwnProperty('inSteps'))
|
170
|
-
) {
|
171
|
-
const stepNameField = value.hasOwnProperty('stepName') ? 'stepName' : 'step-name';
|
172
|
-
const stepName = value[stepNameField];
|
173
|
-
const dslName = value.dslName;
|
174
|
-
let newValue: any = JSON.parse(JSON.stringify(value));
|
175
|
-
delete newValue.dslName;
|
176
|
-
delete newValue[stepNameField];
|
177
|
-
|
178
|
-
if (
|
179
|
-
value.inArray &&
|
180
|
-
!value.inSteps &&
|
181
|
-
['intercept', 'interceptFrom', 'interceptSendToEndpoint', 'onCompletion', 'onException'].includes(
|
182
|
-
stepName,
|
183
|
-
)
|
184
|
-
) {
|
185
|
-
delete newValue.inArray;
|
186
|
-
delete newValue.inSteps;
|
187
|
-
const xValue: any = {};
|
188
|
-
xValue[stepName] = newValue;
|
189
|
-
return xValue;
|
190
|
-
} else if (
|
191
|
-
(value.inArray && !value.inSteps) ||
|
192
|
-
dslName === 'ExpressionSubElementDefinition' ||
|
193
|
-
dslName === 'ExpressionDefinition' ||
|
194
|
-
dslName?.endsWith('Expression') ||
|
195
|
-
stepName === 'otherwise' ||
|
196
|
-
stepName === 'doFinally' ||
|
197
|
-
stepName === 'resilience4jConfiguration' ||
|
198
|
-
stepName === 'faultToleranceConfiguration' ||
|
199
|
-
stepName === 'errorHandler' ||
|
200
|
-
stepName === 'onWhen' || // https://github.com/apache/camel-karavan/issues/1420
|
201
|
-
stepName === 'deadLetterChannel' ||
|
202
|
-
stepName === 'defaultErrorHandler' ||
|
203
|
-
stepName === 'jtaTransactionErrorHandler' ||
|
204
|
-
stepName === 'noErrorHandler' ||
|
205
|
-
stepName === 'springTransactionErrorHandler' ||
|
206
|
-
stepName === 'redeliveryPolicy' ||
|
207
|
-
stepName === 'securityDefinitions' ||
|
208
|
-
stepName === 'apiKey' ||
|
209
|
-
stepName === 'basicAuth' ||
|
210
|
-
stepName === 'bearer' ||
|
211
|
-
stepName === 'mutualTls' ||
|
212
|
-
stepName === 'oauth2' ||
|
213
|
-
stepName === 'openIdConnect' ||
|
214
|
-
stepName === 'openApi' ||
|
215
|
-
key === 'from'
|
216
|
-
) {
|
217
|
-
delete newValue.inArray;
|
218
|
-
delete newValue.inSteps;
|
219
|
-
return newValue;
|
220
|
-
} else if (isKamelet && dslName === 'RouteDefinition') {
|
221
|
-
delete value?.dslName;
|
222
|
-
delete value?.stepName;
|
223
|
-
return value;
|
224
|
-
} else {
|
225
|
-
delete newValue.inArray;
|
226
|
-
delete newValue.inSteps;
|
227
|
-
const xValue: any = {};
|
228
|
-
xValue[stepName] = newValue;
|
229
|
-
return xValue;
|
230
|
-
}
|
231
|
-
} else {
|
232
|
-
delete value?.dslName;
|
233
|
-
return value;
|
234
|
-
}
|
235
|
-
};
|
236
|
-
|
237
|
-
static yamlToIntegration = (filename: string, text: string): Integration => {
|
238
|
-
const integration: Integration = Integration.createNew(filename);
|
239
|
-
const fromYaml: any = yaml.load(text);
|
240
|
-
const camelized: any = CamelUtil.camelizeObject(fromYaml);
|
241
|
-
if (camelized?.apiVersion && camelized.apiVersion.startsWith('camel.apache.org') && camelized.kind) {
|
242
|
-
if (camelized?.metadata) {
|
243
|
-
integration.metadata = camelized?.metadata;
|
244
|
-
}
|
245
|
-
if (camelized?.spec) {
|
246
|
-
integration.spec.definition = camelized?.spec.definition;
|
247
|
-
integration.spec.dependencies = camelized?.spec.dependencies;
|
248
|
-
integration.spec.types = camelized?.spec.types;
|
249
|
-
}
|
250
|
-
const int: Integration = new Integration({ ...camelized });
|
251
|
-
if (camelized.kind === 'Integration') {
|
252
|
-
integration.type = 'crd';
|
253
|
-
integration.spec.flows?.push(...CamelDefinitionYaml.flowsToCamelElements(int.spec.flows || []));
|
254
|
-
} else if (camelized.kind === 'Kamelet') {
|
255
|
-
integration.type = 'kamelet';
|
256
|
-
integration.kind = 'Kamelet';
|
257
|
-
const flows: any[] = [];
|
258
|
-
// turn kamelet template object properties to array of flows
|
259
|
-
const beans = int.spec.template?.beans;
|
260
|
-
if (beans) {
|
261
|
-
flows.push(new Beans({beans: beans}))
|
262
|
-
}
|
263
|
-
const from = int.spec.template?.from;
|
264
|
-
if (from) {
|
265
|
-
flows.push(new RouteDefinition({from: from}))
|
266
|
-
} else {
|
267
|
-
const route = int.spec.template?.route;
|
268
|
-
flows.push(route);
|
269
|
-
}
|
270
|
-
integration.spec.flows?.push(...CamelDefinitionYaml.flowsToCamelElements(flows || []));
|
271
|
-
}
|
272
|
-
} else if (Array.isArray(camelized)) {
|
273
|
-
integration.type = 'plain';
|
274
|
-
const flows: any[] = camelized;
|
275
|
-
integration.spec.flows?.push(...CamelDefinitionYaml.flowsToCamelElements(flows));
|
276
|
-
}
|
277
|
-
return integration;
|
278
|
-
};
|
279
|
-
|
280
|
-
static yamlIsIntegration = (text: string): 'crd' | 'plain' | 'kamelet' | 'none' => {
|
281
|
-
try {
|
282
|
-
const fromYaml: any = yaml.load(text);
|
283
|
-
const camelized: any = CamelUtil.camelizeObject(fromYaml);
|
284
|
-
if (camelized?.apiVersion && camelized.apiVersion.startsWith('camel.apache.org') && camelized.kind) {
|
285
|
-
if (camelized.kind === 'Integration') {
|
286
|
-
return 'crd';
|
287
|
-
} else if (camelized.kind === 'Kamelet') {
|
288
|
-
return 'kamelet';
|
289
|
-
}
|
290
|
-
} else if (Array.isArray(camelized)) {
|
291
|
-
return 'plain';
|
292
|
-
} else {
|
293
|
-
return 'none';
|
294
|
-
}
|
295
|
-
} catch (e) {
|
296
|
-
}
|
297
|
-
return 'none';
|
298
|
-
};
|
299
|
-
static flowsToCamelElements = (flows: any[]): any[] => {
|
300
|
-
const result: any[] = [];
|
301
|
-
flows.filter((e: any) => e.hasOwnProperty('restConfiguration'))
|
302
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRestConfigurationDefinition(f.restConfiguration)));
|
303
|
-
flows.filter((e: any) => e.hasOwnProperty('rest'))
|
304
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRestDefinition(f.rest)));
|
305
|
-
flows.filter((e: any) => e.hasOwnProperty('route'))
|
306
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRouteDefinition(f.route)));
|
307
|
-
flows.filter((e: any) => e.hasOwnProperty('from'))
|
308
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRouteDefinition(new RouteDefinition({from: f.from}))));
|
309
|
-
flows.filter((e: any) => e.hasOwnProperty('beans'))
|
310
|
-
.forEach((b: any) => result.push(CamelDefinitionYaml.readBeanDefinition(b)));
|
311
|
-
flows.filter((e: any) => e.hasOwnProperty('routeConfiguration'))
|
312
|
-
.forEach((e: any) => result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(e.routeConfiguration)));
|
313
|
-
flows.filter((e: any) => e.hasOwnProperty('errorHandler'))
|
314
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({errorHandler: f.errorHandler}))));
|
315
|
-
flows.filter((e: any) => e.hasOwnProperty('onException'))
|
316
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({onException: f.onException}))));
|
317
|
-
flows.filter((e: any) => e.hasOwnProperty('intercept'))
|
318
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({intercept: f.intercept}))));
|
319
|
-
flows.filter((e: any) => e.hasOwnProperty('interceptFrom'))
|
320
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({interceptFrom: f.interceptFrom}))));
|
321
|
-
flows.filter((e: any) => e.hasOwnProperty('interceptSendToEndpoint'))
|
322
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({interceptSendToEndpoint: f.interceptSendToEndpoint}))));
|
323
|
-
flows.filter((e: any) => e.hasOwnProperty('onCompletion'))
|
324
|
-
.forEach((f: any) => result.push(CamelDefinitionYamlStep.readRouteConfigurationDefinition(new RouteConfigurationDefinition({onCompletion: f.onCompletion}))));
|
325
|
-
|
326
|
-
return result;
|
327
|
-
};
|
328
|
-
|
329
|
-
static readBeanDefinition = (beans: any): Beans => {
|
330
|
-
const result: Beans = new Beans();
|
331
|
-
for (const bean of beans.beans) {
|
332
|
-
const props: any = {};
|
333
|
-
if (bean && bean.properties) {
|
334
|
-
// convert map style to properties if requires
|
335
|
-
for (const [key, value] of Object.entries(bean.properties)) {
|
336
|
-
CamelDefinitionYaml.flatMapProperty(key, value, new Map<string, any>()).forEach(
|
337
|
-
(v, k) => (props[k] = v),
|
338
|
-
);
|
339
|
-
}
|
340
|
-
}
|
341
|
-
if (bean && bean.property && Array.isArray(bean.property)) {
|
342
|
-
// convert map style to properties if requires
|
343
|
-
Array.from(bean.property).forEach((val: any) => {
|
344
|
-
props[val.key] = val.value;
|
345
|
-
})
|
346
|
-
delete bean.property;
|
347
|
-
}
|
348
|
-
bean.properties = props;
|
349
|
-
result.beans.push(new BeanFactoryDefinition(bean));
|
350
|
-
}
|
351
|
-
return result;
|
352
|
-
};
|
353
|
-
|
354
|
-
// convert map style to properties if requires
|
355
|
-
static flatMapProperty = (key: string, value: any, properties: Map<string, any>): Map<string, any> => {
|
356
|
-
if (value === undefined) {
|
357
|
-
return properties;
|
358
|
-
}
|
359
|
-
|
360
|
-
if (typeof value === 'object') {
|
361
|
-
for (const k in value) {
|
362
|
-
const key2 = key + '.' + k;
|
363
|
-
const value2: any = value[k];
|
364
|
-
CamelDefinitionYaml.flatMapProperty(key2, value2, new Map<string, any>()).forEach((value1, key1) =>
|
365
|
-
properties.set(key1, value1),
|
366
|
-
);
|
367
|
-
}
|
368
|
-
} else {
|
369
|
-
properties.set(key, value);
|
370
|
-
}
|
371
|
-
return properties;
|
372
|
-
};
|
373
|
-
|
374
|
-
// add generated Integration YAML into existing Integration YAML
|
375
|
-
static addYamlToIntegrationYaml = (
|
376
|
-
filename: string,
|
377
|
-
camelYaml: string | undefined,
|
378
|
-
restYaml: string,
|
379
|
-
addREST: boolean,
|
380
|
-
addRoutes: boolean,
|
381
|
-
): string => {
|
382
|
-
const existing =
|
383
|
-
camelYaml !== undefined
|
384
|
-
? CamelDefinitionYaml.yamlToIntegration(filename, camelYaml)
|
385
|
-
: Integration.createNew(filename);
|
386
|
-
const generated = CamelDefinitionYaml.yamlToIntegration(filename, restYaml);
|
387
|
-
|
388
|
-
const flows: CamelElement[] =
|
389
|
-
existing.spec.flows?.filter(f => !['RouteDefinition', 'RestDefinition'].includes(f.dslName)) || [];
|
390
|
-
|
391
|
-
const restE: CamelElement[] = existing.spec.flows?.filter(f => f.dslName === 'RestDefinition') || [];
|
392
|
-
const restG: CamelElement[] = generated.spec.flows?.filter(f => f.dslName === 'RestDefinition') || [];
|
393
|
-
|
394
|
-
if (addREST) {
|
395
|
-
flows.push(...restG);
|
396
|
-
} else {
|
397
|
-
flows.push(...restE);
|
398
|
-
}
|
399
|
-
|
400
|
-
const routeE: CamelElement[] = existing.spec.flows?.filter(f => f.dslName === 'RouteDefinition') || [];
|
401
|
-
const routeG: CamelElement[] = generated.spec.flows?.filter(f => f.dslName === 'RouteDefinition') || [];
|
402
|
-
|
403
|
-
if (addRoutes) {
|
404
|
-
flows.push(...routeG);
|
405
|
-
} else {
|
406
|
-
flows.push(...routeE);
|
407
|
-
}
|
408
|
-
|
409
|
-
existing.spec.flows = flows;
|
410
|
-
return CamelDefinitionYaml.integrationToYaml(existing);
|
411
|
-
};
|
412
|
-
}
|