karavan-core 4.8.0 → 99.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of karavan-core might be problematic. Click here for more details.

Files changed (115) hide show
  1. package/index.js +3 -0
  2. package/package.json +8 -58
  3. package/.bebelrc +0 -3
  4. package/.mocharc.json +0 -11
  5. package/.prettierignore +0 -9
  6. package/.prettierrc +0 -14
  7. package/src/core/api/CamelDefinitionApi.ts +0 -3271
  8. package/src/core/api/CamelDefinitionApiExt.ts +0 -757
  9. package/src/core/api/CamelDefinitionYaml.ts +0 -412
  10. package/src/core/api/CamelDefinitionYamlStep.ts +0 -4733
  11. package/src/core/api/CamelDisplayUtil.ts +0 -143
  12. package/src/core/api/CamelUtil.ts +0 -360
  13. package/src/core/api/ComponentApi.ts +0 -368
  14. package/src/core/api/KameletApi.ts +0 -147
  15. package/src/core/api/MainConfigurationApi.ts +0 -47
  16. package/src/core/api/ProjectModelApi.ts +0 -75
  17. package/src/core/api/SpiBeanApi.ts +0 -104
  18. package/src/core/api/TemplateApi.ts +0 -58
  19. package/src/core/api/TopologyUtils.ts +0 -392
  20. package/src/core/api/VariableUtil.ts +0 -104
  21. package/src/core/model/CamelDefinition.ts +0 -3783
  22. package/src/core/model/CamelMetadata.ts +0 -2714
  23. package/src/core/model/ComponentModels.ts +0 -106
  24. package/src/core/model/IntegrationDefinition.ts +0 -188
  25. package/src/core/model/KameletModels.ts +0 -223
  26. package/src/core/model/MainConfigurationModel.ts +0 -37
  27. package/src/core/model/ProjectModel.ts +0 -43
  28. package/src/core/model/SpiBeanModels.ts +0 -53
  29. package/src/core/model/TopologyDefinition.ts +0 -117
  30. package/test/addStep.spec.ts +0 -124
  31. package/test/addStep1.yaml +0 -27
  32. package/test/allowableValues.camel.yaml +0 -19
  33. package/test/allowableValues.spec.ts +0 -30
  34. package/test/avro-serialize-action.kamelet.yaml +0 -70
  35. package/test/beans.spec.ts +0 -92
  36. package/test/beans1.yaml +0 -36
  37. package/test/beans2.yaml +0 -42
  38. package/test/beans3.yaml +0 -7
  39. package/test/checkRequired.spec.ts +0 -53
  40. package/test/circuitBreaker.spec.ts +0 -57
  41. package/test/circuitBreaker.yaml +0 -19
  42. package/test/cloneDefinition.spec.ts +0 -106
  43. package/test/createKamelet.spec.ts +0 -38
  44. package/test/cxf.json +0 -615
  45. package/test/cxf.spec.ts +0 -44
  46. package/test/cxf.yaml +0 -15
  47. package/test/deleteStep.spec.ts +0 -74
  48. package/test/demo.spec.ts +0 -49
  49. package/test/demo.yaml +0 -32
  50. package/test/doCatchOnWhen.camel.yaml +0 -20
  51. package/test/doCatchOnWhen.spec.ts +0 -36
  52. package/test/errorHandler.spec.ts +0 -38
  53. package/test/errorHandler1.yaml +0 -27
  54. package/test/expression.spec.ts +0 -55
  55. package/test/findStep.spec.ts +0 -112
  56. package/test/findStep.yaml +0 -65
  57. package/test/getElementProperties.spec.ts +0 -32
  58. package/test/getElementPropertiesByName.spec.ts +0 -31
  59. package/test/getExpressionLanguage.spec.ts +0 -40
  60. package/test/hasElementWithId.camel.yaml +0 -98
  61. package/test/hasElementWithId.spec.ts +0 -57
  62. package/test/hasElementWithId1.camel.yaml +0 -16
  63. package/test/hasElementWithIdError.camel.yaml +0 -98
  64. package/test/integration.spec.ts +0 -60
  65. package/test/integration1.yaml +0 -24
  66. package/test/integration2.yaml +0 -23
  67. package/test/integrationToYaml.spec.ts +0 -51
  68. package/test/intercept.spec.ts +0 -62
  69. package/test/intercept.yaml +0 -19
  70. package/test/is-not-integration.yaml +0 -5114
  71. package/test/isIntegration.spec.ts +0 -45
  72. package/test/kamelet.spec.ts +0 -61
  73. package/test/metadata/components.json +0 -697
  74. package/test/metadata/kamelets.yaml +0 -23414
  75. package/test/metadata/spiBeans.json +0 -3094
  76. package/test/multiObjectProperties.spec.ts +0 -46
  77. package/test/multiObjectProperties1.yaml +0 -19
  78. package/test/multiple.spec.ts +0 -38
  79. package/test/multiple.yaml +0 -29
  80. package/test/openapi.spec.ts +0 -48
  81. package/test/openapi.yaml +0 -7
  82. package/test/placeholder.spec.ts +0 -32
  83. package/test/placeholder.yaml +0 -133
  84. package/test/plain-try-catch.yaml +0 -31
  85. package/test/plain.spec.ts +0 -72
  86. package/test/plain1.yaml +0 -22
  87. package/test/plain2.yaml +0 -13
  88. package/test/plain3.yaml +0 -5
  89. package/test/plain4.yaml +0 -5
  90. package/test/postgresql-source.kamelet.yaml +0 -113
  91. package/test/restConfigDsl.yaml +0 -15
  92. package/test/restDsl.spec.ts +0 -83
  93. package/test/restDsl.yaml +0 -29
  94. package/test/routes.spec.ts +0 -37
  95. package/test/routes1.yaml +0 -31
  96. package/test/supported-components.json +0 -1221
  97. package/test/supportedComponents.spec.ts +0 -34
  98. package/test/template1.AggregationStrategy.java +0 -21
  99. package/test/template1.Processor.java +0 -13
  100. package/test/template2.AggregationStrategy.java +0 -21
  101. package/test/template2.Processor.java +0 -13
  102. package/test/templateApi.spec.ts +0 -45
  103. package/test/timer-source.kamelet.yaml +0 -75
  104. package/test/tod.spec.ts +0 -31
  105. package/test/tod.yaml +0 -9
  106. package/test/topology.spec.ts +0 -51
  107. package/test/topology1.camel.yaml +0 -56
  108. package/test/topology2.camel.yaml +0 -44
  109. package/test/topology3.camel.yaml +0 -27
  110. package/test/tsconfig.testing.json +0 -14
  111. package/test/updateStep.spec.ts +0 -72
  112. package/test/variable1.camel.yaml +0 -42
  113. package/test/variable2.camel.yaml +0 -42
  114. package/test/variables.spec.ts +0 -34
  115. package/tsconfig.json +0 -34
@@ -1,117 +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
-
18
- import { CamelElement } from './IntegrationDefinition';
19
- import { FromDefinition, RestDefinition, RouteConfigurationDefinition, RouteDefinition } from './CamelDefinition';
20
-
21
- export class TopologyRestNode {
22
- path: string;
23
- id: string;
24
- uris: string[];
25
- title: string;
26
- fileName: string;
27
- rest: RestDefinition;
28
-
29
- constructor(path: string, id: string, uris: string[], title: string, fileName: string, rest: RestDefinition) {
30
- this.path = path;
31
- this.id = id;
32
- this.uris = uris;
33
- this.title = title;
34
- this.fileName = fileName;
35
- this.rest = rest;
36
- }
37
- }
38
-
39
- export class TopologyIncomingNode {
40
- id: string;
41
- type: 'internal' | 'external';
42
- connectorType: 'component' | 'kamelet';
43
- routeId: string;
44
- title: string;
45
- fileName: string;
46
- from: FromDefinition;
47
- uniqueUri?: string;
48
-
49
-
50
- constructor(id: string, type: "internal" | "external", connectorType: "component" | "kamelet", routeId: string, title: string, fileName: string, from: FromDefinition, uniqueUri: string) {
51
- this.id = id;
52
- this.type = type;
53
- this.connectorType = connectorType;
54
- this.routeId = routeId;
55
- this.title = title;
56
- this.fileName = fileName;
57
- this.from = from;
58
- this.uniqueUri = uniqueUri;
59
- }
60
- }
61
-
62
- export class TopologyRouteNode {
63
- id: string;
64
- routeId: string;
65
- title: string;
66
- fileName: string;
67
- from: FromDefinition;
68
- route: RouteDefinition
69
-
70
- constructor(id: string, routeId: string, title: string, fileName: string, from: FromDefinition, route: RouteDefinition) {
71
- this.id = id;
72
- this.routeId = routeId;
73
- this.title = title;
74
- this.fileName = fileName;
75
- this.from = from;
76
- this.route = route;
77
- }
78
- }
79
-
80
- export class TopologyRouteConfigurationNode {
81
- id: string;
82
- routeConfigurationId: string;
83
- title: string;
84
- fileName: string;
85
- routeConfiguration: RouteConfigurationDefinition
86
-
87
- constructor(id: string, routeConfigurationId: string, title: string, fileName: string, routeConfiguration: RouteConfigurationDefinition) {
88
- this.id = id;
89
- this.routeConfigurationId = routeConfigurationId;
90
- this.title = title;
91
- this.fileName = fileName;
92
- this.routeConfiguration = routeConfiguration;
93
- }
94
- }
95
-
96
- export class TopologyOutgoingNode {
97
- id: string;
98
- type: 'internal' | 'external';
99
- connectorType: 'component' | 'kamelet';
100
- routeId: string;
101
- title: string;
102
- fileName: string;
103
- step: CamelElement;
104
- uniqueUri?: string;
105
-
106
-
107
- constructor(id: string, type: "internal" | "external", connectorType: "component" | "kamelet", routeId: string, title: string, fileName: string, step: CamelElement, uniqueUri: string) {
108
- this.id = id;
109
- this.type = type;
110
- this.connectorType = connectorType;
111
- this.routeId = routeId;
112
- this.title = title;
113
- this.fileName = fileName;
114
- this.step = step;
115
- this.uniqueUri = uniqueUri;
116
- }
117
- }
@@ -1,124 +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 {expect} from 'chai';
18
- import 'mocha';
19
- import {
20
- FromDefinition,
21
- LogDefinition,
22
- WhenDefinition,
23
- ChoiceDefinition,
24
- MulticastDefinition,
25
- ExpressionDefinition,
26
- RouteDefinition, TryDefinition,CatchDefinition
27
- } from "../src/core/model/CamelDefinition";
28
- import {CamelDefinitionApiExt} from "../src/core/api/CamelDefinitionApiExt";
29
- import {CamelDefinitionYaml} from "../src/core/api/CamelDefinitionYaml";
30
- import {SimpleExpression} from "../src/core/model/CamelDefinition";
31
- import {Integration} from "../src/core/model/IntegrationDefinition";
32
- import * as fs from 'fs';
33
-
34
- describe('Add Step', () => {
35
-
36
- it('Add Step', () => {
37
- const i = Integration.createNew("test")
38
-
39
- const when1 = new WhenDefinition({
40
- expression: new ExpressionDefinition({simple: '$[body} != null'}),
41
- steps: [new LogDefinition({logName: 'log11', message: "hello11"})]
42
- })
43
- const choice = new ChoiceDefinition({when: [when1]})
44
- const flow1 = new FromDefinition({uri: "direct1"});
45
-
46
- flow1.steps?.push(choice);
47
- i.spec.flows?.push(new RouteDefinition({from:flow1}));
48
-
49
- const when2 = new WhenDefinition({
50
- expression: new ExpressionDefinition({simple: '$[body} != "null"'}),
51
- steps: [new LogDefinition({logName: 'log22', message: "hello22"})]
52
- })
53
- const i2 = CamelDefinitionApiExt.addStepToIntegration(i, when2, choice.uuid);
54
-
55
- if (i2.spec.flows && i2.spec.flows.length > 0) {
56
- const f: FromDefinition = i2.spec.flows[0].from;
57
- const c: ChoiceDefinition = f.steps ? f.steps[0] : new ChoiceDefinition();
58
- const w = c.when ? c.when[1] : undefined;
59
- expect(c?.when?.length).to.equal(2);
60
- }
61
- });
62
-
63
- it('Add step to Otherwise', () => {
64
- const yaml = fs.readFileSync('test/addStep1.yaml',{encoding:'utf8', flag:'r'});
65
- const i1 = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml);
66
-
67
- if (i1.spec.flows && i1.spec.flows.length > 0) {
68
- const r: RouteDefinition = i1.spec.flows[0];
69
- const c: ChoiceDefinition = r ? r.from?.steps[1] : new ChoiceDefinition();
70
- const parentUuid = c.otherwise?.uuid || "";
71
-
72
- const step: MulticastDefinition = new MulticastDefinition();
73
- const i2 = CamelDefinitionApiExt.addStepToIntegration(i1, step, parentUuid);
74
-
75
- if (i2.spec.flows) {
76
- expect(i2.spec.flows[0].from.steps[1].otherwise.steps.length).to.equal(1);
77
- }
78
- }
79
- });
80
-
81
- it('Add step to Catch', () => {
82
- const yaml = fs.readFileSync('test/addStep1.yaml',{encoding:'utf8', flag:'r'});
83
- const i1 = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml);
84
-
85
- if (i1.spec.flows && i1.spec.flows.length > 0) {
86
- const r: RouteDefinition = i1.spec.flows[0];
87
- const t: TryDefinition = r ? r.from?.steps[0] : new TryDefinition();
88
- const c: CatchDefinition = t.doCatch ? t.doCatch[0] : new CatchDefinition();
89
- const parentUuid = c.uuid || "";
90
-
91
- const w: WhenDefinition = new WhenDefinition({expression: new ExpressionDefinition({simple: new SimpleExpression({expression:"${body} != null"})})});
92
- const i2 = CamelDefinitionApiExt.addStepToIntegration(i1, w, parentUuid);
93
-
94
- if (i2.spec.flows) {
95
- expect(i2.spec.flows[0].from.steps[0].doCatch[0].onWhen.expression.simple.expression).to.equal("${body} != null");
96
- }
97
- }
98
- });
99
-
100
- it('Add Step to position', () => {
101
- const i = Integration.createNew("test")
102
-
103
- const log1 =new LogDefinition({logName: 'log11', message: "hello11"});
104
- const log2 =new LogDefinition({logName: 'log11', message: "hello22"});
105
- const log3 =new LogDefinition({logName: 'log11', message: "hello33"});
106
-
107
- const from = new FromDefinition({uri: "direct1"});
108
- from.steps?.push(log1);
109
- from.steps?.push(log2);
110
- from.steps?.push(log3);
111
- i.spec.flows?.push(new RouteDefinition({from:from}));
112
-
113
- const choice = new ChoiceDefinition({})
114
- const i2 = CamelDefinitionApiExt.addStepToIntegration(i, choice, from.uuid, 2);
115
-
116
- if (i2.spec.flows && i2.spec.flows.length > 0) {
117
- const f: FromDefinition = i2.spec.flows[0].from;
118
- const c: ChoiceDefinition = f.steps[2];
119
- expect(c?.dslName).to.equal('ChoiceDefinition');
120
-
121
- }
122
- });
123
-
124
- });
@@ -1,27 +0,0 @@
1
- apiVersion: camel.apache.org/v1
2
- kind: Integration
3
- metadata:
4
- name: ''
5
- spec:
6
- flows:
7
- - from:
8
- uri: kamelet:http-secured-source
9
- steps:
10
- - do-try:
11
- steps:
12
- - to: "log:when-a"
13
- - to: "log:when-b"
14
- do-catch:
15
- - exception:
16
- - "java.io.FileNotFoundException"
17
- - "java.io.IOException"
18
- on-when:
19
- simple: "${body.size()} == 1"
20
- steps:
21
- - to: "log:io-error"
22
- - choice:
23
- when:
24
- - expression: {}
25
- steps:
26
- - tod: {}
27
- otherwise: {}
@@ -1,19 +0,0 @@
1
- - rest:
2
- id: rest-b536
3
- get:
4
- - id: metadata
5
- path: /metadata
6
- to: direct:metadata
7
- param:
8
- - description: Requests the server to return a designated subset of the resource
9
- name: _summary
10
- type: query
11
- required: false
12
- collectionFormat: multi
13
- dataType: string
14
- allowableValues:
15
- - "true"
16
- - text
17
- - data
18
- - count
19
- - "false"
@@ -1,30 +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 {expect} from 'chai';
18
- import 'mocha';
19
- import {CamelDefinitionYaml} from "../src/core/api/CamelDefinitionYaml";
20
- import * as fs from 'fs';
21
-
22
- describe('Array of string', () => {
23
-
24
- it('Array of string', () => {
25
- const yaml = fs.readFileSync('test/allowableValues.camel.yaml', { encoding: 'utf8', flag: 'r' });
26
- const i = CamelDefinitionYaml.yamlToIntegration('allowableValues.camel.yaml', yaml);
27
- const yaml2 = CamelDefinitionYaml.integrationToYaml(i);
28
- expect(yaml2).to.equal(yaml);
29
- });
30
- });
@@ -1,70 +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
-
18
- apiVersion: camel.apache.org/v1
19
- kind: Kamelet
20
- metadata:
21
- name: avro-serialize-action
22
- annotations:
23
- camel.apache.org/kamelet.support.level: "Stable"
24
- camel.apache.org/catalog.version: "4.6.0-SNAPSHOT"
25
- camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
26
- camel.apache.org/provider: "Apache Software Foundation"
27
- camel.apache.org/kamelet.group: "Actions"
28
- camel.apache.org/kamelet.namespace: "Transformation"
29
- labels:
30
- camel.apache.org/kamelet.type: "action"
31
- spec:
32
- definition:
33
- title: "Avro Serialize Action"
34
- description: "Serialize payload to Avro"
35
- type: object
36
- properties:
37
- schema:
38
- title: Schema
39
- description: The Avro schema to use during serialization (as single-line, using JSON format)
40
- type: string
41
- example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}'
42
- validate:
43
- title: Validate
44
- description: Indicates if the content must be validated against the schema
45
- type: boolean
46
- default: true
47
- dependencies:
48
- - "camel:kamelet"
49
- - "camel:core"
50
- - "camel:jackson-avro"
51
- template:
52
- beans:
53
- - name: schemaResolver
54
- type: "#class:org.apache.camel.component.jackson.avro.transform.AvroSchemaResolver"
55
- property:
56
- - key: validate
57
- value: '{{validate}}'
58
- - key: schema
59
- value: '{{schema:}}'
60
- from:
61
- uri: kamelet:source
62
- steps:
63
- - marshal:
64
- avro:
65
- library: Jackson
66
- unmarshalType: com.fasterxml.jackson.databind.JsonNode
67
- schemaResolver: "#bean:{{schemaResolver}}"
68
- - setHeader:
69
- name: "Content-Type"
70
- constant: "application/avro"
@@ -1,92 +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 { expect } from 'chai';
18
- import * as fs from 'fs';
19
- import 'mocha';
20
- import { CamelDefinitionYaml } from '../src/core/api/CamelDefinitionYaml';
21
- import { Beans, Integration } from '../src/core/model/IntegrationDefinition';
22
- import { BeanFactoryDefinition } from '../src/core/model/CamelDefinition';
23
-
24
- describe('bean configuration', () => {
25
-
26
- it('Read beans from plain YAML', () => {
27
- const yaml = fs.readFileSync('test/beans1.yaml', { encoding: 'utf8', flag: 'r' });
28
- const i = CamelDefinitionYaml.yamlToIntegration('beans.yaml', yaml);
29
- expect(i.metadata.name).to.equal('beans.yaml');
30
- expect(i.kind).to.equal('Integration');
31
- expect(i.spec.flows?.length).to.equal(3);
32
- expect(i.type).to.equal('plain');
33
- if (i.spec.flows) {
34
- expect(i.spec.flows[2].beans[0].name).to.equal('myNested');
35
- expect(i.spec.flows[2].beans[0].type).to.equal('${MyBean.class.name}');
36
- expect(i.spec.flows[2].beans[0].properties['nested.foo']).to.equal('valueFoo');
37
- expect(i.spec.flows[2].beans[1].name).to.equal('myProps');
38
- }
39
- CamelDefinitionYaml.integrationToYaml(i)
40
- });
41
-
42
- it('Read beans from Integration', () => {
43
- const yaml = fs.readFileSync('test/beans2.yaml', { encoding: 'utf8', flag: 'r' });
44
- const i = CamelDefinitionYaml.yamlToIntegration('beans.yaml', yaml);
45
- expect(i.metadata.name).to.equal('Beans');
46
- expect(i.kind).to.equal('Integration');
47
- expect(i.spec.flows?.length).to.equal(3);
48
- expect(i.type).to.equal('crd');
49
- if (i.spec.flows) {
50
- expect(i.spec.flows[2].beans[0].name).to.equal('myNested');
51
- expect(i.spec.flows[2].beans[0].type).to.equal('${MyBean.class.name}');
52
- expect(i.spec.flows[2].beans[0].properties['nested.foo']).to.equal('valueFoo');
53
- expect(i.spec.flows[2].beans[1].name).to.equal('myProps');
54
- }
55
- });
56
-
57
- function countSubstring(str: string, search: string): number {
58
- if (search.length === 0) {
59
- return 0; // Avoid infinite loops for empty search strings
60
- }
61
-
62
- let count = 0;
63
- let pos = 0;
64
-
65
- // Loop to find all occurrences of 'search'
66
- while ((pos = str.indexOf(search, pos)) !== -1) {
67
- count++; // Increment count for each occurrence found
68
- pos += search.length; // Move past the last found substring to find next
69
- }
70
-
71
- return count;
72
- }
73
-
74
- it('Bean constructor', () => {
75
- const text = fs.readFileSync('test/beans3.yaml', { encoding: 'utf8', flag: 'r' });
76
- const i = CamelDefinitionYaml.yamlToIntegration('beans.yaml', text);
77
-
78
- const b = Integration.createNew('beans');
79
- const bean1 = new BeanFactoryDefinition({
80
- name: 'Name1', type: 'Type', constructors: {
81
- 0: 'zero',
82
- 1: 'one',
83
- 2: 'two',
84
- }
85
- });
86
- const bean2 = new BeanFactoryDefinition({ name: 'Name2', type: 'Type'});
87
- b.spec.flows?.push(new Beans({beans: [bean1, bean2]}));
88
- const yaml = CamelDefinitionYaml.integrationToYaml(b);
89
- expect(countSubstring(yaml, 'constructors')).to.equal(1);
90
- });
91
-
92
- });
package/test/beans1.yaml DELETED
@@ -1,36 +0,0 @@
1
- - beans:
2
- - name: myNested
3
- type: ${MyBean.class.name}
4
- properties:
5
- field1: 'value1'
6
- field2: 'value2'
7
- nested:
8
- foo: 'valueFoo'
9
- bar: 'valueBar'
10
- - name: myProps
11
- type: ${MyBean.class.name}
12
- properties:
13
- field1: 'f1_p'
14
- field2: 'f2_p'
15
- nested.foo: 'nf1_p'
16
- nested.bar: 'nf2_p'
17
- - from:
18
- uri: "direct:route"
19
- steps:
20
- - aggregate:
21
- strategy-ref: "myAggregatorStrategy"
22
- completion-size: 2
23
- correlation-expression:
24
- simple: "${header.StockSymbol}"
25
- steps:
26
- - to: "mock:route"
27
- - from:
28
- uri: "direct:route"
29
- steps:
30
- - aggregate:
31
- strategy-ref: "myAggregatorStrategy"
32
- completion-size: 2
33
- correlation-expression:
34
- simple: "${header.StockSymbol}"
35
- steps:
36
- - to: "mock:route"
package/test/beans2.yaml DELETED
@@ -1,42 +0,0 @@
1
- apiVersion: camel.apache.org/v1
2
- kind: Integration
3
- metadata:
4
- name: Beans
5
- spec:
6
- flows:
7
- - beans:
8
- - name: myNested
9
- type: ${MyBean.class.name}
10
- properties:
11
- field1: 'value1'
12
- field2: 'value2'
13
- nested:
14
- foo: 'valueFoo'
15
- bar: 'valueBar'
16
- - name: myProps
17
- type: ${MyBean.class.name}
18
- properties:
19
- field1: 'f1_p'
20
- field2: 'f2_p'
21
- nested.foo: 'nf1_p'
22
- nested.bar: 'nf2_p'
23
- - from:
24
- uri: "direct:route"
25
- steps:
26
- - aggregate:
27
- strategy-ref: "myAggregatorStrategy"
28
- completion-size: 2
29
- correlation-expression:
30
- simple: "${header.StockSymbol}"
31
- steps:
32
- - to: "mock:route"
33
- - from:
34
- uri: "direct:route"
35
- steps:
36
- - aggregate:
37
- strategy-ref: "myAggregatorStrategy"
38
- completion-size: 2
39
- correlation-expression:
40
- simple: "${header.StockSymbol}"
41
- steps:
42
- - to: "mock:route"
package/test/beans3.yaml DELETED
@@ -1,7 +0,0 @@
1
- - beans:
2
- - constructors:
3
- 0: zero
4
- 1: one
5
- 2: two
6
- name: Name
7
- type: Type
@@ -1,53 +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 {expect} from 'chai';
18
- import 'mocha';
19
- import {
20
- LogDefinition, ExpressionDefinition, SplitDefinition, SimpleExpression
21
- } from "../src/core/model/CamelDefinition";
22
- import {CamelDefinitionApi} from "../src/core/api/CamelDefinitionApi";
23
- import {CamelUtil} from "../src/core/api/CamelUtil";
24
- import { SetHeaderDefinition } from '../src/core/model/CamelDefinition';
25
-
26
- describe('Check required properties', () => {
27
-
28
- it('Check Log DSL', () => {
29
- const log: LogDefinition = CamelDefinitionApi.createLogDefinition({});
30
- expect(CamelUtil.checkRequired(log)[0]).to.equal(false);
31
- log.message = '${body}'
32
- expect(CamelUtil.checkRequired(log)[0]).to.equal(true);
33
- });
34
-
35
- it('Check SetHeader DSL', () => {
36
- const setHeader: SetHeaderDefinition = CamelDefinitionApi.createSetHeaderDefinition({});
37
- setHeader.expression = new ExpressionDefinition({simple: new SimpleExpression({expression: '${body}'})})
38
- const check = CamelUtil.checkRequired(setHeader);
39
- expect(check[0]).to.equal(false);
40
- setHeader.name = 'header1'
41
- expect(CamelUtil.checkRequired(setHeader)[0]).to.equal(true);
42
- });
43
-
44
- it('Check Split DSL', () => {
45
- const split: SplitDefinition = CamelDefinitionApi.createSplitDefinition({});
46
- expect(CamelUtil.checkRequired(split)[0]).to.equal(false);
47
- split.expression = new ExpressionDefinition({simple: new SimpleExpression()})
48
- expect(CamelUtil.checkRequired(split)[0]).to.equal(false);
49
- split.expression = new ExpressionDefinition({simple: new SimpleExpression({expression: "${body} !== null"})})
50
- expect(CamelUtil.checkRequired(split)[0]).to.equal(true);
51
- });
52
-
53
- });