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 6b33e6e75b1 CAMEL-20698: YAML and XML DSL - Remove array of property 
in favour of using properties to make it consistent and only one-way of setting 
properties on beans. (#13959)
6b33e6e75b1 is described below

commit 6b33e6e75b1e9939b007060cc0877bc765cd350a
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Apr 26 12:05:20 2024 +0200

    CAMEL-20698: YAML and XML DSL - Remove array of property in favour of using 
properties to make it consistent and only one-way of setting properties on 
beans. (#13959)
---
 .../apache/camel/catalog/models/templateBean.json  |  5 +--
 .../camel/catalog/models/templatedRouteBean.json   |  5 +--
 .../apache/camel/catalog/schemas/camel-spring.xsd  |  1 -
 .../SpringRouteTemplateLocalBeanTest.xml           |  2 +-
 .../routebuilder/SpringTemplatedRouteTest.xml      |  4 +-
 .../org/apache/camel/model/templateBean.json       |  5 +--
 .../org/apache/camel/model/templatedRouteBean.json |  5 +--
 .../apache/camel/model/BeanFactoryDefinition.java  |  2 +-
 .../java/org/apache/camel/xml/in/ModelParser.java  |  1 -
 .../java/org/apache/camel/xml/out/ModelWriter.java |  1 -
 .../src/test/resources/barTemplatedRoute.xml       |  4 +-
 .../singleTemplatedRouteNoNamespace.xml            |  4 +-
 .../org/apache/camel/yaml/out/ModelWriter.java     |  1 -
 .../ROOT/pages/camel-4x-upgrade-guide-4_6.adoc     | 29 ++++++++++++++
 .../RouteTemplateBeanDefinitionDeserializer.java   |  1 -
 .../TemplatedRouteBeanDefinitionDeserializer.java  |  1 -
 .../generated/resources/schema/camelYamlDsl.json   | 12 ------
 .../org/apache/camel/dsl/yaml/KameletTest.groovy   |  5 +--
 .../apache/camel/dsl/yaml/RouteTemplateTest.groovy | 45 ----------------------
 19 files changed, 50 insertions(+), 83 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/templateBean.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/templateBean.json
index b40f995763d..ef188dacbfe 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/templateBean.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/templateBean.json
@@ -15,8 +15,7 @@
     "name": { "index": 0, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": true, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Bean 
name" },
     "type": { "index": 1, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": true, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "What 
type to use for creating the bean (FQN classname). Can be prefixed with: #class 
or #type #class or #type then the bean is created via the fully qualified 
classname, such as #class:com.foo.MyBean" },
     "scriptLanguage": { "index": 2, "kind": "attribute", "displayName": 
"Script Language", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "The script language to use 
when using inlined script for creating the bean, such as groovy, java, 
javascript etc." },
-    "property": { "index": 3, "kind": "element", "displayName": "Property", 
"group": "common", "required": false, "type": "array", "javaType": 
"java.util.List<org.apache.camel.model.PropertyDefinition>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
-    "properties": { "index": 4, "kind": "element", "displayName": 
"Properties", "group": "common", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
-    "script": { "index": 5, "kind": "element", "displayName": "Script", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "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 ext [...]
+    "properties": { "index": 3, "kind": "element", "displayName": 
"Properties", "group": "common", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
+    "script": { "index": 4, "kind": "element", "displayName": "Script", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "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 ext [...]
   }
 }
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/templatedRouteBean.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/templatedRouteBean.json
index 1061bae313e..719fb8b9d96 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/templatedRouteBean.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/templatedRouteBean.json
@@ -15,8 +15,7 @@
     "name": { "index": 0, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": true, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Bean 
name" },
     "type": { "index": 1, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": true, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "What 
type to use for creating the bean (FQN classname). Can be prefixed with: #class 
or #type #class or #type then the bean is created via the fully qualified 
classname, such as #class:com.foo.MyBean" },
     "scriptLanguage": { "index": 2, "kind": "attribute", "displayName": 
"Script Language", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "The script language to use 
when using inlined script for creating the bean, such as groovy, java, 
javascript etc." },
-    "property": { "index": 3, "kind": "element", "displayName": "Property", 
"group": "common", "required": false, "type": "array", "javaType": 
"java.util.List<org.apache.camel.model.PropertyDefinition>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
-    "properties": { "index": 4, "kind": "element", "displayName": 
"Properties", "group": "common", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
-    "script": { "index": 5, "kind": "element", "displayName": "Script", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "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 ext [...]
+    "properties": { "index": 3, "kind": "element", "displayName": 
"Properties", "group": "common", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
+    "script": { "index": 4, "kind": "element", "displayName": "Script", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "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 ext [...]
   }
 }
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
index f730fa33ee4..1751619fc37 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
@@ -4018,7 +4018,6 @@ implementation. Default value: Singleton
   </xs:complexType>
   <xs:complexType abstract="true" name="beanFactoryDefinition">
     <xs:sequence>
-      <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:property"/>
       <xs:element minOccurs="0" name="properties" 
type="tns:beanPropertiesDefinition">
         <xs:annotation>
           <xs:documentation xml:lang="en">
diff --git 
a/components/camel-spring-xml/src/test/resources/org/apache/camel/spring/routebuilder/SpringRouteTemplateLocalBeanTest.xml
 
b/components/camel-spring-xml/src/test/resources/org/apache/camel/spring/routebuilder/SpringRouteTemplateLocalBeanTest.xml
index d1e56089433..3f0ff28b7cb 100644
--- 
a/components/camel-spring-xml/src/test/resources/org/apache/camel/spring/routebuilder/SpringRouteTemplateLocalBeanTest.xml
+++ 
b/components/camel-spring-xml/src/test/resources/org/apache/camel/spring/routebuilder/SpringRouteTemplateLocalBeanTest.xml
@@ -32,8 +32,8 @@
             <templateParameter name="greeting"/>
             <templateParameter name="suffix"/>
             <templateBean name="myBean" 
type="#class:org.apache.camel.spring.routebuilder.MyLocalBean">
-                <property key="prefix" value="{{greeting}}"/>
                 <properties>
+                    <property key="prefix" value="{{greeting}}"/>
                     <property key="suffix" value="{{suffix}}"/>
                 </properties>
             </templateBean>
diff --git 
a/components/camel-spring-xml/src/test/resources/org/apache/camel/spring/routebuilder/SpringTemplatedRouteTest.xml
 
b/components/camel-spring-xml/src/test/resources/org/apache/camel/spring/routebuilder/SpringTemplatedRouteTest.xml
index 610809fab3f..bec54119892 100644
--- 
a/components/camel-spring-xml/src/test/resources/org/apache/camel/spring/routebuilder/SpringTemplatedRouteTest.xml
+++ 
b/components/camel-spring-xml/src/test/resources/org/apache/camel/spring/routebuilder/SpringTemplatedRouteTest.xml
@@ -38,7 +38,9 @@
             <parameter name="foo" value="fooVal"/>
             <parameter name="bar" value="barVal"/>
             <bean name="myBean" 
type="#class:org.apache.camel.spring.routebuilder.SpringTemplatedRouteTest$MySpecialBean">
-                <property key="name" value="John"/>
+                <properties>
+                    <property key="name" value="John"/>
+                </properties>
             </bean>
             <bean name="myScriptBean" 
type="org.apache.camel.spring.routebuilder.SpringTemplatedRouteTest$MyScriptBean"
                   scriptLanguage="bean">
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templateBean.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templateBean.json
index b40f995763d..ef188dacbfe 100644
--- 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templateBean.json
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templateBean.json
@@ -15,8 +15,7 @@
     "name": { "index": 0, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": true, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Bean 
name" },
     "type": { "index": 1, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": true, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "What 
type to use for creating the bean (FQN classname). Can be prefixed with: #class 
or #type #class or #type then the bean is created via the fully qualified 
classname, such as #class:com.foo.MyBean" },
     "scriptLanguage": { "index": 2, "kind": "attribute", "displayName": 
"Script Language", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "The script language to use 
when using inlined script for creating the bean, such as groovy, java, 
javascript etc." },
-    "property": { "index": 3, "kind": "element", "displayName": "Property", 
"group": "common", "required": false, "type": "array", "javaType": 
"java.util.List<org.apache.camel.model.PropertyDefinition>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
-    "properties": { "index": 4, "kind": "element", "displayName": 
"Properties", "group": "common", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
-    "script": { "index": 5, "kind": "element", "displayName": "Script", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "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 ext [...]
+    "properties": { "index": 3, "kind": "element", "displayName": 
"Properties", "group": "common", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
+    "script": { "index": 4, "kind": "element", "displayName": "Script", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "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 ext [...]
   }
 }
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templatedRouteBean.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templatedRouteBean.json
index 1061bae313e..719fb8b9d96 100644
--- 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templatedRouteBean.json
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templatedRouteBean.json
@@ -15,8 +15,7 @@
     "name": { "index": 0, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": true, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Bean 
name" },
     "type": { "index": 1, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": true, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "What 
type to use for creating the bean (FQN classname). Can be prefixed with: #class 
or #type #class or #type then the bean is created via the fully qualified 
classname, such as #class:com.foo.MyBean" },
     "scriptLanguage": { "index": 2, "kind": "attribute", "displayName": 
"Script Language", "group": "advanced", "label": "advanced", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "The script language to use 
when using inlined script for creating the bean, such as groovy, java, 
javascript etc." },
-    "property": { "index": 3, "kind": "element", "displayName": "Property", 
"group": "common", "required": false, "type": "array", "javaType": 
"java.util.List<org.apache.camel.model.PropertyDefinition>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
-    "properties": { "index": 4, "kind": "element", "displayName": 
"Properties", "group": "common", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
-    "script": { "index": 5, "kind": "element", "displayName": "Script", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "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 ext [...]
+    "properties": { "index": 3, "kind": "element", "displayName": 
"Properties", "group": "common", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": 
false, "autowired": false, "secret": false, "description": "Optional properties 
to set on the created local bean" },
+    "script": { "index": 4, "kind": "element", "displayName": "Script", 
"group": "advanced", "label": "advanced", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "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 ext [...]
   }
 }
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/BeanFactoryDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/BeanFactoryDefinition.java
index 372f51d9ff3..af8f238b0a6 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/BeanFactoryDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/BeanFactoryDefinition.java
@@ -57,7 +57,7 @@ public abstract class BeanFactoryDefinition<
     @XmlAttribute
     @Metadata(label = "advanced")
     private String scriptLanguage;
-    @XmlElement(name = "property")
+    @XmlTransient
     private List<PropertyDefinition> propertyDefinitions;
     @XmlElement(name = "properties")
     @XmlJavaTypeAdapter(BeanPropertiesAdapter.class)
diff --git 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
index 616c5977029..a2f170324f0 100644
--- 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
+++ 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
@@ -908,7 +908,6 @@ public class ModelParser extends BaseParser {
     protected <T extends BeanFactoryDefinition> ElementHandler<T> 
beanFactoryDefinitionElementHandler() {
         return (def, key) -> switch (key) {
             case "properties": def.setProperties(new 
BeanPropertiesAdapter().unmarshal(doParseBeanPropertiesDefinition())); yield 
true;
-            case "property": doAdd(doParsePropertyDefinition(), 
def.getPropertyDefinitions(), def::setPropertyDefinitions); yield true;
             case "script": def.setScript(doParseText()); yield true;
             default: yield false;
         };
diff --git 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
index ff50037a38f..ffd4303fc02 100644
--- 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
+++ 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
@@ -812,7 +812,6 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("type", def.getType());
     }
     protected void 
doWriteBeanFactoryDefinitionElements(BeanFactoryDefinition<?, ?> def) throws 
IOException {
-        doWriteList(null, "property", def.getPropertyDefinitions(), 
this::doWritePropertyDefinition);
         doWriteElement("script", def.getScript(), this::doWriteString);
         doWriteElement("properties", new 
BeanPropertiesAdapter().marshal(def.getProperties()), 
this::doWriteBeanPropertiesDefinition);
     }
diff --git a/core/camel-xml-io/src/test/resources/barTemplatedRoute.xml 
b/core/camel-xml-io/src/test/resources/barTemplatedRoute.xml
index 94cc5871594..acc9d9f8e91 100644
--- a/core/camel-xml-io/src/test/resources/barTemplatedRoute.xml
+++ b/core/camel-xml-io/src/test/resources/barTemplatedRoute.xml
@@ -22,7 +22,9 @@
         <parameter name="foo" value="fooVal"/>
         <parameter name="bar" value="barVal"/>
         <bean name="myBean" 
type="#class:org.apache.camel.spring.routebuilder.SpringTemplatedRouteTest$MySpecialBean">
-            <property key="name" value="John"/>
+            <properties>
+                <property key="name" value="John"/>
+            </properties>
         </bean>
     </templatedRoute>
 </templatedRoutes>
\ No newline at end of file
diff --git 
a/core/camel-xml-io/src/test/resources/nonamespace/singleTemplatedRouteNoNamespace.xml
 
b/core/camel-xml-io/src/test/resources/nonamespace/singleTemplatedRouteNoNamespace.xml
index 962e326295f..eef30d23f9f 100644
--- 
a/core/camel-xml-io/src/test/resources/nonamespace/singleTemplatedRouteNoNamespace.xml
+++ 
b/core/camel-xml-io/src/test/resources/nonamespace/singleTemplatedRouteNoNamespace.xml
@@ -21,6 +21,8 @@
   <parameter name="foo" value="fooVal"/>
   <parameter name="bar" value="barVal"/>
   <bean name="myBean" 
type="#class:org.apache.camel.spring.routebuilder.SpringTemplatedRouteTest$MySpecialBean">
-    <property key="name" value="John"/>
+    <properties>
+      <property key="name" value="John"/>
+    </properties>
   </bean>
 </templatedRoute>
diff --git 
a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
 
b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
index a0f5f2bc190..b8697d7e9a4 100644
--- 
a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
+++ 
b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
@@ -812,7 +812,6 @@ public class ModelWriter extends BaseWriter {
         doWriteAttribute("type", def.getType());
     }
     protected void 
doWriteBeanFactoryDefinitionElements(BeanFactoryDefinition<?, ?> def) throws 
IOException {
-        doWriteList(null, "property", def.getPropertyDefinitions(), 
this::doWritePropertyDefinition);
         doWriteElement("script", def.getScript(), this::doWriteString);
         doWriteElement("properties", new 
BeanPropertiesAdapter().marshal(def.getProperties()), 
this::doWriteBeanPropertiesDefinition);
     }
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_6.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_6.adoc
index 7fe09fad11d..419a5676b77 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_6.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_6.adoc
@@ -15,6 +15,35 @@ then the variable is no longer set. Also, if the route is 
marked for rollback, o
 
 This is the same logic that the routing engine uses, whether to continue 
routing the `Exchange` or not.
 
+=== XML DSL
+
+When using XML DSL to define properties on `<bean>` then `<property>` must now 
be declared inside `<properties>`.
+
+=== YAML DSL
+
+When using YAML DSL to define properties on `bean` then `property` has been 
removed in favour of using `properties`.
+
+Before:
+[source,yaml]
+----
+    beans:
+      - name: "myProcessor"
+        type: "#class:com.foo.MyClass"
+        property:
+          - key: "payload"
+            value: "test-payload"
+----
+
+After:
+[source,yaml]
+----
+    beans:
+      - name: "myProcessor"
+        type: "#class:com.foo.MyClass"
+        properties:
+          payload: "test-payload"
+----
+
 === camel-as2
 
 The `camel-as2` component has upgraded HTTP Client 4.x to 5.x and because of 
that, there are some options that have changed.
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteTemplateBeanDefinitionDeserializer.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteTemplateBeanDefinitionDeserializer.java
index 43a8afc4551..aa63205a6f4 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteTemplateBeanDefinitionDeserializer.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteTemplateBeanDefinitionDeserializer.java
@@ -32,7 +32,6 @@ import org.apache.camel.spi.annotations.YamlType;
           properties = {
                   @YamlProperty(name = "name", type = "string", required = 
true),
                   @YamlProperty(name = "type", type = "string", required = 
true),
-                  @YamlProperty(name = "property", type = 
"array:org.apache.camel.model.PropertyDefinition"),
                   @YamlProperty(name = "properties", type = "object"),
                   @YamlProperty(name = "scriptLanguage", type = "string"),
                   @YamlProperty(name = "script", type = "string")
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TemplatedRouteBeanDefinitionDeserializer.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TemplatedRouteBeanDefinitionDeserializer.java
index bcba0ae8d4f..514febd4787 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TemplatedRouteBeanDefinitionDeserializer.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/TemplatedRouteBeanDefinitionDeserializer.java
@@ -32,7 +32,6 @@ import org.apache.camel.spi.annotations.YamlType;
           properties = {
                   @YamlProperty(name = "name", type = "string", required = 
true),
                   @YamlProperty(name = "type", type = "string", required = 
true),
-                  @YamlProperty(name = "property", type = 
"array:org.apache.camel.model.PropertyDefinition"),
                   @YamlProperty(name = "properties", type = "object"),
                   @YamlProperty(name = "scriptLanguage", type = "string"),
                   @YamlProperty(name = "script", type = "string")
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
index f5c6f5ef94c..e25e27c2345 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
@@ -5197,12 +5197,6 @@
           "properties" : {
             "type" : "object"
           },
-          "property" : {
-            "type" : "array",
-            "items" : {
-              "$ref" : 
"#/items/definitions/org.apache.camel.model.PropertyDefinition"
-            }
-          },
           "script" : {
             "type" : "string"
           },
@@ -6663,12 +6657,6 @@
           "properties" : {
             "type" : "object"
           },
-          "property" : {
-            "type" : "array",
-            "items" : {
-              "$ref" : 
"#/items/definitions/org.apache.camel.model.PropertyDefinition"
-            }
-          },
           "script" : {
             "type" : "string"
           },
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletTest.groovy
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletTest.groovy
index a8724535262..971be12b5ed 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletTest.groovy
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletTest.groovy
@@ -264,9 +264,8 @@ class KameletTest extends YamlTestSupport {
                     beans:
                       - name: "myProcessor"
                         type: "#class:${MySetBody.class.name}"
-                        property:
-                          - key: "payload"
-                            value: "test-payload"
+                        properties:
+                          payload: "test-payload"
                     from:
                       uri: "kamelet:source"
                       steps:
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy
index 907d2ae049b..b471381aeb3 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteTemplateTest.groovy
@@ -181,51 +181,6 @@ class RouteTemplateTest extends YamlTestSupport {
         MockEndpoint.assertIsSatisfied(context)
     }
 
-    def "create template with bean and property"() {
-        setup:
-        loadRoutes """                
-                - routeTemplate:
-                    id: "myTemplate"
-                    beans:
-                      - name: "myProcessor"
-                        type: "#class:${MySetBody.class.name}"
-                        property:
-                          - key: "payload"
-                            value: "test-payload"
-                    from:
-                      uri: "direct:{{directName}}"
-                      steps:
-                        - process:
-                            ref: "{{myProcessor}}"
-                - from:
-                    uri: "direct:start"
-                    steps:
-                      - to: "direct:myId"
-                      - to: "mock:result"
-            """
-
-        withMock('mock:result') {
-            expectedMessageCount 1
-            expectedBodiesReceived 'test-payload'
-        }
-        when:
-        context.addRouteFromTemplate('myId', 'myTemplate', ['directName': 
'myId'])
-        context.start()
-
-        withTemplate {
-            to('direct:start').withBody('hello').send()
-        }
-        then:
-        context.routeTemplateDefinitions.size() == 1
-
-        with(context.routeTemplateDefinitions[0], RouteTemplateDefinition) {
-            id == 'myTemplate'
-            templateBeans.size() == 1
-        }
-
-        MockEndpoint.assertIsSatisfied(context)
-    }
-
     def "create template with properties"() {
         when:
         loadRoutes """

Reply via email to