This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 96aa85ccfb1 CAMEL-20799: camel-catalog - Model schema for setHeaders 
and setVariables does not include array of element
96aa85ccfb1 is described below

commit 96aa85ccfb119cd77d0f3edae9d273bc17a6a757
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed May 29 11:00:20 2024 +0200

    CAMEL-20799: camel-catalog - Model schema for setHeaders and setVariables 
does not include array of element
---
 .../apache/camel/catalog/models/setHeaders.json    |  3 +-
 .../apache/camel/catalog/models/setVariables.json  |  3 +-
 .../org/apache/camel/model/setHeaders.json         |  3 +-
 .../org/apache/camel/model/setVariables.json       |  3 +-
 .../camel/maven/packaging/SchemaGeneratorMojo.java | 53 ++++++++++++++++++++++
 5 files changed, 61 insertions(+), 4 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setHeaders.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setHeaders.json
index b9413382276..8ec35e4365a 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setHeaders.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setHeaders.json
@@ -14,6 +14,7 @@
   "properties": {
     "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the id of this node" },
     "description": { "index": 1, "kind": "attribute", "displayName": 
"Description", "group": "common", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Sets the description of this node" },
-    "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "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." }
+    "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "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." },
+    "headers": { "index": 3, "kind": "element", "displayName": "Headers", 
"group": "common", "required": true, "type": "array", "javaType": 
"java.util.List<org.apache.camel.model.SetHeaderDefinition>", "oneOf": [ 
"setHeader" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Contains the headers to be set" }
   }
 }
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setVariables.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setVariables.json
index e574b6e13ac..7d678beeef0 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setVariables.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setVariables.json
@@ -14,6 +14,7 @@
   "properties": {
     "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the id of this node" },
     "description": { "index": 1, "kind": "attribute", "displayName": 
"Description", "group": "common", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Sets the description of this node" },
-    "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "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." }
+    "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "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." },
+    "variables": { "index": 3, "kind": "element", "displayName": "Variables", 
"group": "common", "required": true, "type": "array", "javaType": 
"java.util.List<org.apache.camel.model.SetVariableDefinition>", "oneOf": [ 
"setVariable" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Contains the variables to be set" }
   }
 }
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setHeaders.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setHeaders.json
index b9413382276..8ec35e4365a 100644
--- 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setHeaders.json
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setHeaders.json
@@ -14,6 +14,7 @@
   "properties": {
     "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the id of this node" },
     "description": { "index": 1, "kind": "attribute", "displayName": 
"Description", "group": "common", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Sets the description of this node" },
-    "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "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." }
+    "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "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." },
+    "headers": { "index": 3, "kind": "element", "displayName": "Headers", 
"group": "common", "required": true, "type": "array", "javaType": 
"java.util.List<org.apache.camel.model.SetHeaderDefinition>", "oneOf": [ 
"setHeader" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Contains the headers to be set" }
   }
 }
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setVariables.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setVariables.json
index e574b6e13ac..7d678beeef0 100644
--- 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setVariables.json
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/setVariables.json
@@ -14,6 +14,7 @@
   "properties": {
     "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the id of this node" },
     "description": { "index": 1, "kind": "attribute", "displayName": 
"Description", "group": "common", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "Sets the description of this node" },
-    "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "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." }
+    "disabled": { "index": 2, "kind": "attribute", "displayName": "Disabled", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, 
"secret": false, "defaultValue": false, "description": "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." },
+    "variables": { "index": 3, "kind": "element", "displayName": "Variables", 
"group": "common", "required": true, "type": "array", "javaType": 
"java.util.List<org.apache.camel.model.SetVariableDefinition>", "oneOf": [ 
"setVariable" ], "deprecated": false, "autowired": false, "secret": false, 
"description": "Contains the variables to be set" }
   }
 }
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
index 56dfa613657..30883ef8ba4 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
@@ -444,6 +444,9 @@ public class SchemaGeneratorMojo extends 
AbstractGeneratorMojo {
                     processRefExpression(originalClassType, classElement, 
elementRef, fieldElement, fieldName, eipOptions,
                             prefix);
 
+                    // special for setHeaders/setVariables
+                    processSetHeadersOrSetVariables(modelName, 
originalClassType, elementRef, fieldElement, fieldName,
+                            eipOptions, prefix);
                 }
             }
 
@@ -981,6 +984,56 @@ public class SchemaGeneratorMojo extends 
AbstractGeneratorMojo {
         }
     }
 
+    /**
+     * Special for processing an SetHeaders/SetVariables
+     */
+    private void processSetHeadersOrSetVariables(
+            String modelName,
+            Class<?> originalClassType,
+            XmlElementRef elementRef,
+            Field fieldElement, String fieldName,
+            Set<EipOptionModel> eipOptions,
+            String prefix) {
+
+        if (!"setHeaders".equals(modelName) && 
!"setVariables".equals(modelName)) {
+            // only for these two EIPs
+            return;
+        }
+
+        if ("headers".equals(fieldName) || "variables".equals(fieldName)) {
+            String name = fetchName(elementRef.name(), fieldName, prefix);
+            String typeName = 
getTypeName(GenericsUtil.resolveType(originalClassType, fieldElement));
+
+            Set<String> oneOfTypes;
+            if ("headers".equals(fieldName)) {
+                oneOfTypes = Set.of("setHeader");
+            } else {
+                oneOfTypes = Set.of("setVariable");
+            }
+            String displayName = null;
+            Metadata metadata = fieldElement.getAnnotation(Metadata.class);
+            if (metadata != null) {
+                displayName = metadata.displayName();
+            }
+            boolean deprecated = fieldElement.getAnnotation(Deprecated.class) 
!= null;
+            String deprecationNote = null;
+            if (metadata != null) {
+                deprecationNote = metadata.deprecationNote();
+            }
+            String label = null;
+            if (metadata != null) {
+                label = metadata.label();
+            }
+
+            String kind = "element";
+            EipOptionModel ep
+                    = createOption(name, displayName, kind, typeName, true, 
"", label,
+                            "Contains the " + fieldName + " to be set", 
deprecated, deprecationNote,
+                            false, null, oneOfTypes, false, false);
+            eipOptions.add(ep);
+        }
+    }
+
     /**
      * Special for processing an @XmlElementRef outputs field
      */

Reply via email to