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 2023/10/20 00:24:54 UTC

[camel-karavan] 03/04: CamelMetadataGenerator for Camel YAML DSL 4.1.0

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

commit bfea1a8a6caa8ef6ce7a44e9c3b7d0925f3a5869
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Thu Oct 19 19:47:00 2023 -0400

    CamelMetadataGenerator for Camel YAML DSL 4.1.0
---
 karavan-core/src/core/api/CamelDefinitionApiExt.ts |  63 +---
 karavan-core/src/core/model/CamelDefinition.ts     |   6 +-
 karavan-core/src/core/model/CamelMetadata.ts       | 401 ++++++---------------
 .../camel/karavan/generator/AbstractGenerator.java |   7 +-
 .../karavan/generator/CamelMetadataGenerator.java  |   6 +-
 .../camel/karavan/generator/KaravanGenerator.java  |   2 +-
 6 files changed, 136 insertions(+), 349 deletions(-)

diff --git a/karavan-core/src/core/api/CamelDefinitionApiExt.ts b/karavan-core/src/core/api/CamelDefinitionApiExt.ts
index 954c613f..6ec8ffe5 100644
--- a/karavan-core/src/core/api/CamelDefinitionApiExt.ts
+++ b/karavan-core/src/core/api/CamelDefinitionApiExt.ts
@@ -44,12 +44,7 @@ export class CamelDefinitionApiExt {
         return integration.spec.flows?.filter(flow => !types.includes(flow.dslName)) ?? [];
     }
 
-    static addStepToIntegration = (
-        integration: Integration,
-        step: CamelElement,
-        parentId: string,
-        position?: number,
-    ): Integration => {
+    static addStepToIntegration = (integration: Integration, step: CamelElement, parentId: string, position?: number,): Integration => {
         if (step.dslName === 'RouteDefinition') {
             integration.spec.flows?.push(step as RouteDefinition);
         } else {
@@ -57,31 +52,17 @@ export class CamelDefinitionApiExt {
             CamelDefinitionApiExt.getFlowsNotOfTypes(integration, ['RouteConfigurationDefinition', 'RouteDefinition']).forEach(bean =>
                 flows.push(bean),
             );
-            const routes = CamelDefinitionApiExt.addStepToSteps(
-                CamelDefinitionApiExt.getFlowsOfType(integration, 'RouteDefinition'),
-                step,
-                parentId,
-                position,
-            );
+            const routes = CamelDefinitionApiExt.addStepToSteps(CamelDefinitionApiExt.getFlowsOfType(integration, 'RouteDefinition'), step, parentId, position,);
             flows.push(...routes);
             const routeConfigurations = CamelDefinitionApiExt.addStepToSteps(
-                CamelDefinitionApiExt.getFlowsOfType(integration, 'RouteConfigurationDefinition'),
-                step,
-                parentId,
-                position,
-            );
+                CamelDefinitionApiExt.getFlowsOfType(integration, 'RouteConfigurationDefinition'),step, parentId, position,);
             flows.push(...routeConfigurations);
             integration.spec.flows = flows;
         }
         return integration;
     }; 
 
-    static addStepToStep = (
-        step: CamelElement,
-        stepAdded: CamelElement,
-        parentId: string,
-        position: number = -1,
-    ): CamelElement => {
+    static addStepToStep = (step: CamelElement, stepAdded: CamelElement, parentId: string, position: number = -1,): CamelElement => {
         const result = CamelUtil.cloneStep(step);
         const children = CamelDefinitionApiExt.getElementChildrenDefinition(result.dslName);
         let added = false;
@@ -100,12 +81,7 @@ export class CamelDefinitionApiExt {
             } else {
                 const fieldValue = (result as any)[child.name];
                 if (child.multiple) {
-                    (result as any)[child.name] = CamelDefinitionApiExt.addStepToSteps(
-                        (result as any)[child.name],
-                        stepAdded,
-                        parentId,
-                        position,
-                    );
+                    (result as any)[child.name] = CamelDefinitionApiExt.addStepToSteps((result as any)[child.name], stepAdded, parentId, position,);
                 } else if (fieldValue) {
                     (result as any)[child.name] = CamelDefinitionApiExt.addStepToStep(fieldValue, stepAdded, parentId, position);
                 }
@@ -127,12 +103,7 @@ export class CamelDefinitionApiExt {
         return result;
     };
     
-    static addStepToSteps = (
-        steps: CamelElement[],
-        step: CamelElement,
-        parentId: string,
-        position?: number,
-    ): CamelElement[] => {
+    static addStepToSteps = (steps: CamelElement[], step: CamelElement, parentId: string, position?: number,): CamelElement[] => {
         const result: CamelElement[] = [];
         for (const element of steps) {
             const newStep = CamelDefinitionApiExt.addStepToStep(element, step, parentId, position);
@@ -169,12 +140,8 @@ export class CamelDefinitionApiExt {
         return result;
     };
 
-    static findElementInElements = (
-        steps: CamelElement[] | undefined,
-        uuid: string,
-        result: CamelElementMeta = new CamelElementMeta(undefined, undefined, undefined),
-        parentUuid?: string,
-    ): CamelElementMeta => {
+    static findElementInElements = (steps: CamelElement[] | undefined, uuid: string, result: CamelElementMeta = new CamelElementMeta(undefined, undefined, undefined),
+                                    parentUuid?: string,): CamelElementMeta => {
         if (result?.step !== undefined) {
             return result;
         }
@@ -225,23 +192,13 @@ export class CamelDefinitionApiExt {
         return hasId;
     };
 
-    static moveRouteElement = (
-        integration: Integration,
-        source: string,
-        target: string,
-        asChild: boolean,
-    ): Integration => {
+    static moveRouteElement = (integration: Integration, source: string, target: string, asChild: boolean,): Integration => {
         const sourceFindStep = CamelDefinitionApiExt.findElementMetaInIntegration(integration, source);
         const sourceStep = sourceFindStep.step;
         const sourceUuid = sourceStep?.uuid;
         const targetFindStep = CamelDefinitionApiExt.findElementMetaInIntegration(integration, target);
         const parentUuid = targetFindStep.parentUuid;
-        if (
-            sourceUuid &&
-            parentUuid &&
-            sourceStep &&
-            !CamelDefinitionApiExt.findElementPathUuids(integration, target).includes(source)
-        ) {
+        if (sourceUuid && parentUuid && sourceStep && !CamelDefinitionApiExt.findElementPathUuids(integration, target).includes(source)) {
             CamelDefinitionApiExt.deleteStepFromIntegration(integration, sourceUuid);
             if (asChild) {
                 return CamelDefinitionApiExt.addStepToIntegration(
diff --git a/karavan-core/src/core/model/CamelDefinition.ts b/karavan-core/src/core/model/CamelDefinition.ts
index 63b0827b..2c2747ac 100644
--- a/karavan-core/src/core/model/CamelDefinition.ts
+++ b/karavan-core/src/core/model/CamelDefinition.ts
@@ -1564,12 +1564,12 @@ export class TransformDefinition extends CamelElement {
 }
 
 export class TryDefinition extends CamelElement {
-    stepName?: string = 'try';
-    description?: string;
+    stepName?: string = 'doTry';
     disabled?: boolean;
+    id?: string = 'doTry-' + uuidv4().substring(0,4);
+    description?: string;
     doCatch?: CatchDefinition[] = [];
     doFinally?: FinallyDefinition;
-    id?: string = 'try-' + uuidv4().substring(0,4);
     inheritErrorHandler?: boolean;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<TryDefinition>) {
diff --git a/karavan-core/src/core/model/CamelMetadata.ts b/karavan-core/src/core/model/CamelMetadata.ts
index 30db399b..5f28b4e9 100644
--- a/karavan-core/src/core/model/CamelMetadata.ts
+++ b/karavan-core/src/core/model/CamelMetadata.ts
@@ -191,13 +191,13 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('numberOfRecordsToRead', 'Number Of Records To Read', "The maximum number of record to read.", 'number', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files The default value is a new line character.", 'string', '', '\n', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files. The default value is a new line character.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at one. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', ''),
@@ -465,13 +465,13 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('numberOfRecordsToRead', 'Number Of Records To Read', "The maximum number of record to read.", 'number', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files The default value is a new line character.", 'string', '', '\n', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files. The default value is a new line character.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at one. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', ''),
@@ -510,13 +510,13 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('ignoreTrailingWhitespaces', 'Ignore Trailing Whitespaces', "Whether or not the trailing white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('ignoreLeadingWhitespaces', 'Ignore Leading Whitespaces', "Whether or not the leading white spaces must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', ''),
         new PropertyMeta('headersDisabled', 'Headers Disabled', "Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
-        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('headerExtractionEnabled', 'Header Extraction Enabled', "Whether or not the header must be read in the first line of the test document. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('numberOfRecordsToRead', 'Number Of Records To Read', "The maximum number of record to read.", 'number', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files The default value is a new line character.", 'string', '', '\n', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('emptyValue', 'Empty Value', "The String representation of an empty value.", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('lineSeparator', 'Line Separator', "The line separator of the files. The default value is to use the JVM platform line separator", 'string', '', '', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('normalizedLineSeparator', 'Normalized Line Separator', "The normalized line separator of the files. The default value is a new line character.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at one. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
+        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', ''),
@@ -721,6 +721,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('method', 'Method', "Name of method to call", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('beanType', 'Bean Type', "Class name (fully qualified) of the bean to use Will lookup in registry and if there is a single instance of the same type, then the existing bean is used, otherwise a new bean is created (requires a default no-arg constructor).", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('scope', 'Scope', "Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance  [...]
+        new PropertyMeta('validate', 'Validate', "Whether to validate the bean has the configured method.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -806,6 +807,31 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('expression', 'ExpressionDefinition', 'Expression', "A useful base class for an expression", 'language', [
+        new PropertyMeta('constant', 'constant', "constant", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('csimple', 'csimple', "csimple", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('datasonnet', 'datasonnet', "datasonnet", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('exchangeProperty', 'exchangeProperty', "exchangeProperty", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('groovy', 'groovy', "groovy", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('header', 'header', "header", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('hl7terser', 'hl7terser', "hl7terser", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('joor', 'joor', "joor", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('jq', 'jq', "jq", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('js', 'js', "js", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('jsonpath', 'jsonpath', "jsonpath", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('language', 'language', "language", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('method', 'method', "method", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('mvel', 'mvel', "mvel", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('ognl', 'ognl', "ognl", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('python', 'python', "python", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('ref', 'ref', "ref", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('simple', 'simple', "simple", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('spel', 'spel', "spel", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('tokenize', 'tokenize', "tokenize", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('xpath', 'xpath', "xpath", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('xquery', 'xquery', "xquery", 'null', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('xtokenize', 'xtokenize', "xtokenize", 'null', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('xtokenize', 'XMLTokenizerExpression', 'XML Tokenize', "Tokenize XML payloads.", 'language,core,xml', [
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('mode', 'Mode', "The extraction mode. The available extraction modes are: i - injecting the contextual namespace bindings into the extracted token (default) w - wrapping the extracted token in its ancestor context u - unwrapping the extracted token to its child content t - extracting the text content of the specified element", 'string', 'i, w, u, t', 'i', false, false, false, false, '', ''),
@@ -826,11 +852,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('bearerToken', 'BearerTokenDefinition', 'Bearer Token', "Rest security bearer token authentication definition", 'rest,security,configuration', [
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('format', 'Format', "A hint to the client to identify how the bearer token is formatted.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('from', 'FromDefinition', 'From', "Act as a message source as input to a route", 'eip,routing', [
         new PropertyMeta('uri', 'Uri', "Sets the URI of the endpoint to use", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -838,13 +859,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
-    new ElementMeta('responseMessage', 'ResponseMessageDefinition', 'Response Message', "To specify the rest operation response messages.", 'rest', [
-        new PropertyMeta('code', 'Code', "The response code such as a HTTP status code", 'string', '', '200', false, false, false, false, '', ''),
-        new PropertyMeta('message', 'Message', "The response message (description)", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('responseModel', 'Response Model', "The response model", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('header', 'Header', "Adds a response header", 'ResponseHeaderDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('examples', 'Examples', "Examples of response messages", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
-    ]),
     new ElementMeta('refErrorHandler', 'RefErrorHandlerDefinition', 'Ref Error Handler', "References to an existing or custom error handler.", 'configuration,error', [
         new PropertyMeta('ref', 'Ref', "References to an existing or custom error handler.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -857,13 +871,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
-    new ElementMeta('when', 'WhenDefinition', 'When', "Triggers a route when the expression evaluates to true", 'eip,routing', [
-        new PropertyMeta('expression', 'Expression', "Expression used as the predicate to evaluate whether this when should trigger and route the message or not.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
-    ]),
     new ElementMeta('loop', 'LoopDefinition', 'Loop', "Processes a message multiple times", 'eip,routing', [
         new PropertyMeta('expression', 'Expression', "Expression to define how many times we should loop. Notice the expression is only evaluated once, and should return a number as how many times to loop. A value of zero or negative means no looping. The loop is like a for-loop fashion, if you want a while loop, then the dynamic router may be a better choice.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('copy', 'Copy', "If the copy attribute is true, a copy of the input Exchange is used for each iteration. That means each iteration will start from a copy of the same message. By default loop will loop the same exchange all over, so each iteration may have different message content.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
@@ -874,6 +881,12 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
+    new ElementMeta('weighted', 'WeightedLoadBalancerDefinition', 'Weighted', "Uses a weighted load distribution ratio for each server with respect to others.", 'eip,routing', [
+        new PropertyMeta('distributionRatio', 'Distribution Ratio', "The distribution ratio is a delimited String consisting on integer weights separated by delimiters for example 2,3,5. The distributionRatio must match the number of endpoints and/or processors specified in the load balancer list.", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('distributionRatioDelimiter', 'Distribution Ratio Delimiter', "Delimiter used to specify the distribution ratio. The default value is , (comma)", 'string', '', ',', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('roundRobin', 'Round Robin', "To enable round robin mode. By default the weighted distribution mode is used. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('resumable', 'ResumableDefinition', 'Resumable', "Resume EIP to support resuming processing from last known offset.", 'eip,routing', [
         new PropertyMeta('resumeStrategy', 'Resume Strategy', "Sets the resume strategy to use", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('loggingLevel', 'Logging Level', "loggingLevel", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
@@ -894,6 +907,13 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('failover', 'FailoverLoadBalancerDefinition', 'Failover', "In case of failures the exchange will be tried on the next endpoint.", 'eip,routing', [
+        new PropertyMeta('exception', 'Exception', "A list of class names for specific exceptions to monitor. If no exceptions are configured then all exceptions are monitored", 'string', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('roundRobin', 'Round Robin', "Whether or not the failover load balancer should operate in round robin mode or not. If not, then it will always start from the first endpoint when a new message is to be processed. In other words it restart from the top for every message. If round robin is enabled, then it keeps state and will continue with the next endpoint in a round robin fashion. You can also enable sticky mode together with round robin, if so then it will pick  [...]
+        new PropertyMeta('sticky', 'Sticky', "Whether or not the failover load balancer should operate in sticky mode or not. If not, then it will always start from the first endpoint when a new message is to be processed. In other words it restart from the top for every message. If sticky is enabled, then it keeps state and will continue with the last known good endpoint. You can also enable sticky mode together with round robin, if so then it will pick the last known good endpoint to u [...]
+        new PropertyMeta('maximumFailoverAttempts', 'Maximum Failover Attempts', "A value to indicate after X failover attempts we should exhaust (give up). Use -1 to indicate never give up and continuously try to failover. Use 0 to never failover. And use e.g. 3 to failover at most 3 times before giving up. his option can be used whether or not roundRobin is enabled or not.", 'string', '', '-1', false, false, false, false, '', ''),
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('otherwise', 'OtherwiseDefinition', 'Otherwise', "Route to be executed when all other choices evaluate to false", 'eip,routing', [
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -959,6 +979,9 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('roundRobin', 'RoundRobinLoadBalancerDefinition', 'Round Robin', "The destination endpoints are selected in a round-robin fashion. This is a well known and classic policy, which spreads the load evenly.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('setExchangePattern', 'SetExchangePatternDefinition', 'Set Exchange Pattern', "Sets the exchange pattern on the message exchange", 'configuration', [
         new PropertyMeta('pattern', 'Pattern', "Sets the new exchange pattern of the Exchange to be used from this point forward", 'string', 'InOnly, InOut', '', true, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
@@ -1030,31 +1053,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
-    new ElementMeta('get', 'GetDefinition', 'Get', "Rest GET command", 'rest', [
-        new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-    ]),
-    new ElementMeta('restProperty', 'RestPropertyDefinition', 'Rest Property', "A key value pair", 'rest', [
-        new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, false, false, false, '', ''),
-    ]),
     new ElementMeta('enrich', 'EnrichDefinition', 'Enrich', "Enriches a message with data from a secondary resource", 'eip,transformation', [
         new PropertyMeta('expression', 'Expression', "Expression that computes the endpoint uri to use as the resource endpoint to enrich from", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets the AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. By default Camel will use the reply from the external service as outgoing message.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
@@ -1082,18 +1080,11 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
-    new ElementMeta('value', 'ValueDefinition', 'Value', "A single value", 'configuration', [
-        new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, false, false, false, '', ''),
-    ]),
     new ElementMeta('kamelet', 'KameletDefinition', 'Kamelet', "To call Kamelets in special situations", 'eip,routing', [
         new PropertyMeta('name', 'Name', "Name of the Kamelet (templateId/routeId) to call. Options for the kamelet can be specified using uri syntax, eg mynamecount=4&type=gold.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
-    new ElementMeta('globalOption', 'GlobalOptionDefinition', 'Global Option', "Models a string key/value pair for configuring some global options on a Camel context such as max debug log length.", 'configuration', [
-        new PropertyMeta('key', 'Key', "Global option key", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('value', 'Value', "Global option value", 'string', '', '', true, false, false, false, '', ''),
-    ]),
     new ElementMeta('restBinding', 'RestBindingDefinition', 'Rest Binding', "To configure rest binding", 'rest', [
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json", 'string', '', '', false, false, false, false, '', ''),
@@ -1113,16 +1104,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
-    new ElementMeta('responseHeader', 'ResponseHeaderDefinition', 'Response Header', "To specify the rest operation response headers.", 'rest', [
-        new PropertyMeta('name', 'Name', "Name of the parameter. This option is mandatory.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('collectionFormat', 'Collection Format', "Sets the parameter collection format.", 'string', 'csv, multi, pipes, ssv, tsv', 'csv', false, false, false, false, '', ''),
-        new PropertyMeta('arrayType', 'Array Type', "Sets the parameter array type. Required if data type is array. Describes the type of items in the array.", 'string', '', 'string', false, false, false, false, '', ''),
-        new PropertyMeta('dataType', 'Data Type', "Sets the header data type.", 'string', '', 'string', false, false, false, false, '', ''),
-        new PropertyMeta('dataFormat', 'Data Format', "Sets the parameter data format.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowableValues', 'Allowable Values', "Sets the parameter list of allowable values.", 'ValueDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('example', 'Example', "Sets the example", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Description of the parameter.", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('circuitBreaker', 'CircuitBreakerDefinition', 'Circuit Breaker', "Route messages in a fault tolerance way using Circuit Breaker", 'eip,routing', [
         new PropertyMeta('configuration', 'Configuration', "Refers to a circuit breaker configuration (such as resillience4j, or microprofile-fault-tolerance) to use for configuring the circuit breaker EIP.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('resilience4jConfiguration', 'Resilience4j Configuration', "Configures the circuit breaker to use Resilience4j with the given configuration.", 'Resilience4jConfigurationDefinition', '', '', false, false, false, true, '', ''),
@@ -1144,19 +1125,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('ref', 'Ref', "Refers to the custom load balancer to lookup from the registry", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('param', 'ParamDefinition', 'Param', "To specify the rest operation parameters.", 'rest', [
-        new PropertyMeta('name', 'Name', "Sets the parameter name.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "Sets the parameter type.", 'string', 'body, formData, header, path, query', 'path', false, false, false, false, '', ''),
-        new PropertyMeta('defaultValue', 'Default Value', "Sets the parameter default value.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('required', 'Required', "Sets the parameter required flag.", 'boolean', '', 'true', false, false, false, false, '', ''),
-        new PropertyMeta('collectionFormat', 'Collection Format', "Sets the parameter collection format.", 'string', 'csv, multi, pipes, ssv, tsv', 'csv', false, false, false, false, '', ''),
-        new PropertyMeta('arrayType', 'Array Type', "Sets the parameter array type. Required if data type is array. Describes the type of items in the array.", 'string', '', 'string', false, false, false, false, '', ''),
-        new PropertyMeta('dataType', 'Data Type', "Sets the parameter data type.", 'string', '', 'string', false, false, false, false, '', ''),
-        new PropertyMeta('dataFormat', 'Data Format', "Sets the parameter data format.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('allowableValues', 'Allowable Values', "Sets the parameter list of allowable values (enum).", 'ValueDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('examples', 'Examples', "Sets the parameter examples.", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the parameter description.", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('throttle', 'ThrottleDefinition', 'Throttle', "Controls the rate at which messages are passed to the next node in the route", 'eip,routing', [
         new PropertyMeta('expression', 'Expression', "Expression to configure the maximum number of messages to throttle per request", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('correlationExpression', 'Correlation Expression', "The expression used to calculate the correlation key to use for throttle grouping. The Exchange which has the same correlation key is throttled together.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, '', ''),
@@ -1169,42 +1137,21 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('head', 'HeadDefinition', 'Head', "Rest HEAD command", 'rest', [
-        new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-    ]),
     new ElementMeta('jtaTransactionErrorHandler', 'JtaTransactionErrorHandlerDefinition', 'Jta Transaction Error Handler', "JTA based transactional error handler (requires camel-jta).", 'configuration,error', [
         new PropertyMeta('transactedPolicyRef', 'Transacted Policy Ref', "The transacted policy to use that is configured for either Spring or JTA based transactions. If no policy has been configured then Camel will attempt to auto-discover.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('rollbackLoggingLevel', 'Rollback Logging Level', "Sets the logging level to use for logging transactional rollback. This option is default WARN.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'WARN', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('loggerRef', 'Logger Ref', "References to a logger to use as logger for the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('level', 'Level', "Logging level to use when using the logging error handler type.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logName', 'Log Name', "Name of the logger to use for the logging error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('level', 'Level', "Logging level to use by error handler", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
     new ElementMeta('marshal', 'MarshalDefinition', 'Marshal', "Marshals data into a specified format for transmission over a transport or component", 'dataformat,transformation', [
@@ -1320,6 +1267,14 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('securityDefinitions', 'RestSecuritiesDefinition', 'Rest Security Definitions', "To configure rest security definitions.", 'rest,security,configuration', [
+        new PropertyMeta('apiKey', 'apiKey', "apiKey", 'ApiKeyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('basicAuth', 'basicAuth', "basicAuth", 'BasicAuthDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('bearer', 'bearer', "bearer", 'BearerTokenDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('mutualTls', 'mutualTls', "mutualTls", 'MutualTLSDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('oauth2', 'oauth2', "oauth2", 'OAuth2Definition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('openIdConnect', 'openIdConnect', "openIdConnect", 'OpenIdConnectDefinition', '', '', false, false, false, true, '', ''),
+    ]),
     new ElementMeta('pipeline', 'PipelineDefinition', 'Pipeline', "Routes the message to a sequence of processors.", 'eip,routing', [
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -1331,27 +1286,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('excludes', 'Excludes', "Exclude finding route builder from these java package names.", 'string', '', '', false, false, true, true, 'advanced', ''),
         new PropertyMeta('includes', 'Includes', "Include finding route builder from these java package names.", 'string', '', '', false, false, true, true, 'advanced', ''),
     ]),
-    new ElementMeta('patch', 'PatchDefinition', 'Patch', "Rest PATCH command", 'rest', [
-        new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-    ]),
     new ElementMeta('validate', 'ValidateDefinition', 'Validate', "Validates a message based on an expression", 'eip,transformation', [
         new PropertyMeta('expression', 'Expression', "Expression to use for validation as a predicate. The expression should return either true or false. If returning false the message is invalid and an exception is thrown.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('predicateExceptionFactory', 'Predicate Exception Factory', "The bean id of custom PredicateExceptionFactory to use for creating the exception when the validation fails. By default, Camel will throw PredicateValidationException. By using a custom factory you can control which exception to throw instead.", 'string', '', '', false, false, false, false, 'advanced', ''),
@@ -1367,10 +1301,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('property', 'PropertyDefinition', 'Property', "A key value pair where the value is a literal value", 'configuration', [
-        new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, false, false, false, '', ''),
-    ]),
     new ElementMeta('validators', 'ValidatorsDefinition', 'Validations', "To configure validators.", 'validation', [
         new PropertyMeta('customValidator', 'customValidator', "customValidator", 'CustomValidatorDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('endpointValidator', 'endpointValidator', "endpointValidator", 'EndpointValidatorDefinition', '', '', false, false, false, true, '', ''),
@@ -1451,14 +1381,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('doCatch', 'CatchDefinition', 'Do Catch', "Catches exceptions as part of a try, catch, finally block", 'error', [
-        new PropertyMeta('exception', 'Exception', "The exception(s) to catch.", 'string', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('onWhen', 'On When', "Sets an additional predicate that should be true before the onCatch is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not.", 'WhenDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
-    ]),
     new ElementMeta('onFallback', 'OnFallbackDefinition', 'On Fallback', "Route to be executed when Circuit Breaker EIP executes fallback", 'eip,routing', [
         new PropertyMeta('fallbackViaNetwork', 'Fallback Via Network', "Whether the fallback goes over the network. If the fallback will go over the network it is another possible point of failure. It is important to execute the fallback command on a separate thread-pool, otherwise if the main command were to become latent and fill the thread-pool this would prevent the fallback from running if the two commands share the same pool.", 'boolean', '', 'false', false, false, false, false, 'a [...]
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
@@ -1466,6 +1388,15 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
+    new ElementMeta('oauth2', 'OAuth2Definition', 'Oauth2', "Rest security OAuth2 definition", 'rest,security,configuration', [
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
+        new PropertyMeta('authorizationUrl', 'Authorization Url', "The authorization URL to be used for this flow. This SHOULD be in the form of a URL. Required for implicit and access code flows", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('tokenUrl', 'Token Url', "The token URL to be used for this flow. This SHOULD be in the form of a URL. Required for password, application, and access code flows.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('refreshUrl', 'Refresh Url', "The URL to be used for obtaining refresh tokens. This MUST be in the form of a URL.", 'string', '', '', false, false, false, false, '', ''),
+        new PropertyMeta('flow', 'Flow', "The flow used by the OAuth2 security scheme. Valid values are implicit, password, application or accessCode.", 'string', 'implicit, password, application, clientCredentials, accessCode, authorizationCode', '', false, false, false, false, '', ''),
+        new PropertyMeta('scopes', 'Scopes', "The available scopes for an OAuth2 security scheme", 'RestPropertyDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('rests', 'RestsDefinition', 'Rests', "A series of rest services defined using the rest-dsl", 'rest', [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
@@ -1486,10 +1417,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('failover', 'failover', "failover", 'FailoverLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('random', 'random', "random", 'RandomLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('roundRobin', 'roundRobin', "roundRobin", 'RoundRobinLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
         new PropertyMeta('sticky', 'sticky', "sticky", 'StickyLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('topic', 'topic', "topic", 'TopicLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('weighted', 'weighted', "weighted", 'WeightedLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
     new ElementMeta('process', 'ProcessDefinition', 'Process', "Calls a Camel processor", 'eip,endpoint', [
         new PropertyMeta('ref', 'Ref', "Reference to the Processor to lookup in the registry to use. Can also be used for creating new beans by their class name by prefixing with #class, eg #class:com.foo.MyClassType. And it is also possible to refer to singleton beans by their type in the registry by prefixing with #type: syntax, eg #type:com.foo.MyClassType", 'string', '', '', true, false, false, false, '', 'org.apache.camel.Processor'),
@@ -1514,7 +1445,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
     ]),
     new ElementMeta('serviceCallConfiguration', 'ServiceCallConfigurationDefinition', 'Service Call Configuration', "Remote service call configuration", 'routing,cloud', [
-        new PropertyMeta('expression', 'Expression', "Configures the Expression using the given configuration.", 'ServiceCallExpressionConfiguration', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('expression', 'Expression', "Configures the Expression using the given configuration.", 'ExpressionDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the simple language expression.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('component', 'Component', "The component to use.", 'string', '', 'http', false, false, false, false, '', ''),
         new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint", 'string', 'InOnly, InOut', '', false, false, false, false, '', ''),
@@ -1525,18 +1456,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('expressionRef', 'Expression Ref', "Set a reference to a custom Expression to use.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('blacklistServiceFilter', 'blacklistServiceFilter', "blacklistServiceFilter", 'BlacklistServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('cachingServiceDiscovery', 'cachingServiceDiscovery', "cachingServiceDiscovery", 'CachingServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('combinedServiceDiscovery', 'combinedServiceDiscovery', "combinedServiceDiscovery", 'CombinedServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
         new PropertyMeta('combinedServiceFilter', 'combinedServiceFilter', "combinedServiceFilter", 'CombinedServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('consulServiceDiscovery', 'consulServiceDiscovery', "consulServiceDiscovery", 'ConsulServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
         new PropertyMeta('customServiceFilter', 'customServiceFilter', "customServiceFilter", 'CustomServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('defaultLoadBalancer', 'defaultLoadBalancer', "defaultLoadBalancer", 'DefaultServiceCallServiceLoadBalancerConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('dnsServiceDiscovery', 'dnsServiceDiscovery', "dnsServiceDiscovery", 'DnsServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
         new PropertyMeta('healthyServiceFilter', 'healthyServiceFilter', "healthyServiceFilter", 'HealthyServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('kubernetesServiceDiscovery', 'kubernetesServiceDiscovery', "kubernetesServiceDiscovery", 'KubernetesServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
         new PropertyMeta('passThroughServiceFilter', 'passThroughServiceFilter', "passThroughServiceFilter", 'PassThroughServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('staticServiceDiscovery', 'staticServiceDiscovery', "staticServiceDiscovery", 'StaticServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('zookeeperServiceDiscovery', 'zookeeperServiceDiscovery', "zookeeperServiceDiscovery", 'ZooKeeperServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
     ]),
     new ElementMeta('pollEnrich', 'PollEnrichDefinition', 'Poll Enrich', "Enriches messages with data polled from a secondary resource", 'eip,transformation', [
         new PropertyMeta('expression', 'Expression', "Expression that computes the endpoint uri to use as the resource endpoint to enrich from", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1626,14 +1549,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('noErrorHandler', 'noErrorHandler', "noErrorHandler", 'NoErrorHandlerDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('springTransactionErrorHandler', 'springTransactionErrorHandler', "springTransactionErrorHandler", 'SpringTransactionErrorHandlerDefinition', '', '', false, false, false, true, '', ''),
     ]),
-    new ElementMeta('templatedRouteBean', 'TemplatedRouteBeanDefinition', 'Templated Route Bean', "A bean as input of a route template (local bean)", 'configuration', [
-        new PropertyMeta('name', 'Name', "Bean name", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('type', 'Type', "What type to use for creating the bean. Can be one of: #class,#type,bean,groovy,joor,language,mvel,ognl. #class or #type then the bean is created via the fully qualified classname, such as #class:com.foo.MyBean The others are scripting languages that gives more power to create the bean with an inlined code in the script section, such as using groovy.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('beanType', 'Bean Type', "To set the type (fully qualified class name) of the returned bean created by the script. Knowing the type of the bean can be needed when dependency injection by type is in use, or when looking in registry via class type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('property', 'Property', "Optional properties to set on the created local bean", 'PropertyDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('properties', 'Properties', "Optional properties to set on the created local bean", 'object', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('script', 'Script', "The script to execute that creates the bean when using scripting languages. If the script use the prefix resource: such as resource:classpath:com/foo/myscript.groovy, resource:file:/var/myscript.groovy, then its loaded from the external resource.", 'string', '', '', false, false, false, false, 'advanced', ''),
-    ]),
     new ElementMeta('dataFormats', 'DataFormatsDefinition', 'Data formats', "Configure data formats.", 'dataformat,transformation', [
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', ''),
@@ -1676,10 +1591,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipDeflater', 'zipDeflater', "zipDeflater", 'ZipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', ''),
     ]),
-    new ElementMeta('mutualTLS', 'MutualTLSDefinition', 'Mutual TLS', "Rest security mutual TLS authentication definition", 'rest,security,configuration', [
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('split', 'SplitDefinition', 'Split', "Splits a single message into many sub-messages.", 'eip,routing', [
         new PropertyMeta('expression', 'Expression', "Expression of how to split the message body, such as as-is, using a tokenizer, or using a xpath.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('delimiter', 'Delimiter', "Delimiter used in splitting messages. Can be turned off using the value false. The default value is ,", 'string', '', ',', false, false, false, false, '', ''),
@@ -1706,10 +1617,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('security', 'SecurityDefinition', 'Rest Security', "Rest security definition", 'rest,security,configuration', [
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('scopes', 'Scopes', "The scopes to allow (separate multiple scopes by comma)", 'string', '', '', false, false, false, false, '', ''),
-    ]),
     new ElementMeta('onException', 'OnExceptionDefinition', 'On Exception', "Route to be executed when an exception is thrown", 'error', [
         new PropertyMeta('exception', 'Exception', "A set of exceptions to react upon.", 'string', '', '', true, false, true, true, '', ''),
         new PropertyMeta('onWhen', 'On When', "Sets an additional predicate that should be true before the onException is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not.", 'WhenDefinition', '', '', false, false, false, true, '', ''),
@@ -1776,41 +1683,20 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('ref', 'Ref', "Reference to the routes in the xml dsl", 'string', '', '', true, false, false, false, '', ''),
     ]),
     new ElementMeta('defaultErrorHandler', 'DefaultErrorHandlerDefinition', 'Default Error Handler', "The default error handler.", 'configuration,error', [
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('loggerRef', 'Logger Ref', "References to a logger to use as logger for the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('level', 'Level', "Logging level to use when using the logging error handler type.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logName', 'Log Name', "Name of the logger to use for the logging error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('level', 'Level', "Logging level to use by error handler", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('put', 'PutDefinition', 'Put', "Rest PUT command", 'rest', [
-        new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-    ]),
     new ElementMeta('transform', 'TransformDefinition', 'Transform', "Transforms the message body based on an expression", 'eip,transformation', [
         new PropertyMeta('expression', 'Expression', "Expression to return the transformed message body (the new message body to use)", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
         new PropertyMeta('fromType', 'From Type', "From type used in data type transformation.", 'string', '', '', false, false, false, false, '', ''),
@@ -1877,11 +1763,11 @@ export const CamelModelMetadata: ElementMeta[] = [
     ]),
     new ElementMeta('routeConfiguration', 'RouteConfigurationDefinition', 'Route Configuration', "Reusable configuration for Camel route(s).", 'configuration', [
         new PropertyMeta('errorHandler', 'Error Handler', "Sets the error handler to use, for routes that has not already been configured with an error handler.", 'ErrorHandlerDefinition', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('intercept', 'Intercept', "Adds a route for an interceptor that intercepts every processing step.", 'InterceptDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('interceptFrom', 'Intercept From', "Adds a route for an interceptor that intercepts incoming messages on the given endpoint.", 'InterceptFromDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('interceptSendToEndpoint', 'Intercept Send To Endpoint', "Applies a route for an interceptor if an exchange is send to the given endpoint", 'InterceptSendToEndpointDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('onException', 'On Exception', "Exception clause for catching certain exceptions and handling them.", 'OnExceptionDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('onCompletion', 'On Completion', "On completion callback for doing custom routing when the org.apache.camel.Exchange is complete.", 'OnCompletionDefinition', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('intercept', 'Intercept', "Adds a route for an interceptor that intercepts every processing step.", 'object', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('interceptFrom', 'Intercept From', "Adds a route for an interceptor that intercepts incoming messages on the given endpoint.", 'object', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('interceptSendToEndpoint', 'Intercept Send To Endpoint', "Applies a route for an interceptor if an exchange is send to the given endpoint", 'object', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('onException', 'On Exception', "Exception clause for catching certain exceptions and handling them.", 'object', '', '', false, false, true, true, '', ''),
+        new PropertyMeta('onCompletion', 'On Completion', "On completion callback for doing custom routing when the org.apache.camel.Exchange is complete.", 'object', '', '', false, false, true, true, '', ''),
         new PropertyMeta('precondition', 'Precondition', "The predicate of the precondition in simple language to evaluate in order to determine if this route configuration should be included or not.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
@@ -1892,6 +1778,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('exponentialBackOff', 'Exponential Back Off', "Enable exponential backoff", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
         new PropertyMeta('randomBackOff', 'Random Back Off', "Enables random backoff", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
     ]),
+    new ElementMeta('sticky', 'StickyLoadBalancerDefinition', 'Sticky', "Sticky load balancing using an expression to calculate a correlation key to perform the sticky load balancing.", 'eip,routing', [
+        new PropertyMeta('correlationExpression', 'Correlation Expression', "The correlation expression to use to calculate the correlation key", 'ExpressionSubElementDefinition', '', '', true, false, false, true, '', ''),
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('interceptFrom', 'InterceptFromDefinition', 'Intercept From', "Intercepts incoming messages", 'configuration', [
         new PropertyMeta('uri', 'Uri', "Intercept incoming messages from the uri or uri pattern. If this option is not configured, then all incoming messages is intercepted.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
@@ -1902,18 +1792,18 @@ export const CamelModelMetadata: ElementMeta[] = [
     new ElementMeta('deadLetterChannel', 'DeadLetterChannelDefinition', 'Dead Letter Channel', "Error handler with dead letter queue.", 'configuration,error', [
         new PropertyMeta('deadLetterUri', 'Dead Letter Uri', "The dead letter endpoint uri for the Dead Letter error handler.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('deadLetterHandleNewException', 'Dead Letter Handle New Exception', "Whether the dead letter channel should handle (and ignore) any new exception that may been thrown during sending the message to the dead letter endpoint. The default value is true which means any such kind of exception is handled and ignored. Set this to false to let the exception be propagated back on the org.apache.camel.Exchange . This can be used in situations where you use transactions, and [...]
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('loggerRef', 'Logger Ref', "References to a logger to use as logger for the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('level', 'Level', "Logging level to use when using the logging error handler type.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logName', 'Log Name', "Name of the logger to use for the logging error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('level', 'Level', "Logging level to use by error handler", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
     new ElementMeta('apiKey', 'ApiKeyDefinition', 'Api Key', "Rest security basic auth definition", 'rest,security,configuration', [
@@ -1942,42 +1832,20 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('random', 'RandomLoadBalancerDefinition', 'Random', "The destination endpoints are selected by random.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('openIdConnect', 'OpenIdConnectDefinition', 'Open Id Connect', "Rest security OpenID Connect definition", 'rest,security,configuration', [
         new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('url', 'Url', "OpenId Connect URL to discover OAuth2 configuration values.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('propertyExpression', 'PropertyExpressionDefinition', 'Property Expression', "A key value pair where the value is an expression.", 'configuration', [
-        new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "Property values as an expression", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
-    ]),
     new ElementMeta('inputType', 'InputTypeDefinition', 'Input Type', "Set the expected data type of the input message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} .  [...]
         new PropertyMeta('urn', 'Urn', "The input type URN.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('validate', 'Validate', "Whether if validation is required for this input type.", 'boolean', '', 'false', false, false, false, false, '', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('delete', 'DeleteDefinition', 'Delete', "Rest DELETE command", 'rest', [
-        new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-    ]),
     new ElementMeta('rollback', 'RollbackDefinition', 'Rollback', "Forces a rollback by stopping routing the message", 'eip,routing', [
         new PropertyMeta('message', 'Message', "Message to use in rollback exception", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('markRollbackOnly', 'Mark Rollback Only', "Mark the transaction for rollback only (cannot be overruled to commit)", 'boolean', '', 'false', false, false, false, false, '', ''),
@@ -1991,9 +1859,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('batchConfig', 'batchConfig', "batchConfig", 'BatchResequencerConfig', '', '', false, false, false, true, '', ''),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('streamConfig', 'streamConfig', "streamConfig", 'StreamResequencerConfig', '', '', false, false, false, true, '', ''),
     ]),
     new ElementMeta('dynamicRouter', 'DynamicRouterDefinition', 'Dynamic Router', "Route messages based on dynamic rules", 'eip,routing', [
         new PropertyMeta('expression', 'Expression', "Expression to call that returns the endpoint(s) to route to in the dynamic routing. Important: The expression will be called in a while loop fashion, until the expression returns null which means the dynamic router is finished.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -2004,27 +1870,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('post', 'PostDefinition', 'Post', "Rest POST command", 'rest', [
-        new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', ''),
-        new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', ''),
-        new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', ''),
-    ]),
     new ElementMeta('log', 'LogDefinition', 'Log', "Logs the defined message to the logger", 'eip,routing', [
         new PropertyMeta('message', 'Message', "Sets the log message (uses simple language)", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('loggingLevel', 'Logging Level', "Sets the logging level. The default value is INFO", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'INFO', false, false, false, false, '', ''),
@@ -2084,23 +1929,23 @@ export const CamelModelMetadata: ElementMeta[] = [
     new ElementMeta('springTransactionErrorHandler', 'SpringTransactionErrorHandlerDefinition', 'Spring Transaction Error Handler', "Spring based transactional error handler (requires camel-spring).", 'configuration,error', [
         new PropertyMeta('transactedPolicyRef', 'Transacted Policy Ref', "The transacted policy to use that is configured for either Spring or JTA based transactions. If no policy has been configured then Camel will attempt to auto-discover.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('rollbackLoggingLevel', 'Rollback Logging Level', "Sets the logging level to use for logging transactional rollback. This option is default WARN.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'WARN', false, false, false, false, '', ''),
+        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
+        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('loggerRef', 'Logger Ref', "References to a logger to use as logger for the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('level', 'Level', "Logging level to use when using the logging error handler type.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('logName', 'Log Name', "Name of the logger to use for the logging error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
-        new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
+        new PropertyMeta('level', 'Level', "Logging level to use by error handler", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', ''),
+        new PropertyMeta('logName', 'Log Name', "Name of the logger to use by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('onRedeliveryRef', 'On Redelivery Ref', "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
         new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
-        new PropertyMeta('redeliveryPolicyRef', 'Redelivery Policy Ref', "Sets a reference to a RedeliveryPolicy to be used for redelivery settings.", 'string', '', '', false, false, false, false, 'advanced', ''),
         new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', ''),
-        new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
     new ElementMeta('serviceCall', 'ServiceCallDefinition', 'Service Call', "To call remote services", 'eip,routing', [
         new PropertyMeta('name', 'Name', "Sets the name of the service to use", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('expression', 'Expression', "Configures the Expression using the given configuration.", 'ServiceCallExpressionConfiguration', '', '', false, false, false, true, '', ''),
+        new PropertyMeta('expression', 'Expression', "Configures the Expression using the given configuration.", 'ExpressionDefinition', '', '', false, false, false, true, '', ''),
         new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression.", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('component', 'Component', "The component to use.", 'string', '', 'http', false, false, false, false, '', ''),
         new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint", 'string', 'InOnly, InOut', '', false, false, false, false, '', ''),
@@ -2113,19 +1958,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
-        new PropertyMeta('blacklistServiceFilter', 'blacklistServiceFilter', "blacklistServiceFilter", 'BlacklistServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('cachingServiceDiscovery', 'cachingServiceDiscovery', "cachingServiceDiscovery", 'CachingServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('combinedServiceDiscovery', 'combinedServiceDiscovery', "combinedServiceDiscovery", 'CombinedServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('combinedServiceFilter', 'combinedServiceFilter', "combinedServiceFilter", 'CombinedServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('consulServiceDiscovery', 'consulServiceDiscovery', "consulServiceDiscovery", 'ConsulServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('customServiceFilter', 'customServiceFilter', "customServiceFilter", 'CustomServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('defaultLoadBalancer', 'defaultLoadBalancer', "defaultLoadBalancer", 'DefaultServiceCallServiceLoadBalancerConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('dnsServiceDiscovery', 'dnsServiceDiscovery', "dnsServiceDiscovery", 'DnsServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('healthyServiceFilter', 'healthyServiceFilter', "healthyServiceFilter", 'HealthyServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('kubernetesServiceDiscovery', 'kubernetesServiceDiscovery', "kubernetesServiceDiscovery", 'KubernetesServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('passThroughServiceFilter', 'passThroughServiceFilter', "passThroughServiceFilter", 'PassThroughServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('staticServiceDiscovery', 'staticServiceDiscovery', "staticServiceDiscovery", 'StaticServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
-        new PropertyMeta('zookeeperServiceDiscovery', 'zookeeperServiceDiscovery', "zookeeperServiceDiscovery", 'ZooKeeperServiceCallServiceDiscoveryConfiguration', '', '', false, false, false, true, '', ''),
     ]),
     new ElementMeta('routeTemplate', 'RouteTemplateDefinition', 'Route Template', "Defines a route template (parameterized routes)", 'configuration', [
         new PropertyMeta('route', 'Route', "To define the route in the template", 'RouteDefinition', '', '', true, false, false, true, '', ''),
@@ -2158,6 +1990,9 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
+    new ElementMeta('topic', 'TopicLoadBalancerDefinition', 'Topic', "Topic which sends to all destinations.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+    ]),
     new ElementMeta('basicAuth', 'BasicAuthDefinition', 'Basic Auth', "Rest security basic auth definition", 'rest,security,configuration', [
         new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', ''),
@@ -2177,10 +2012,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
     ]),
-    new ElementMeta('templatedRouteParameter', 'TemplatedRouteParameterDefinition', 'Templated Route Parameter', "An input parameter of a route template.", 'configuration', [
-        new PropertyMeta('name', 'Name', "The name of the parameter", 'string', '', '', true, false, false, false, '', ''),
-        new PropertyMeta('value', 'Value', "The value of the parameter.", 'string', '', '', true, false, false, false, '', ''),
-    ]),
     new ElementMeta('setHeader', 'SetHeaderDefinition', 'Set Header', "Sets the value of a message header", 'eip,transformation', [
         new PropertyMeta('name', 'Name', "Name of message header to set a new value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
         new PropertyMeta('expression', 'Expression', "Expression to return the value of the header", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
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 80490dd0..8102e5f3 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
@@ -59,6 +59,8 @@ public class AbstractGenerator {
             className = "doCatch";
         } else if (className.equals("ConvertBodyDefinition")) {
             className = "convertBodyTo";
+         } else if (className.equals("TryDefinition")) {
+            className = "doTry";
         } else if (className.equals("FinallyDefinition")) {
             className = "doFinally";
         } else if (className.equals("ToDynamicDefinition")) {
@@ -372,8 +374,7 @@ public class AbstractGenerator {
         String camelYamlDSL = getCamelYamlDSL();
         JsonObject definitions = new JsonObject(camelYamlDSL);
 
-        Map<String, String> result = new LinkedHashMap<>(getProcessorStepNameMapForObject(null, definitions));
-        return result;
+        return new LinkedHashMap<>(getProcessorStepNameMapForObject(null, definitions));
     }
 
     protected Map<String, String> getProcessorDefinitionStepNameMap() {
@@ -389,8 +390,6 @@ public class AbstractGenerator {
 
         properties.getMap().forEach((key, o) -> {
             String ref = ((Map)o).get("$ref").toString();
-            System.out.println(ref);
-            System.out.println(key);
             String className = classSimple(ref);
             result.put(className, key);
         });
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java
index 3e74e3a0..1356f269 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/CamelMetadataGenerator.java
@@ -126,8 +126,9 @@ public final class CamelMetadataGenerator extends AbstractGenerator {
             if (s.startsWith("org.apache.camel.model.") && s.endsWith("Definition")) {
                 String name = classSimple(s);
                 JsonObject obj = getDefinition(definitions, s);
-                JsonObject props = obj.containsKey("oneOf") ? obj.getJsonArray("oneOf").getJsonObject(1).getJsonObject("properties") : obj.getJsonObject("properties");
-                classProps.put(name, props);
+//                JsonObject props = obj.containsKey("oneOf") ? obj.getJsonArray("oneOf").getJsonObject(1).getJsonObject("properties") : obj.getJsonObject("properties");
+                Map<String, JsonObject> properties = getClassProperties(obj);
+                classProps.put(name, JsonObject.mapFrom(properties));
             }
         });
 
@@ -149,7 +150,6 @@ public final class CamelMetadataGenerator extends AbstractGenerator {
         code.append(String.format("export const %s: ElementMeta[] = [\n", className));
         classProps.entrySet().stream().filter(entry -> {
             if (entry.getValue() == null) {
-                System.out.println(entry.getKey());
                 return false;
             } else {
                 return true;
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KaravanGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KaravanGenerator.java
index e48b32d8..c3950392 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KaravanGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/KaravanGenerator.java
@@ -30,7 +30,7 @@ public final class KaravanGenerator {
         CamelDefinitionGenerator.generate();
         CamelDefinitionApiGenerator.generate();
         CamelDefinitionYamlStepGenerator.generate();
-//        CamelMetadataGenerator.generate();
+        CamelMetadataGenerator.generate();
         KameletGenerator.generate(paths);
         CamelComponentsGenerator.generate(paths);
         System.exit(0);