You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2024/04/26 09:14:20 UTC

(camel) branch yaml-property created (now 251257b4730)

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

davsclaus pushed a change to branch yaml-property
in repository https://gitbox.apache.org/repos/asf/camel.git


      at 251257b4730 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.

This branch includes the following new commits:

     new 251257b4730 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.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(camel) 01/01: 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.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 251257b4730678e991d545ed17f8267dc736adc0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Apr 26 11:14:06 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.
---
 .../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 """