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,46 +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 {FromDefinition, ExpressionDefinition, PropertyExpressionDefinition} from "../src/core/model/CamelDefinition";
20
- import {Integration} from "../src/core/model/IntegrationDefinition";
21
- import {CamelDefinitionYaml} from "../src/core/api/CamelDefinitionYaml";
22
- import {RouteDefinition, SagaDefinition, ToDefinition} from "../src/core/model/CamelDefinition";
23
- import * as fs from 'fs';
24
-
25
- describe('Multi object property', () => {
26
- // TODO: Make new test for multiobject property because wireTab has no setHeader anymore
27
-
28
- it('Saga options', () => {
29
- const i = Integration.createNew("test")
30
- const option1 = new PropertyExpressionDefinition({key:"key1", expression: new ExpressionDefinition({simple:"${body}"})})
31
- const option2 = new PropertyExpressionDefinition({key:"key2", expression: new ExpressionDefinition({simple:"${headers}"})})
32
- const saga = new SagaDefinition({steps: [new ToDefinition({uri: "direct"})], option: [option1, option2]})
33
- const flow1 = new FromDefinition({uri: "direct1"});
34
- flow1.steps?.push(saga);
35
- i.spec.flows?.push(new RouteDefinition({from: flow1}));
36
-
37
- const yaml = fs.readFileSync('test/multiObjectProperties1.yaml', {encoding: 'utf8', flag: 'r'});
38
-
39
- const i2 = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml);
40
-
41
- const s: SagaDefinition = i2.spec.flows?.[0].from.steps[0] as SagaDefinition;
42
- const t: ToDefinition | undefined = s.steps?.[0] as ToDefinition;
43
- expect(t?.uri).to.equal('direct');
44
- });
45
-
46
- });
@@ -1,19 +0,0 @@
1
- - route:
2
- id: route-e653
3
- from:
4
- uri: direct1
5
- id: from-6ecf
6
- steps:
7
- - saga:
8
- option:
9
- - key: key1
10
- expression:
11
- simple: ${body}
12
- - key: key2
13
- expression:
14
- simple: ${headers}
15
- id: saga-726c
16
- steps:
17
- - to:
18
- uri: direct:direct2
19
- id: to-efd8
@@ -1,38 +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
-
22
-
23
- describe('Plain YAML to integration', () => {
24
-
25
- it('YAML <-> Object', () => {
26
- const yaml = fs.readFileSync('test/multiple.yaml',{encoding:'utf8', flag:'r'});
27
- const i = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml);
28
- expect(i.metadata.name).to.equal('test1.yaml');
29
- expect(i.kind).to.equal('Integration');
30
- expect(i.spec.flows?.length).to.equal(2);
31
- expect(i.type).to.equal('plain');
32
- if (i.spec.flows) {
33
- expect(i.spec.flows[0].from.uri).to.equal('netty-http');
34
- expect(i.spec.flows[1].from.uri).to.equal('kamelet:aws-kinesis-source');
35
- }
36
- });
37
-
38
- });
@@ -1,29 +0,0 @@
1
- - from:
2
- uri: netty-http
3
- parameters:
4
- protocol: http
5
- host: localhost
6
- port: 8080
7
- path: demo
8
- steps:
9
- - convertBodyTo:
10
- type: String
11
- - unmarshal:
12
- json: {}
13
- - choice:
14
- when:
15
- - expression:
16
- simple: ${body[amount]} < 1000
17
- steps:
18
- - log:
19
- message: 'WHEN: ${body}'
20
- logging-level: INFO
21
- log-name: when
22
- otherwise:
23
- steps:
24
- - log:
25
- log-name: otherwise
26
- logging-level: INFO
27
- message: 'OTHERWISE: ${body}'
28
- - from:
29
- uri: kamelet:aws-kinesis-source
@@ -1,48 +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, RestDefinition, GetDefinition, OpenApiDefinition,
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('OpenAPI', () => {
35
-
36
- it('Simple config', () => {
37
- let i = Integration.createNew("test")
38
-
39
- const openApi = new OpenApiDefinition({specification: "openapi.json", id: 'openapi-1'});
40
- const rest = new RestDefinition({id: 'rest-1', path: "/demo", description: "Hello World", openApi: openApi});
41
- i = CamelDefinitionApiExt.addRestToIntegration(i, rest);
42
-
43
- const yaml1 = CamelDefinitionYaml.integrationToYaml(i);
44
- const yaml2 = fs.readFileSync('test/openapi.yaml', {encoding: 'utf8', flag: 'r'});
45
-
46
- expect(yaml1).to.equal(yaml2);
47
- });
48
- });
package/test/openapi.yaml DELETED
@@ -1,7 +0,0 @@
1
- - rest:
2
- id: rest-1
3
- description: Hello World
4
- path: /demo
5
- openApi:
6
- id: openapi-1
7
- specification: openapi.json
@@ -1,32 +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 {CamelUtil} from "../src/core/api/CamelUtil";
22
-
23
- describe('Get Placeholders', () => {
24
-
25
- it('Get Placeholders', () => {
26
- const yaml = fs.readFileSync('test/placeholder.yaml',{encoding:'utf8', flag:'r'});
27
- const i = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml);
28
- const placeholders = CamelUtil.findPlaceholdersInObject(i);
29
- expect(placeholders.size).to.equal(4);
30
- });
31
-
32
- });
@@ -1,133 +0,0 @@
1
- apiVersion: camel.apache.org/v1
2
- kind: Integration
3
- metadata:
4
- name: parceldemo
5
- spec:
6
- flows:
7
- - rest:
8
- post:
9
- - to: direct:post
10
- path: /parcels
11
- consumes: application/json
12
- produces: application/json
13
- - route:
14
- from:
15
- uri: direct:post
16
- steps:
17
- - log:
18
- message: 'Received: ${body}'
19
- - multicast:
20
- steps:
21
- - to:
22
- uri: kamelet:kafka-not-secured-sink
23
- parameters:
24
- topic: parcels
25
- bootstrapServers: '{{kafka-brokers}}'
26
- - to:
27
- uri: kamelet:postgresql-sink
28
- parameters:
29
- serverName: '{{postgres-server}}'
30
- serverPort: '5432'
31
- username: postgres
32
- password: postgres
33
- databaseName: demo
34
- query: >-
35
- INSERT INTO parcels (id,address) VALUES
36
- (:#id,:#address) ON CONFLICT (id) DO NOTHING
37
- aggregationStrategy: >-
38
- #class:org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy
39
- parallelProcessing: true
40
- streaming: true
41
- id: post
42
- - route:
43
- from:
44
- uri: kamelet:jms-apache-artemis-source
45
- steps:
46
- - to:
47
- uri: xj:identity
48
- parameters:
49
- transformDirection: XML2JSON
50
- - to:
51
- uri: kamelet:kafka-not-secured-sink
52
- parameters:
53
- topic: payments
54
- bootstrapServers: '{{kafka-brokers}}'
55
- parameters:
56
- destinationType: queue
57
- destinationName: payments
58
- brokerURL: '{{jms-broker}}'
59
- id: payment
60
- - route:
61
- from:
62
- uri: kamelet:kafka-not-secured-source
63
- steps:
64
- - log:
65
- message: 'Aggegating: ${body}'
66
- - unmarshal:
67
- json:
68
- library: jackson
69
- - aggregate:
70
- steps:
71
- - choice:
72
- when:
73
- - expression:
74
- groovy:
75
- expression: >-
76
- body.find { it.containsKey('status') }.status ==
77
- 'confirmed'
78
- steps:
79
- - marshal:
80
- json:
81
- library: jackson
82
- - log:
83
- message: 'Send to MQTT : ${body}'
84
- - to:
85
- uri: kamelet:mqtt-sink
86
- parameters:
87
- topic: deliveries
88
- brokerUrl: '{{mqtt-broker}}'
89
- otherwise:
90
- steps:
91
- - setBody:
92
- expression:
93
- groovy:
94
- expression: 'body.find { it.containsKey(''status'') } '
95
- - marshal:
96
- json:
97
- library: jackson
98
- - log:
99
- message: 'Send to database: ${body}'
100
- - to:
101
- uri: kamelet:postgresql-sink
102
- parameters:
103
- serverName: '{{postgres-server}}'
104
- serverPort: '5432'
105
- username: postgres
106
- password: postgres
107
- databaseName: demo
108
- query: >-
109
- UPDATE parcels set status = 'CANCELED' WHERE
110
- id = :#id
111
- aggregationStrategy: aggregator
112
- completionSize: 2
113
- correlationExpression:
114
- groovy:
115
- expression: body.get('id')
116
- parameters:
117
- topic: parcels,payments
118
- bootstrapServers: '{{kafka-brokers}}'
119
- autoCommitEnable: true
120
- consumerGroup: parceldemo
121
- id: aggregator
122
- - route:
123
- from:
124
- uri: kamelet:mqtt-source
125
- steps:
126
- - log:
127
- message: 'Delivery: ${body}'
128
- parameters:
129
- topic: deliveries
130
- brokerUrl: '{{mqtt-broker}}'
131
- - beans:
132
- - name: aggregator
133
- type: org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy
@@ -1,31 +0,0 @@
1
- - route:
2
- id: route-1
3
- from:
4
- id: from-1
5
- uri: timer
6
- parameters:
7
- name: info
8
- steps:
9
- - doTry:
10
- id: doTry-1
11
- doCatch:
12
- - id: doCatch-1
13
- exception:
14
- - java.lang.ArithmeticException
15
- steps:
16
- - log:
17
- id: log-1
18
- message: Exception
19
- doFinally:
20
- id: doFinally-1
21
- steps:
22
- - log:
23
- id: log-2
24
- message: ${body}
25
- steps:
26
- - setBody:
27
- id: setBody-1
28
- expression:
29
- groovy:
30
- id: groovy-1
31
- expression: 1000 / 0
@@ -1,72 +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
-
22
-
23
- describe('Plain YAML to integration', () => {
24
-
25
- it('YAML <-> Object', () => {
26
- const yaml = fs.readFileSync('test/plain1.yaml',{encoding:'utf8', flag:'r'});
27
- const i = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml);
28
- expect(i.metadata.name).to.equal('test1.yaml');
29
- expect(i.kind).to.equal('Integration');
30
- expect(i.spec.flows?.length).to.equal(1);
31
- expect(i.type).to.equal('plain');
32
- if (i.spec.flows) {
33
- expect(i.spec.flows[0].from.uri).to.equal('timer');
34
- expect(i.spec.flows[0].from.steps[0].when.length).to.equal(2);
35
- }
36
- });
37
-
38
- it('YAML <-> Object 2', () => {
39
- const yaml = fs.readFileSync('test/plain2.yaml',{encoding:'utf8', flag:'r'});
40
- const i = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml);
41
- expect(i.metadata.name).to.equal('test1.yaml');
42
- expect(i.kind).to.equal('Integration');
43
- expect(i.spec.flows?.length).to.equal(1);
44
- expect(i.type).to.equal('plain');
45
- if (i.spec.flows) {
46
- expect(i.spec.flows[0].from.uri).to.equal('timer');
47
- expect(i.spec.flows[0].from.parameters.name).to.equal('info');
48
- expect(i.spec.flows[0].from.steps[0].expression.constant.expression).to.equal("Hello Yaml !!!");
49
- }
50
- });
51
-
52
- it('Boolean Properties', () => {
53
- const yaml1 = fs.readFileSync('test/plain3.yaml',{encoding:'utf8', flag:'r'});
54
- const yaml2 = fs.readFileSync('test/plain4.yaml',{encoding:'utf8', flag:'r'});
55
- const i = CamelDefinitionYaml.yamlToIntegration("test1.yaml", yaml1);
56
- (i.spec.flows?.at(0)).autoStartup = false;
57
- const y = CamelDefinitionYaml.integrationToYaml(i);
58
- expect(y).to.equal(yaml2.replaceAll("\r\n", "\n")); // replace for Windows compatibility
59
- });
60
-
61
- it('YAML <-> Integration', () => {
62
- const yaml = fs.readFileSync('test/plain-try-catch.yaml',{encoding:'utf8', flag:'r'});
63
- const i = CamelDefinitionYaml.yamlToIntegration("try-catch.yaml", yaml);
64
- expect(i.metadata.name).to.equal('try-catch.yaml');
65
- expect(i.kind).to.equal('Integration');
66
- expect(i.spec.flows?.length).to.equal(1);
67
- expect(i.type).to.equal('plain');
68
- const yaml2 = CamelDefinitionYaml.integrationToYaml(i);
69
- expect(yaml.replaceAll("\r\n", "\n")).to.equal(yaml2); // replace for Windows compatibility
70
- });
71
-
72
- });
package/test/plain1.yaml DELETED
@@ -1,22 +0,0 @@
1
- - from:
2
- uri: timer
3
- id: from-1
4
- parameters:
5
- name: info
6
- steps:
7
- - choice:
8
- when:
9
- - expression:
10
- simple:
11
- expression: ${headers} != null
12
- steps:
13
- - log:
14
- message: hello11
15
- logName: log11
16
- - expression:
17
- simple:
18
- expression: ${headers} == null
19
- steps:
20
- - log:
21
- message: hello22
22
- logName: log22
package/test/plain2.yaml DELETED
@@ -1,13 +0,0 @@
1
- - from:
2
- uri: timer
3
- id: from-1
4
- parameters:
5
- name: info
6
- steps:
7
- - set-body:
8
- expression:
9
- constant:
10
- expression: Hello Yaml !!!
11
- - log:
12
- message: ${body}
13
- logName: log11
package/test/plain3.yaml DELETED
@@ -1,5 +0,0 @@
1
- - route:
2
- autoStartup: true
3
- id: route-1
4
- from:
5
- id: from-f6d9
package/test/plain4.yaml DELETED
@@ -1,5 +0,0 @@
1
- - route:
2
- id: route-1
3
- autoStartup: false
4
- from:
5
- id: from-f6d9
@@ -1,113 +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
- apiVersion: camel.apache.org/v1
18
- kind: Kamelet
19
- metadata:
20
- name: postgresql-source
21
- annotations:
22
- camel.apache.org/kamelet.support.level: "Stable"
23
- camel.apache.org/catalog.version: "4.6.0-SNAPSHOT"
24
- camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+UG9zdGdyZVNRTCBpY29uPC90aXRsZT48cGF0aCBkPSJNMTcuMTI4IDBhMTAuMTM0IDEwLjEzNCAwIDAgMC0yLjc1NS40MDNsLS4wNjMuMDJBMTAuOTIyIDEwLjkyMiAwIDAgMCAxMi42LjI1OEMxMS40MjIuMjM4IDEwLjQxLjUyNCA5LjU5NCAxIDguNzkuNzIxIDcuMTIyLjI0IDUuMzY0LjMzNiA0LjE0LjQwMyAyLjgwNC43NzUgMS44MTQgMS44Mi44MjcgMi44NjUuMzA1IDQuNDgyLjQxNSA2LjY4MmMuMDMuNjA3LjIwMyAxLjU5Ny40OSAyLjg3OXMuNjkgMi43ODMgMS4xOTMgNC4xNTJjLjUwMyAxLjM3IDEuMDU0IDIuNiAxLjkxNSAzLjQzNi40My40MTkgMS4wMjIuNzcxIDEuNzIuNzQyLjQ5LS4wMi45MzMtLjIzNSAxLjMxNS0uNTUyLjE4Ni4yNDUuMzg1LjM1Mi41NjYuNDUxLjIyOC4xMjUuNDUuMjEuNjguMjY2LjQxMy4xMDMgMS4xMi4yNDEgMS45NDguMS4yODItLjA0Ny41NzktLjEzOS44NzUtLjI3LjAxMS4zMy4wMjQuNjUzLjAzNy45OC4wNDEgMS4wMzYuMDY3IDEuOTkzLjM3OCAyLjgzMi4wNS4xMzcuMTg3Ljg0My43MjcgMS40NjYuNTQuNjI0IDEuNTk4IDEuMDEzIDIuODAzLjc1NS44NS0uMTgyIDEuOTMxLS41MSAyLjY0OS0xLjUzMi43MS0xLjAxIDEuMDMtMi40NTkgMS4wOTMtNC44MDkuMDE2LS4xMjcuMDM1LS4yMzUuMDU1LS4zMzZsLjE2OS4wMTVoLjAyYy45MDcuMDQxIDEuODkxLS4wODggMi43MTMtLjQ3LjcyOC0uMzM3IDEuMjc5LS42NzggMS42OC0xLjI4My4xLS4xNS4yMS0uMzMxLjI0LS42NDNzLS4xNDktLjgtLjQ0Ni0xLjAyNWMtLjU5NS0uNDUyLS45NjktLjI4LTEuMzctLjE5N2E2LjI3IDYuMjcgMCAwIDEtMS4yMDIuMTQ2YzEuMTU2LTEuOTQ3IDEuOTg1LTQuMDE1IDIuNDU4LTUuODQ1LjI4LTEuMDguNDM3LTIuMDc2LjQ1LTIuOTQ3LjAxMy0uODcxLS4wNTgtMS42NDItLjU4LTIuMzA5QzIxLjM2LjYgMTkuMDY3LjAyNCAxNy4yOTMuMDA0Yy0uMDU1LS4wMDEtLjExLS4wMDItLjE2NS0uMDAxem0tLjA0Ny42NGMxLjY3OC0uMDE2IDMuODIyLjQ1NSA1LjM2MSAyLjQyMi4zNDYuNDQyLjQ0OSAxLjA4OC40MzcgMS44ODQtLjAxMy43OTUtLjE2IDEuNzQ3LS40MjkgMi43OS0uNTIyIDIuMDItMS41MDggNC4zNzUtMi44OTcgNi40ODhhLjc1Ni43NTYgMCAwIDAgLjE1OC4wODZjLjI5LjEyLjk1MS4yMjMgMi4yNy0uMDQ4LjMzMi0uMDcuNTc1LS4xMTcuODI3LjA3NWEuNTIuNTIgMCAwIDEgLjE4My40MjUuNzA0LjcwNCAwIDAgMS0uMTMuMzM2Yy0uMjU1LjM4My0uNzU4Ljc0Ni0xLjQwMyAxLjA0NS0uNTcxLjI2Ni0xLjM5LjQwNS0yLjExNi40MTMtLjM2NC4wMDQtLjctLjAyNC0uOTg1LS4xMTNsLS4wMTgtLjAwN2MtLjExIDEuMDYtLjM2MyAzLjE1My0uNTI4IDQuMTA4LS4xMzIuNzctLjM2MyAxLjM4Mi0uODA0IDEuODQtLjQ0LjQ1OC0xLjA2My43MzQtMS45MDEuOTE0LTEuMDM4LjIyMy0xLjc5NS0uMDE3LTIuMjgzLS40MjgtLjQ4Ny0uNDEtLjcxLS45NTQtLjg0NC0xLjI4Ny0uMDkyLS4yMy0uMTQtLjUyOC0uMTg2LS45MjYtLjA0Ni0uMzk4LS4wOC0uODg1LS4xMDMtMS40MzRhNTEuNDI2IDUxLjQyNiAwIDAgMS0uMDMtMi41MjMgMy4wNjEgMy4wNjEgMCAwIDEtMS41NTIuNzZjLS42ODkuMTE3LTEuMzA0LjAwMi0xLjY3MS0uMDlhMi4yNzYgMi4yNzYgMCAwIDEtLjUyLS4yMDFjLS4xNy0uMDkxLS4zMzItLjE5NC0uNDQtLjM5N2EuNTYuNTYgMCAwIDEtLjA1Ny0uMzgxLjYxLjYxIDAgMCAxIC4yMTgtLjMzMWMuMTk4LS4xNjEuNDYtLjI1MS44NTUtLjMzMy43MTktLjE0OC45Ny0uMjQ5IDEuMTIzLS4zNy4xMy0uMTA0LjI3Ny0uMzE0LjUzNy0uNjIyYTEuMTYgMS4xNiAwIDAgMS0uMDAzLS4wNDEgMi45NiAyLjk2IDAgMCAxLTEuMzMtLjM1OGMtLjE1LjE1OC0uOTE2Ljk2OC0xLjg1IDIuMDkyLS4zOTMuNDctLjgyNy43NC0xLjI4NS43NTktLjQ1OC4wMi0uODcyLS4yMTEtMS4yMjQtLjU1Mi0uNzAzLS42ODMtMS4yNjQtMS44NTgtMS43NTMtMy4xODYtLjQ4OC0xLjMyOC0uODg1LTIuODA3LTEuMTY3LTQuMDY3LS4yODMtMS4yNi0uNDUtMi4yNzYtLjQ3NC0yLjc2Ni0uMTA1LTIuMDgyLjM4Mi0zLjQ4NSAxLjIxNy00LjM3LjgzNi0uODg1IDEuOTgyLTEuMjIgMy4wOTktMS4yODQgMi4wMDUtLjExNSAzLjkwOS41ODQgNC4yOTQuNzM0Ljc0Mi0uNTA0IDEuNjk4LS44MTggMi44OTItLjc5OGE3LjM5IDcuMzkgMCAwIDEgMS42ODEuMjE4bC4wMi0uMDA5YTYuODU0IDYuODU0IDAgMCAxIC43MzktLjIxNEE5LjYyNiA5LjYyNiAwIDAgMSAxNy4wOC42NDJ6bS4xNTIuNjdoLS4xNDZhOC43NCA4Ljc0IDAgMCAwLTEuNzA0LjE5MmMxLjI0Ni41NTIgMi4xODcgMS40MDIgMi44NSAyLjI1YTguNDQgOC40NCAwIDAgMSAxLjEzMiAxLjkyYy4xMS4yNjQuMTg0LjQ4Ny4yMjYuNjYuMDIxLjA4Ny4wMzUuMTYuMDQuMjM2LjAwMi4wMzguMDA0LjA3Ny0uMDEyLjE0NCAwIC4wMDMtLjAwNS4wMS0uMDA2LjAxMy4wMy44NzYtLjE4NyAxLjQ3LS4yMTMgMi4zMDYtLjAyLjYwNi4xMzUgMS4zMTguMTczIDIuMDk1LjAzNi43My0uMDUyIDEuNTMyLS41MjYgMi4zMTkuMDQuMDQ4LjA3Ni4wOTYuMTE0LjE0NCAxLjI1NC0xLjk3NSAyLjE1OC00LjE2IDIuNjQtNi4wMjMuMjU4LTEuMDAzLjM5NS0xLjkxMi40MDctMi42MzIuMDEtLjcyLS4xMjQtMS4yNDItLjI5NS0xLjQ2LTEuMzQyLTEuNzE2LTMuMTU4LTIuMTUzLTQuNjgtMi4xNjV6bS00Ljc5LjI1NmMtMS4xODIuMDAzLTIuMDMuMzYtMi42NzMuODk1LS42NjMuNTUzLTEuMTA4IDEuMzEtMS40IDIuMDg1LS4zNDcuOTItLjQ2NiAxLjgxLS41MTMgMi40MTRsLjAxMy0uMDA4Yy4zNTctLjIuODI2LS40IDEuMzI4LS41MTYuNTAyLS4xMTUgMS4wNDMtLjE1MSAxLjUzMy4wMzlzLjg5NS42MzcgMS4wNDIgMS4zMTVjLjcwNCAzLjI1Ny0uMjE5IDQuNDY4LS41NTkgNS4zODJhOS42MSA5LjYxIDAgMCAwLS4zMzEgMS4wMTNjLjA0My0uMDEuMDg2LS4wMjIuMTI5LS4wMjYuMjQtLjAyLjQyOC4wNi41NC4xMDguMzQyLjE0Mi41NzcuNDQuNzA0Ljc4LjAzMy4wODkuMDU3LjE4NS4wNzEuMjg0YS4zMzYuMzM2IDAgMCAxIC4wMi4xMjcgNTUuMTQgNTUuMTQgMCAwIDAgLjAxMyAzLjczOGMuMDIzLjUzOC4wNTcgMS4wMTIuMSAxLjM4Ni4wNDMuMzczLjEwNC42NTcuMTQzLjc1My4xMjguMzIuMzE1LjczOS42NTMgMS4wMjQuMzM4LjI4NC44MjMuNDc0IDEuNzA5LjI4NC43NjgtLjE2NSAxLjI0Mi0uMzk0IDEuNTU5LS43MjMuMzE2LS4zMjkuNTA1LS43ODcuNjI2LTEuNDg4LjE4MS0xLjA1LjU0NS00LjA5NS41ODktNC42NjgtLjAyLS40MzIuMDQ0LS43NjQuMTgyLTEuMDE3LjE0Mi0uMjYuMzYyLS40MTkuNTUyLS41MDUuMDk1LS4wNDMuMTg0LS4wNzIuMjU3LS4wOTNhNS45NTYgNS45NTYgMCAwIDAtLjI0My0uMzI1IDQuNDU2IDQuNDU2IDAgMCAxLS42NjYtMS4wOTkgOC4yOTYgOC4yOTYgMCAwIDAtLjI1Ny0uNDgzYy0uMTMzLS4yNC0uMzAxLS41NC0uNDc3LS44NzctLjM1Mi0uNjc1LS43MzUtMS40OTMtLjkzNC0yLjI5LS4xOTgtLjc5Ni0uMjI3LTEuNjIuMjgxLTIuMjAxLjQ1LS41MTYgMS4yNC0uNzMgMi40MjYtLjYxLS4wMzUtLjEwNS0uMDU2LS4xOTItLjExNS0uMzMyYTcuODE3IDcuODE3IDAgMCAwLTEuMDQxLTEuNzY0Yy0xLjAwNS0xLjI4NS0yLjYzMi0yLjU1OS01LjE0Ni0yLjZoLS4xMTV6bS02LjY0Mi4wNTJjLS4xMjcgMC0uMjU0LjAwNC0uMzguMDExLTEuMDEuMDU4LTEuOTY1LjM1MS0yLjY0OCAxLjA3NS0uNjg0LjcyNC0xLjEzNCAxLjkxMS0xLjAzNiAzLjg3Ni4wMTkuMzcyLjE4MSAxLjQxNC40NTkgMi42NTIuMjc3IDEuMjM4LjY3IDIuNjk1IDEuMTQyIDMuOTgyLjQ3MyAxLjI4NyAxLjA0NiAyLjQwNyAxLjU5IDIuOTM3LjI3NC4yNjUuNTEyLjM3Mi43MjguMzYzLjIxNy0uMDEuNDc4LS4xMzUuNzk3LS41MThhNDMuMjQ0IDQzLjI0NCAwIDAgMSAxLjgxLTIuMDQ4IDMuNDk3IDMuNDk3IDAgMCAxLTEuMTY3LTMuMTVjLjEwMy0uNzM5LjExNy0xLjQzLjEwNS0xLjk3Ni0uMDEyLS41MzItLjA1LS44ODYtLjA1LTEuMTA3YS4zMzYuMzM2IDAgMCAxIDAtLjAxOXYtLjAwNWwtLjAwMS0uMDA2di0uMDAxYTkuODkzIDkuODkzIDAgMCAxIC41OTItMy4zNzZjLjI4LS43NDQuNjk3LTEuNSAxLjMyMi0yLjExMi0uNjE0LS4yMDItMS43MDQtLjUxLTIuODg0LS41NjhhNy42MDMgNy42MDMgMCAwIDAtLjM4LS4wMXpNMTguMTk5IDYuOWMtLjY3OS4wMDktMS4wNi4xODQtMS4yNi40MTMtLjI4My4zMjUtLjMxLjg5NS0uMTM0IDEuNTk3LjE3NS43MDMuNTM3IDEuNDg5Ljg3NyAyLjE0Mi4xNy4zMjcuMzM1LjYyMS40NjguODYuMTM0LjI0LjIzMi40MS4yOTIuNTU1LjA1NS4xMzQuMTE2LjI1Mi4xNzguMzYyLjI2My0uNTU1LjMxLTEuMS4yODMtMS42NjgtLjAzNS0uNzAzLS4xOTgtMS40MjItLjE3NC0yLjE1LjAyNy0uODUxLjE5NS0xLjQwNS4yMS0yLjA2M2E1Ljc5MyA1Ljc5MyAwIDAgMC0uNzQtLjA0OHptLTguMjM0LjExNWEyLjgyIDIuODIgMCAwIDAtLjYxNi4wNzQgNC42NjUgNC42NjUgMCAwIDAtMS4xNTMuNDQ5IDIuNDE3IDIuNDE3IDAgMCAwLS4zNDkuMjI4bC0uMDIyLjAyYy4wMDYuMTQ2LjAzNS41LjA0NyAxLjAyMS4wMTIuNTctLjAwMiAxLjI5Ny0uMTEyIDIuMDg0LS4yMzkgMS43MSAxLjAwMiAzLjEyNiAyLjQ2IDMuMTI4LjA4NS0uMzUxLjIyNS0uNzA3LjM2NS0xLjA4Mi40MDYtMS4wOTQgMS4yMDUtMS44OTIuNTMyLTUuMDA2LS4xMS0uNTEtLjMyOC0uNzE2LS42MjgtLjgzMmExLjQ3NCAxLjQ3NCAwIDAgMC0uNTI0LS4wODR6bTcuOTE3LjIwNGguMDVjLjA2Ni4wMDIuMTI3LjAwOS4xOC4wMjIuMDU0LjAxMi4xLjAzLjEzOC4wNTVhLjE2NC4xNjQgMCAwIDEgLjA3NS4xMWwtLjAwMS4wMDhoLjAwMS0uMDAxYS4yNC4yNCAwIDAgMS0uMDM1LjEzNS42NjguNjY4IDAgMCAxLS4xMS4xNS42NzcuNjc3IDAgMCAxLS4zODYuMjEyLjU5LjU5IDAgMCAxLS40MS0uMTAzLjYwOC42MDggMCAwIDEtLjEzLS4xMTguMjYuMjYgMCAwIDEtLjA2My0uMTI3LjE3LjE3IDAgMCAxIC4wNDItLjEyOC4zODQuMzg0IDAgMCAxIC4xMTctLjA5Yy4wOTYtLjA1NC4yMjYtLjA5NC4zNzMtLjExNi4wNTUtLjAwOC4xMDktLjAxMi4xNi0uMDEzem0tNy44Mi4xNjhjLjA1MyAwIC4xMDkuMDA1LjE2Ni4wMTMuMTUzLjAyMS4yODkuMDYyLjM5My4xMjJhLjQ0Ni40NDYgMCAwIDEgLjEzMy4xMDYuMjIzLjIyMyAwIDAgMSAuMDU0LjE3LjMwMi4zMDIgMCAwIDEtLjA3NS4xNTQuNjQ5LjY0OSAwIDAgMS0uMTQzLjEzLjY0LjY0IDAgMCAxLS40NDguMTEzLjcyOC43MjggMCAwIDEtLjQyLS4yMjguNzEuNzEgMCAwIDEtLjExOC0uMTY0LjI4LjI4IDAgMCAxLS4wNDEtLjE3N2MuMDE1LS4xMDguMTA0LS4xNjQuMTkxLS4xOTVhLjg2Ni44NjYgMCAwIDEgLjMwNy0uMDR6bTkuMDYgNy4zNDNsLS4wMDMuMDAxYy0uMTQ3LjA1My0uMjY4LjA3NS0uMzcuMTJhLjQ1Mi40NTIgMCAwIDAtLjIzOS4yMTRjLS4wNjMuMTE1LS4xMTcuMzE5LS4xMDEuNjY2YS41MS41MSAwIDAgMCAuMTQ4LjA3Yy4xNzEuMDUyLjQ1OC4wODYuNzc4LjA4MS42MzgtLjAwNyAxLjQyMy0uMTU2IDEuODQtLjM1YTMuOTUgMy45NSAwIDAgMCAuOTQzLS42MTVoLS4wMDFjLTEuMzkzLjI4OC0yLjE4LjIxMS0yLjY2My4wMTJhMS4zMTUgMS4zMTUgMCAwIDEtLjMzMi0uMnptLTguMDMxLjA5NGgtLjAyMWMtLjA1My4wMDUtLjEzLjAyMy0uMjc5LjE4OC0uMzQ4LjM5LS40Ny42MzUtLjc1Ny44NjQtLjI4Ny4yMjgtLjY2LjM1LTEuNDA1LjUwMy0uMjM2LjA0OC0uMzcxLjEwMS0uNDYxLjE0NC4wMjkuMDI0LjAyNi4wMy4wNy4wNTMuMTA5LjA2LjI0OS4xMTMuMzYyLjE0Mi4zMi4wOC44NDYuMTczIDEuMzk1LjA4LjU0OS0uMDk0IDEuMTItLjM1NyAxLjYwNy0xLjA0LjA4NC0uMTE4LjA5My0uMjkyLjAyNC0uNDc5LS4wNy0uMTg3LS4yMjMtLjM0OC0uMzMxLS4zOTNhLjY1My42NTMgMCAwIDAtLjIwNC0uMDZ6Ii8+PC9zdmc+"
25
- camel.apache.org/provider: "Apache Software Foundation"
26
- camel.apache.org/kamelet.group: "SQL"
27
- camel.apache.org/kamelet.namespace: "Database"
28
- labels:
29
- camel.apache.org/kamelet.type: "source"
30
- spec:
31
- definition:
32
- title: "PostgreSQL Source"
33
- description: |-
34
- Query data from a PostgreSQL Database.
35
- required:
36
- - serverName
37
- - username
38
- - password
39
- - query
40
- - databaseName
41
- type: object
42
- properties:
43
- serverName:
44
- title: Server Name
45
- description: The server name for the data source.
46
- type: string
47
- example: localhost
48
- serverPort:
49
- title: Server Port
50
- description: The server port for the data source.
51
- type: string
52
- default: 5432
53
- username:
54
- title: Username
55
- description: The username to access a secured PostgreSQL Database.
56
- type: string
57
- x-descriptors:
58
- - urn:camel:group:credentials
59
- password:
60
- title: Password
61
- description: The password to access a secured PostgreSQL Database.
62
- type: string
63
- format: password
64
- x-descriptors:
65
- - urn:camel:group:credentials
66
- query:
67
- title: Query
68
- description: The query to execute against the PostgreSQL Database.
69
- type: string
70
- example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
71
- databaseName:
72
- title: Database Name
73
- description: The name of the PostgreSQL Database.
74
- type: string
75
- consumedQuery:
76
- title: Consumed Query
77
- description: A query to run on a tuple consumed.
78
- type: string
79
- example: 'DELETE FROM accounts where user_id = :#user_id'
80
- delay:
81
- title: Delay
82
- description: The number of milliseconds before the next poll
83
- type: integer
84
- default: 500
85
- types:
86
- out:
87
- mediaType: application/json
88
- dependencies:
89
- - "camel:jackson"
90
- - "camel:kamelet"
91
- - "camel:sql"
92
- - "mvn:org.postgresql:postgresql:42.7.3"
93
- - "mvn:org.apache.commons:commons-dbcp2:2.12.0"
94
- template:
95
- beans:
96
- - name: dsBean
97
- type: "#class:org.apache.commons.dbcp2.BasicDataSource"
98
- properties:
99
- username: '{{username}}'
100
- password: '{{password}}'
101
- url: 'jdbc:postgresql://{{serverName}}:{{serverPort}}/{{databaseName}}'
102
- driverClassName: 'org.postgresql.Driver'
103
- from:
104
- uri: "sql:{{query}}"
105
- parameters:
106
- dataSource: "#bean:{{dsBean}}"
107
- onConsume: "{{?consumedQuery}}"
108
- delay: "{{delay}}"
109
- steps:
110
- - marshal:
111
- json:
112
- library: Jackson
113
- - to: "kamelet:sink"
@@ -1,15 +0,0 @@
1
- - rest:
2
- id: rest-6df5
3
- post:
4
- - id: post-9b00
5
- to: direct:direct1
6
- path: path1
7
- - rest:
8
- id: rest-8b5c
9
- post:
10
- - id: post-2c9e
11
- to: direct:direct2
12
- path: path2
13
- - restConfiguration:
14
- port: '8080'
15
- host: localhost