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

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

commit 9837e499b53970e9a52cffb5c038127bf1c867a1
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Jul 8 09:02:36 2021 +0200

    CAMEL-16757: camel-core - Global error handling, interceptor in all DSL
---
 .../main/java/org/apache/camel/CamelContext.java   |   2 +-
 ...uilder.java => RouteConfigurationsBuilder.java} |  11 +-
 .../camel/impl/engine/AbstractCamelContext.java    |   6 +-
 .../org/apache/camel/impl/DefaultCamelContext.java |  14 +--
 .../java/org/apache/camel/impl/DefaultModel.java   |  10 +-
 .../camel/impl/lw/LightweightCamelContext.java     |  18 ++--
 .../impl/lw/LightweightRuntimeCamelContext.java    |   4 +-
 .../services/org/apache/camel/model.properties     |   5 +-
 .../resources/org/apache/camel/model/jaxb.index    |   4 +-
 ...sConfiguration.json => routeConfiguration.json} |   8 +-
 .../apache/camel/model/routeConfigurations.json    |  16 +++
 .../apache/camel/model/routesConfigurations.json   |  17 ---
 .../apache/camel/model/templateBeanFactory.json    |  17 ---
 .../org/apache/camel/builder/RouteBuilder.java     |  45 +++-----
 .../camel/builder/RouteConfigurationBuilder.java   |  81 +++++++++++++++
 .../camel/builder/RoutesConfigurationsBuilder.java |  32 ------
 .../main/java/org/apache/camel/model/Model.java    |   6 +-
 ...tion.java => RouteConfigurationDefinition.java} |   8 +-
 .../camel/model/RouteConfigurationsDefinition.java | 114 +++++++++++++++++++++
 .../model/RoutesConfigurationsDefinition.java      |  77 --------------
 .../org/apache/camel/model/RoutesDefinition.java   |   4 +-
 .../java/org/apache/camel/ContextTestSupport.java  |  13 ++-
 .../model/RoutesConfigurationBuilderTest.java      |  11 +-
 ...outesConfigurationMultipleRouteBuilderTest.java |  10 +-
 .../camel/model/RoutesConfigurationTest.java       |  34 +++---
 .../org/apache/camel/main/RoutesConfigurer.java    |   6 +-
 .../java/org/apache/camel/xml/in/ModelParser.java  |  94 ++++++++---------
 .../camel/dsl/xml/io/XmlRoutesBuilderLoader.java   |  12 +--
 .../camel-yaml-dsl-deserializers/pom.xml           |   3 +-
 .../dsl/yaml/deserializers/ModelDeserializers.java |  44 --------
 .../deserializers/ModelDeserializersResolver.java  |   2 -
 .../dsl/yaml/deserializers/CustomResolver.java     |   6 +-
 ... RouteConfigurationDefinitionDeserializer.java} |  18 ++--
 .../src/generated/resources/camel-yaml-dsl.json    |  89 +++++++---------
 .../camel/dsl/yaml/YamlRoutesBuilderLoader.java    |  12 +--
 ...onTest.groovy => RouteConfigurationTest.groovy} |  10 +-
 .../packaging/ModelXmlParserGeneratorMojo.java     |   6 +-
 37 files changed, 439 insertions(+), 430 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java 
b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
index 7a82c74..de99d49 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CamelContext.java
@@ -578,7 +578,7 @@ public interface CamelContext extends 
CamelContextLifecycle, RuntimeConfiguratio
      * @param  builder   the builder which has routes configurations
      * @throws Exception if the routes configurations could not be created for 
whatever reason
      */
-    void addRoutesConfigurations(RoutesConfigurationsBuilder builder) throws 
Exception;
+    void addRoutesConfigurations(RouteConfigurationsBuilder builder) throws 
Exception;
 
     /**
      * Removes the given route (the route <b>must</b> be stopped before it can 
be removed).
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/RoutesConfigurationsBuilder.java
 b/core/camel-api/src/main/java/org/apache/camel/RouteConfigurationsBuilder.java
similarity index 65%
rename from 
core/camel-api/src/main/java/org/apache/camel/RoutesConfigurationsBuilder.java
rename to 
core/camel-api/src/main/java/org/apache/camel/RouteConfigurationsBuilder.java
index 0ff22ed..d9e95d5 100644
--- 
a/core/camel-api/src/main/java/org/apache/camel/RoutesConfigurationsBuilder.java
+++ 
b/core/camel-api/src/main/java/org/apache/camel/RouteConfigurationsBuilder.java
@@ -17,17 +17,16 @@
 package org.apache.camel;
 
 /**
- * A routes configurations builder is capable of building routes 
configurations (global configuration for all routes)
- * using the builder and model classes.
+ * A route configurations builder is capable of building route configurations 
using the builder and model classes.
  */
-public interface RoutesConfigurationsBuilder {
+public interface RouteConfigurationsBuilder {
 
     /**
-     * Adds the routes configurations from this Routes Configurations Builder 
to the CamelContext.
+     * Adds the route configurations from this builder to the CamelContext.
      *
      * @param  context   the Camel context
-     * @throws Exception is thrown if initialization of routes configurations 
failed
+     * @throws Exception is thrown if initialization of route configurations 
failed
      */
-    void addRoutesConfigurationsToCamelContext(CamelContext context) throws 
Exception;
+    void addRouteConfigurationsToCamelContext(CamelContext context) throws 
Exception;
 
 }
diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
index 805a238..0a73ae4 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/AbstractCamelContext.java
@@ -64,8 +64,8 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.Route;
 import org.apache.camel.RouteAware;
+import org.apache.camel.RouteConfigurationsBuilder;
 import org.apache.camel.RoutesBuilder;
-import org.apache.camel.RoutesConfigurationsBuilder;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
@@ -1153,11 +1153,11 @@ public abstract class AbstractCamelContext extends 
BaseService
     }
 
     @Override
-    public void addRoutesConfigurations(RoutesConfigurationsBuilder builder) 
throws Exception {
+    public void addRoutesConfigurations(RouteConfigurationsBuilder builder) 
throws Exception {
         try (LifecycleHelper helper = new LifecycleHelper()) {
             build();
             LOG.debug("Adding route configurations from builder: {}", builder);
-            
builder.addRoutesConfigurationsToCamelContext(AbstractCamelContext.this);
+            
builder.addRouteConfigurationsToCamelContext(AbstractCamelContext.this);
         }
     }
 
diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index 896a753..69cd55b 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -54,11 +54,11 @@ import org.apache.camel.model.ModelLifecycleStrategy;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.model.Resilience4jConfigurationDefinition;
+import org.apache.camel.model.RouteConfigurationDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteDefinitionHelper;
 import org.apache.camel.model.RouteTemplateDefinition;
 import org.apache.camel.model.RouteTemplatesDefinition;
-import org.apache.camel.model.RoutesConfigurationDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
 import org.apache.camel.model.language.ExpressionDefinition;
@@ -288,24 +288,24 @@ public class DefaultCamelContext extends 
SimpleCamelContext implements ModelCame
     }
 
     @Override
-    public void addRoutesConfiguration(RoutesConfigurationDefinition 
routesConfiguration) {
+    public void addRouteConfiguration(RouteConfigurationDefinition 
routesConfiguration) {
         if (model == null && isLightweight()) {
             throw new IllegalStateException("Access to model not supported in 
lightweight mode");
         }
-        model.addRoutesConfiguration(routesConfiguration);
+        model.addRouteConfiguration(routesConfiguration);
     }
 
     @Override
-    public void addRoutesConfigurations(List<RoutesConfigurationDefinition> 
routesConfigurations) {
+    public void addRouteConfigurations(List<RouteConfigurationDefinition> 
routesConfigurations) {
         if (model == null && isLightweight()) {
             throw new IllegalStateException("Access to model not supported in 
lightweight mode");
         }
-        model.addRoutesConfigurations(routesConfigurations);
+        model.addRouteConfigurations(routesConfigurations);
     }
 
     @Override
-    public List<RoutesConfigurationDefinition> 
getRoutesConfigurationDefinition() {
-        return model.getRoutesConfigurationDefinition();
+    public List<RouteConfigurationDefinition> 
getRouteConfigurationDefinitions() {
+        return model.getRouteConfigurationDefinitions();
     }
 
     @Override
diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
index e70d4ea..cc5db4c 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java
@@ -46,13 +46,13 @@ import org.apache.camel.model.ModelLifecycleStrategy;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ProcessorDefinitionHelper;
 import org.apache.camel.model.Resilience4jConfigurationDefinition;
+import org.apache.camel.model.RouteConfigurationDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteDefinitionHelper;
 import org.apache.camel.model.RouteFilters;
 import org.apache.camel.model.RouteTemplateBeanDefinition;
 import org.apache.camel.model.RouteTemplateDefinition;
 import org.apache.camel.model.RouteTemplateParameterDefinition;
-import org.apache.camel.model.RoutesConfigurationDefinition;
 import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.transformer.TransformerDefinition;
@@ -80,7 +80,7 @@ public class DefaultModel implements Model {
 
     private ModelReifierFactory modelReifierFactory = new 
DefaultModelReifierFactory();
     private final List<ModelLifecycleStrategy> modelLifecycleStrategies = new 
ArrayList<>();
-    private final List<RoutesConfigurationDefinition> routesConfigurations = 
new ArrayList<>();
+    private final List<RouteConfigurationDefinition> routesConfigurations = 
new ArrayList<>();
     private final List<RouteDefinition> routeDefinitions = new ArrayList<>();
     private final List<RouteTemplateDefinition> routeTemplateDefinitions = new 
ArrayList<>();
     private final List<RestDefinition> restDefinitions = new ArrayList<>();
@@ -116,7 +116,7 @@ public class DefaultModel implements Model {
     }
 
     @Override
-    public void addRoutesConfiguration(RoutesConfigurationDefinition 
routesConfiguration) {
+    public void addRouteConfiguration(RouteConfigurationDefinition 
routesConfiguration) {
         if (routesConfiguration == null) {
             return;
         }
@@ -124,7 +124,7 @@ public class DefaultModel implements Model {
     }
 
     @Override
-    public void addRoutesConfigurations(List<RoutesConfigurationDefinition> 
routesConfigurations) {
+    public void addRouteConfigurations(List<RouteConfigurationDefinition> 
routesConfigurations) {
         if (routesConfigurations == null || routesConfigurations.isEmpty()) {
             return;
         }
@@ -132,7 +132,7 @@ public class DefaultModel implements Model {
     }
 
     @Override
-    public List<RoutesConfigurationDefinition> 
getRoutesConfigurationDefinition() {
+    public List<RouteConfigurationDefinition> 
getRouteConfigurationDefinitions() {
         return routesConfigurations;
     }
 
diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
index 8701f68..0e5f8bb 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightCamelContext.java
@@ -41,9 +41,9 @@ import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.Route;
+import org.apache.camel.RouteConfigurationsBuilder;
 import org.apache.camel.RouteTemplateContext;
 import org.apache.camel.RoutesBuilder;
-import org.apache.camel.RoutesConfigurationsBuilder;
 import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
 import org.apache.camel.ShutdownRoute;
@@ -62,9 +62,9 @@ import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.ModelLifecycleStrategy;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.Resilience4jConfigurationDefinition;
+import org.apache.camel.model.RouteConfigurationDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteTemplateDefinition;
-import org.apache.camel.model.RoutesConfigurationDefinition;
 import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.model.rest.RestDefinition;
@@ -554,7 +554,7 @@ public class LightweightCamelContext implements 
ExtendedCamelContext, CatalogCam
     }
 
     @Override
-    public void addRoutesConfigurations(RoutesConfigurationsBuilder builder) 
throws Exception {
+    public void addRoutesConfigurations(RouteConfigurationsBuilder builder) 
throws Exception {
         delegate.addRoutesConfigurations(builder);
     }
 
@@ -1694,18 +1694,18 @@ public class LightweightCamelContext implements 
ExtendedCamelContext, CatalogCam
     }
 
     @Override
-    public void addRoutesConfiguration(RoutesConfigurationDefinition 
routesConfiguration) {
-        getModelCamelContext().addRoutesConfiguration(routesConfiguration);
+    public void addRouteConfiguration(RouteConfigurationDefinition 
routesConfiguration) {
+        getModelCamelContext().addRouteConfiguration(routesConfiguration);
     }
 
     @Override
-    public void addRoutesConfigurations(List<RoutesConfigurationDefinition> 
routesConfigurations) {
-        getModelCamelContext().addRoutesConfigurations(routesConfigurations);
+    public void addRouteConfigurations(List<RouteConfigurationDefinition> 
routesConfigurations) {
+        getModelCamelContext().addRouteConfigurations(routesConfigurations);
     }
 
     @Override
-    public List<RoutesConfigurationDefinition> 
getRoutesConfigurationDefinition() {
-        return getModelCamelContext().getRoutesConfigurationDefinition();
+    public List<RouteConfigurationDefinition> 
getRouteConfigurationDefinitions() {
+        return getModelCamelContext().getRouteConfigurationDefinitions();
     }
 
     @Override
diff --git 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
index d7351ee..b30d8af 100644
--- 
a/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
+++ 
b/core/camel-core-engine/src/main/java/org/apache/camel/impl/lw/LightweightRuntimeCamelContext.java
@@ -49,9 +49,9 @@ import org.apache.camel.Processor;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.Route;
+import org.apache.camel.RouteConfigurationsBuilder;
 import org.apache.camel.RouteTemplateContext;
 import org.apache.camel.RoutesBuilder;
-import org.apache.camel.RoutesConfigurationsBuilder;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.Service;
 import org.apache.camel.ServiceStatus;
@@ -1864,7 +1864,7 @@ public class LightweightRuntimeCamelContext implements 
ExtendedCamelContext, Cat
     }
 
     @Override
-    public void addRoutesConfigurations(RoutesConfigurationsBuilder builder) 
throws Exception {
+    public void addRoutesConfigurations(RouteConfigurationsBuilder builder) 
throws Exception {
         throw new UnsupportedOperationException();
     }
 
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
 
b/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
index 9a55b3e..9a05154 100644
--- 
a/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
@@ -137,13 +137,13 @@ rollback
 roundRobin
 route
 routeBuilder
+routeConfiguration
+routeConfigurations
 routeContextRef
 routeTemplate
 routeTemplateContextRef
 routeTemplates
 routes
-routesConfiguration
-routesConfigurations
 routingSlip
 rss
 saga
@@ -176,7 +176,6 @@ stream-config
 syslog
 tarfile
 templateBean
-templateBeanFactory
 templateParameter
 templateScript
 threadPoolProfile
diff --git 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index
 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index
index 9ac2703..45b5e93 100644
--- 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index
+++ 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index
@@ -63,6 +63,8 @@ Resilience4jConfigurationDefinition
 RestContextRefDefinition
 RollbackDefinition
 RouteBuilderDefinition
+RouteConfigurationDefinition
+RouteConfigurationsDefinition
 RouteContextRefDefinition
 RouteDefinition
 RouteTemplateBeanDefinition
@@ -71,8 +73,6 @@ RouteTemplateDefinition
 RouteTemplateParameterDefinition
 RouteTemplateScriptDefinition
 RouteTemplatesDefinition
-RoutesConfigurationDefinition
-RoutesConfigurationsDefinition
 RoutesDefinition
 RoutingSlipDefinition
 SagaCompletionMode
diff --git 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/routesConfiguration.json
 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfiguration.json
similarity index 76%
rename from 
core/camel-core-model/src/generated/resources/org/apache/camel/model/routesConfiguration.json
rename to 
core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfiguration.json
index c4a5307..515c123 100644
--- 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/routesConfiguration.json
+++ 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfiguration.json
@@ -1,12 +1,12 @@
 {
   "model": {
     "kind": "model",
-    "name": "routesConfiguration",
-    "title": "Routes Configuration",
-    "description": "Global configuration for Camel routes",
+    "name": "routeConfiguration",
+    "title": "Route Configuration",
+    "description": "Reusable configuration for Camel route(s).",
     "deprecated": false,
     "label": "configuration",
-    "javaType": "org.apache.camel.model.RoutesConfigurationDefinition",
+    "javaType": "org.apache.camel.model.RouteConfigurationDefinition",
     "input": false,
     "output": false
   },
diff --git 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfigurations.json
 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfigurations.json
new file mode 100644
index 0000000..d9d128f
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfigurations.json
@@ -0,0 +1,16 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "routeConfigurations",
+    "title": "Route Configurations",
+    "description": "A series of route configurations",
+    "deprecated": false,
+    "label": "configuration",
+    "javaType": "org.apache.camel.model.RouteConfigurationsDefinition",
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    
+  }
+}
diff --git 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/routesConfigurations.json
 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/routesConfigurations.json
deleted file mode 100644
index 8bd9060..0000000
--- 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/routesConfigurations.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "model": {
-    "kind": "model",
-    "name": "routesConfigurations",
-    "title": "Routes Configurations",
-    "description": "A series of global configuration for Camel routes",
-    "deprecated": false,
-    "label": "configuration",
-    "javaType": "org.apache.camel.model.RoutesConfigurationsDefinition",
-    "input": false,
-    "output": false
-  },
-  "properties": {
-    "id": { "kind": "attribute", "displayName": "Id", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "Sets the id of this node" 
},
-    "description": { "kind": "element", "displayName": "Description", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.model.DescriptionDefinition", "deprecated": false, 
"autowired": false, "secret": false, "description": "Sets the description of 
this node" }
-  }
-}
diff --git 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/templateBeanFactory.json
 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/templateBeanFactory.json
deleted file mode 100644
index 538a54b..0000000
--- 
a/core/camel-core-model/src/generated/resources/org/apache/camel/model/templateBeanFactory.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "model": {
-    "kind": "model",
-    "name": "templateBeanFactory",
-    "title": "Template Bean Factory",
-    "description": "A route template bean factory (local bean)",
-    "deprecated": false,
-    "label": "configuration",
-    "javaType": "org.apache.camel.model.RouteTemplateBeanFactoryDefinition",
-    "input": false,
-    "output": false
-  },
-  "properties": {
-    "language": { "kind": "attribute", "displayName": "Language", "required": 
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "bean", 
"groovy", "joor", "language", "mvel", "ognl" ], "deprecated": false, 
"autowired": false, "secret": false, "description": "The language to use for 
creating the bean (such as groovy, joor)" },
-    "script": { "kind": "value", "displayName": "Script", "required": true, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "The script to execute that 
creates the bean. 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." }
-  }
-}
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
index 90ae70e..1b45106 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -29,19 +29,18 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.Ordered;
 import org.apache.camel.Route;
 import org.apache.camel.RoutesBuilder;
-import org.apache.camel.RoutesConfigurationsBuilder;
 import org.apache.camel.model.FromDefinition;
 import org.apache.camel.model.InterceptDefinition;
 import org.apache.camel.model.InterceptFromDefinition;
 import org.apache.camel.model.InterceptSendToEndpointDefinition;
 import org.apache.camel.model.Model;
-import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.OnCompletionDefinition;
 import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.RouteConfigurationDefinition;
+import org.apache.camel.model.RouteConfigurationsDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteTemplateDefinition;
 import org.apache.camel.model.RouteTemplatesDefinition;
-import org.apache.camel.model.RoutesConfigurationDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestConfigurationDefinition;
 import org.apache.camel.model.rest.RestDefinition;
@@ -62,11 +61,10 @@ import org.slf4j.LoggerFactory;
  * A <a href="http://camel.apache.org/dsl.html";>Java DSL</a> which is used to 
build {@link Route} instances in a
  * {@link CamelContext} for smart routing.
  */
-public abstract class RouteBuilder extends BuilderSupport implements 
RoutesBuilder, RoutesConfigurationsBuilder, Ordered {
+public abstract class RouteBuilder extends BuilderSupport implements 
RoutesBuilder, Ordered {
     protected Logger log = LoggerFactory.getLogger(getClass());
 
     private final AtomicBoolean initialized = new AtomicBoolean();
-    private final AtomicBoolean initializedConfiguration = new AtomicBoolean();
     private final List<RouteBuilderLifecycleStrategy> lifecycleInterceptors = 
new ArrayList<>();
     private final List<TransformerBuilder> transformerBuilders = new 
ArrayList<>();
     private final List<ValidatorBuilder> validatorBuilders = new ArrayList<>();
@@ -75,6 +73,7 @@ public abstract class RouteBuilder extends BuilderSupport 
implements RoutesBuild
     private RestConfigurationDefinition restConfiguration;
     private RoutesDefinition routeCollection = new RoutesDefinition();
     private RouteTemplatesDefinition routeTemplateCollection = new 
RouteTemplatesDefinition();
+    RouteConfigurationsDefinition routeConfigurationCollection = new 
RouteConfigurationsDefinition();
 
     public RouteBuilder() {
         this(null);
@@ -215,18 +214,6 @@ public abstract class RouteBuilder extends BuilderSupport 
implements RoutesBuild
     }
 
     /**
-     * Global routes configuration
-     *
-     * @return the builder
-     */
-    public RoutesConfigurationDefinition routesConfiguration() {
-        RoutesConfigurationDefinition answer = new 
RoutesConfigurationDefinition();
-        
getContext().adapt(ModelCamelContext.class).addRoutesConfiguration(answer);
-        configureRoutesConfiguration(answer);
-        return answer;
-    }
-
-    /**
      * Creates a new route template
      *
      * @return the builder
@@ -500,16 +487,6 @@ public abstract class RouteBuilder extends BuilderSupport 
implements RoutesBuild
         }
     }
 
-    @Override
-    public void addRoutesConfigurationsToCamelContext(CamelContext context) 
throws Exception {
-        setCamelContext(context);
-        routeCollection.setCamelContext(context);
-        if (initializedConfiguration.compareAndSet(false, true)) {
-            configuration();
-        }
-        populateRoutesConfiguration();
-    }
-
     /**
      * Configures the routes
      *
@@ -586,10 +563,6 @@ public abstract class RouteBuilder extends BuilderSupport 
implements RoutesBuild
         }
     }
 
-    protected void populateRoutesConfiguration() throws Exception {
-        // noop
-    }
-
     protected void populateRouteTemplates() throws Exception {
         CamelContext camelContext = getContext();
         if (camelContext == null) {
@@ -701,6 +674,14 @@ public abstract class RouteBuilder extends BuilderSupport 
implements RoutesBuild
         this.routeTemplateCollection = routeTemplateCollection;
     }
 
+    public RouteConfigurationsDefinition getRouteConfigurationCollection() {
+        return routeConfigurationCollection;
+    }
+
+    public void setRouteConfigurationCollection(RouteConfigurationsDefinition 
routeConfigurationCollection) {
+        this.routeConfigurationCollection = routeConfigurationCollection;
+    }
+
     protected void configureRest(RestDefinition rest) {
         // noop
     }
@@ -713,7 +694,7 @@ public abstract class RouteBuilder extends BuilderSupport 
implements RoutesBuild
         // noop
     }
 
-    protected void configureRoutesConfiguration(RoutesConfigurationDefinition 
routesConfiguration) {
+    protected void configureRouteConfiguration(RouteConfigurationDefinition 
routesConfiguration) {
         // noop
     }
 }
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteConfigurationBuilder.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteConfigurationBuilder.java
new file mode 100644
index 0000000..4467d40
--- /dev/null
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteConfigurationBuilder.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.builder;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.RouteConfigurationsBuilder;
+import org.apache.camel.model.Model;
+import org.apache.camel.model.RouteConfigurationDefinition;
+
+/**
+ * A <a href="http://camel.apache.org/dsl.html";>Java DSL</a> which is used for 
building route configuration(s).
+ */
+public abstract class RouteConfigurationBuilder extends RouteBuilder 
implements RouteConfigurationsBuilder {
+
+    private final AtomicBoolean initializedConfiguration = new AtomicBoolean();
+
+    @Override
+    public void configure() throws Exception {
+        // noop
+    }
+
+    public abstract void configuration() throws Exception;
+
+    /**
+     * Creates a new route configuration
+     *
+     * @return the builder
+     */
+    public RouteConfigurationDefinition routeConfiguration() {
+        return routeConfiguration(null);
+    }
+
+    /**
+     * Creates a new route configuration
+     *
+     * @return the builder
+     */
+    public RouteConfigurationDefinition routeConfiguration(String id) {
+        getRouteConfigurationCollection().setCamelContext(getCamelContext());
+        RouteConfigurationDefinition answer = 
getRouteConfigurationCollection().routeConfiguration(id);
+        configureRouteConfiguration(answer);
+        return answer;
+    }
+
+    @Override
+    public void addRouteConfigurationsToCamelContext(CamelContext context) 
throws Exception {
+        setCamelContext(context);
+        routeConfigurationCollection.setCamelContext(context);
+        if (initializedConfiguration.compareAndSet(false, true)) {
+            configuration();
+        }
+        populateRoutesConfiguration();
+    }
+
+    protected void populateRoutesConfiguration() throws Exception {
+        CamelContext camelContext = getContext();
+        if (camelContext == null) {
+            throw new IllegalArgumentException("CamelContext has not been 
injected!");
+        }
+        getRouteConfigurationCollection().setCamelContext(camelContext);
+        camelContext.getExtension(Model.class)
+                
.addRouteConfigurations(getRouteConfigurationCollection().getRouteConfigurations());
+    }
+
+}
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/RoutesConfigurationsBuilder.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/builder/RoutesConfigurationsBuilder.java
deleted file mode 100644
index a31275a..0000000
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/builder/RoutesConfigurationsBuilder.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.builder;
-
-/**
- * A <a href="http://camel.apache.org/dsl.html";>Java DSL</a> which is used for 
defining routes configuration (global
- * routes configuration)
- */
-public abstract class RoutesConfigurationsBuilder extends RouteBuilder {
-
-    @Override
-    public void configure() throws Exception {
-        // noop
-    }
-
-    public abstract void configuration() throws Exception;
-
-}
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/Model.java 
b/core/camel-core-model/src/main/java/org/apache/camel/model/Model.java
index 10ff07e..2697e99 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/Model.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/Model.java
@@ -50,11 +50,11 @@ public interface Model {
     List<ModelLifecycleStrategy> getModelLifecycleStrategies();
 
     // TODO: better names
-    void addRoutesConfigurations(List<RoutesConfigurationDefinition> 
routesConfigurations);
+    void addRouteConfigurations(List<RouteConfigurationDefinition> 
routesConfigurations);
 
-    void addRoutesConfiguration(RoutesConfigurationDefinition 
routesConfiguration);
+    void addRouteConfiguration(RouteConfigurationDefinition 
routesConfiguration);
 
-    List<RoutesConfigurationDefinition> getRoutesConfigurationDefinition();
+    List<RouteConfigurationDefinition> getRouteConfigurationDefinitions();
 
     /**
      * Returns a list of the current route definitions
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesConfigurationDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationDefinition.java
similarity index 94%
rename from 
core/camel-core-model/src/main/java/org/apache/camel/model/RoutesConfigurationDefinition.java
rename to 
core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationDefinition.java
index 56b7372..e4b4090 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesConfigurationDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationDefinition.java
@@ -28,12 +28,12 @@ import javax.xml.bind.annotation.XmlRootElement;
 import org.apache.camel.spi.Metadata;
 
 /**
- * Global configuration for Camel routes
+ * Reusable configuration for Camel route(s).
  */
 @Metadata(label = "configuration")
-@XmlRootElement(name = "routesConfiguration")
+@XmlRootElement(name = "routeConfiguration")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class RoutesConfigurationDefinition extends 
OptionalIdentifiedDefinition<RoutesDefinition> {
+public class RouteConfigurationDefinition extends 
OptionalIdentifiedDefinition<RouteConfigurationDefinition> {
 
     // TODO: Model for ErrorHandler
 
@@ -48,7 +48,7 @@ public class RoutesConfigurationDefinition extends 
OptionalIdentifiedDefinition<
     @XmlElementRef
     private List<InterceptSendToEndpointDefinition> interceptSendTos = new 
ArrayList<>();
 
-    public RoutesConfigurationDefinition() {
+    public RouteConfigurationDefinition() {
     }
 
     @Override
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationsDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationsDefinition.java
new file mode 100644
index 0000000..c56874b
--- /dev/null
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationsDefinition.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.Metadata;
+
+/**
+ * A series of route configurations
+ */
+@Metadata(label = "configuration")
+@XmlRootElement(name = "routeConfigurations")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class RouteConfigurationsDefinition {
+
+    @XmlElementRef
+    private List<RouteConfigurationDefinition> routeConfigurations = new 
ArrayList<>();
+    @XmlTransient
+    private CamelContext camelContext;
+
+    public RouteConfigurationsDefinition() {
+    }
+
+    @Override
+    public String toString() {
+        return "RouteConfigurations";
+    }
+
+    public List<RouteConfigurationDefinition> getRouteConfigurations() {
+        return routeConfigurations;
+    }
+
+    public void setRouteConfigurations(List<RouteConfigurationDefinition> 
routeConfigurations) {
+        this.routeConfigurations = routeConfigurations;
+    }
+
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    // Fluent API
+    // 
-------------------------------------------------------------------------
+
+    /**
+     * Creates a new route configuration
+     *
+     * @return the builder
+     */
+    public RouteConfigurationDefinition routeConfiguration() {
+        RouteConfigurationDefinition config = createRouteConfiguration(null);
+        getRouteConfigurations().add(config);
+        return config;
+    }
+
+    /**
+     * Creates a new route configuration
+     *
+     * @return the builder
+     */
+    public RouteConfigurationDefinition routeConfiguration(String id) {
+        RouteConfigurationDefinition config = createRouteConfiguration(id);
+        getRouteConfigurations().add(config);
+        return config;
+    }
+
+    /**
+     * Adds the route configuration
+     *
+     * @return the builder
+     */
+    public RouteConfigurationDefinition 
routeConfiguration(RouteConfigurationDefinition config) {
+        getRouteConfigurations().add(config);
+        return config;
+    }
+
+    // Implementation methods
+    // 
-------------------------------------------------------------------------
+
+    protected RouteConfigurationDefinition createRouteConfiguration(String id) 
{
+        RouteConfigurationDefinition config = new 
RouteConfigurationDefinition();
+        if (id != null) {
+            config.setId(id);
+        }
+        return config;
+    }
+
+}
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesConfigurationsDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesConfigurationsDefinition.java
deleted file mode 100644
index 55a708f..0000000
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesConfigurationsDefinition.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.Metadata;
-
-/**
- * A series of global configuration for Camel routes
- */
-@Metadata(label = "configuration")
-@XmlRootElement(name = "routesConfigurations")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class RoutesConfigurationsDefinition extends 
OptionalIdentifiedDefinition<RoutesDefinition> {
-
-    @XmlElementRef
-    private List<RoutesConfigurationDefinition> routesConfigurations = new 
ArrayList<>();
-    @XmlTransient
-    private CamelContext camelContext;
-
-    public RoutesConfigurationsDefinition() {
-    }
-
-    @Override
-    public String toString() {
-        return "RoutesConfigurations: " + getId();
-    }
-
-    @Override
-    public String getShortName() {
-        return "routesConfigurations";
-    }
-
-    @Override
-    public String getLabel() {
-        return "RoutesConfigurations " + getId();
-    }
-
-    public List<RoutesConfigurationDefinition> getRoutesConfigurations() {
-        return routesConfigurations;
-    }
-
-    public void setRoutesConfigurations(List<RoutesConfigurationDefinition> 
routesConfigurations) {
-        this.routesConfigurations = routesConfigurations;
-    }
-
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-}
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
index 8b17df1..8f07fba 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java
@@ -212,8 +212,8 @@ public class RoutesDefinition extends 
OptionalIdentifiedDefinition<RoutesDefinit
         List<InterceptSendToEndpointDefinition> ito = new 
ArrayList<>(interceptSendTos);
         List<OnCompletionDefinition> oc = new ArrayList<>(onCompletions);
         if (getCamelContext() != null) {
-            List<RoutesConfigurationDefinition> globalConfigurations
-                    = 
getCamelContext().adapt(ModelCamelContext.class).getRoutesConfigurationDefinition();
+            List<RouteConfigurationDefinition> globalConfigurations
+                    = 
getCamelContext().adapt(ModelCamelContext.class).getRouteConfigurationDefinitions();
             if (globalConfigurations != null) {
                 globalConfigurations.forEach(g -> {
                     oe.addAll(g.getOnExceptions());
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java 
b/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
index d3843f8..5b0817c 100644
--- a/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
+++ b/core/camel-core/src/test/java/org/apache/camel/ContextTestSupport.java
@@ -115,9 +115,18 @@ public abstract class ContextTestSupport extends 
TestSupport {
 
         if (isUseRouteBuilder()) {
             RouteBuilder[] builders = createRouteBuilders();
+            // add configuration before routes
             for (RouteBuilder builder : builders) {
-                log.debug("Using created route builder: {}", builder);
-                context.addRoutes(builder);
+                if (builder instanceof RouteConfigurationsBuilder) {
+                    log.debug("Using created route configuration: {}", 
builder);
+                    
context.addRoutesConfigurations((RouteConfigurationsBuilder) builder);
+                }
+            }
+            for (RouteBuilder builder : builders) {
+                if (!(builder instanceof RouteConfigurationsBuilder)) {
+                    log.debug("Using created route builder: {}", builder);
+                    context.addRoutes(builder);
+                }
             }
         } else {
             log.debug("isUseRouteBuilder() is false");
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationBuilderTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationBuilderTest.java
index 7e24ea2..38e31b0 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationBuilderTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationBuilderTest.java
@@ -20,9 +20,10 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.RouteConfigurationsBuilder;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.builder.RoutesConfigurationsBuilder;
+import org.apache.camel.builder.RouteConfigurationBuilder;
 import org.apache.camel.support.OrderedComparator;
 import org.junit.jupiter.api.Test;
 
@@ -51,11 +52,11 @@ public class RoutesConfigurationBuilderTest extends 
ContextTestSupport {
                         .throwException(new IllegalArgumentException("Foo2"));
             }
         });
-        routes.add(new RoutesConfigurationsBuilder() {
+        routes.add(new RouteConfigurationBuilder() {
             @Override
             public void configuration() throws Exception {
                 // global routes configuration
-                
routesConfiguration().onException(Exception.class).handled(true).to("mock:error");
+                
routeConfiguration().onException(Exception.class).handled(true).to("mock:error");
             }
         });
         context.start();
@@ -65,8 +66,8 @@ public class RoutesConfigurationBuilderTest extends 
ContextTestSupport {
 
         // first add the routes configurations as they are globally for all 
routes
         for (RoutesBuilder builder : routes) {
-            if (builder instanceof 
org.apache.camel.RoutesConfigurationsBuilder) {
-                org.apache.camel.RoutesConfigurationsBuilder rcb = 
(org.apache.camel.RoutesConfigurationsBuilder) builder;
+            if (builder instanceof RouteConfigurationsBuilder) {
+                RouteConfigurationsBuilder rcb = (RouteConfigurationsBuilder) 
builder;
                 context.addRoutesConfigurations(rcb);
             }
         }
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationMultipleRouteBuilderTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationMultipleRouteBuilderTest.java
index 875db74..d4fe65a 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationMultipleRouteBuilderTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationMultipleRouteBuilderTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.model;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.RouteConfigurationBuilder;
 import org.junit.jupiter.api.Test;
 
 public class RoutesConfigurationMultipleRouteBuilderTest extends 
ContextTestSupport {
@@ -29,14 +30,13 @@ public class RoutesConfigurationMultipleRouteBuilderTest 
extends ContextTestSupp
 
     @Test
     public void testRoutesConfiguration() throws Exception {
-        context.addRoutes(new RouteBuilder() {
+        context.addRoutesConfigurations(new RouteConfigurationBuilder() {
             @Override
-            public void configure() throws Exception {
-                // global routes configuration
-                
routesConfiguration().onException(Exception.class).handled(true).to("mock:error");
+            public void configuration() throws Exception {
+                // global configuration for all routes
+                
routeConfiguration().onException(Exception.class).handled(true).to("mock:error");
             }
         });
-
         context.addRoutes(new RouteBuilder() {
             @Override
             public void configure() throws Exception {
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationTest.java
index 8977c55..a737fc1 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.model;
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.RouteConfigurationBuilder;
 import org.junit.jupiter.api.Test;
 
 public class RoutesConfigurationTest extends ContextTestSupport {
@@ -33,19 +34,26 @@ public class RoutesConfigurationTest extends 
ContextTestSupport {
     }
 
     @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                // global routes configuration
-                
routesConfiguration().onException(Exception.class).handled(true).to("mock:error");
-
-                from("direct:start")
-                        .throwException(new IllegalArgumentException("Foo"));
-
-                from("direct:start2")
-                        .throwException(new IllegalArgumentException("Foo2"));
-            }
+    protected RouteBuilder[] createRouteBuilders() throws Exception {
+        return new RouteBuilder[] {
+                new RouteBuilder() {
+                    @Override
+                    public void configure() throws Exception {
+                        from("direct:start")
+                                .throwException(new 
IllegalArgumentException("Foo"));
+
+                        from("direct:start2")
+                                .throwException(new 
IllegalArgumentException("Foo2"));
+                    }
+                },
+                new RouteConfigurationBuilder() {
+                    @Override
+                    public void configuration() throws Exception {
+                        // global routes configuration
+                        
routeConfiguration().onException(Exception.class).handled(true).to("mock:error");
+                    }
+                }
         };
     }
+
 }
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java 
b/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
index 4ed77f3..5c07af9 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
@@ -23,8 +23,8 @@ import java.util.Set;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.RouteConfigurationsBuilder;
 import org.apache.camel.RoutesBuilder;
-import org.apache.camel.RoutesConfigurationsBuilder;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.CamelBeanPostProcessor;
 import org.apache.camel.support.OrderedComparator;
@@ -208,8 +208,8 @@ public class RoutesConfigurer {
 
         // first add the routes configurations as they are globally for all 
routes
         for (RoutesBuilder builder : routes) {
-            if (builder instanceof RoutesConfigurationsBuilder) {
-                RoutesConfigurationsBuilder rcb = 
(RoutesConfigurationsBuilder) builder;
+            if (builder instanceof RouteConfigurationsBuilder) {
+                RouteConfigurationsBuilder rcb = (RouteConfigurationsBuilder) 
builder;
                 LOG.debug("Adding routes configurations into CamelContext from 
RoutesConfigurationsBuilder: {}", rcb);
                 camelContext.addRoutesConfigurations(rcb);
             }
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 3d5ccff..b5be6f8 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
@@ -936,6 +936,53 @@ public class ModelParser extends BaseParser {
             return identifiedTypeAttributeHandler().accept(def, key, val);
         }, noElementHandler(), noValueHandler());
     }
+    protected RouteConfigurationDefinition 
doParseRouteConfigurationDefinition() throws IOException, 
XmlPullParserException {
+        return doParse(new RouteConfigurationDefinition(),
+            optionalIdentifiedDefinitionAttributeHandler(), (def, key) -> {
+            switch (key) {
+                case "interceptFrom": doAdd(doParseInterceptFromDefinition(), 
def.getIntercepts(), def::setIntercepts); break;
+                case "interceptSendToEndpoint": 
doAdd(doParseInterceptSendToEndpointDefinition(), def.getInterceptSendTos(), 
def::setInterceptSendTos); break;
+                case "intercept": doAdd(doParseInterceptDefinition(), 
def.getIntercepts(), def::setIntercepts); break;
+                case "onCompletion": doAdd(doParseOnCompletionDefinition(), 
def.getOnCompletions(), def::setOnCompletions); break;
+                case "onException": doAdd(doParseOnExceptionDefinition(), 
def.getOnExceptions(), def::setOnExceptions); break;
+                default: return 
optionalIdentifiedDefinitionElementHandler().accept(def, key);
+            }
+            return true;
+        }, noValueHandler());
+    }
+    public Optional<RouteConfigurationsDefinition> 
parseRouteConfigurationsDefinition()
+            throws IOException, XmlPullParserException {
+        String tag = getNextTag("routeConfigurations", "routeConfiguration");
+        if (tag != null) {
+            switch (tag) {
+                case "routeConfigurations" : return 
Optional.of(doParseRouteConfigurationsDefinition());
+                case "routeConfiguration" : return 
parseSingleRouteConfigurationsDefinition();
+            }
+        }
+        return Optional.empty();
+    }
+    private Optional<RouteConfigurationsDefinition> 
parseSingleRouteConfigurationsDefinition()
+            throws IOException, XmlPullParserException {
+        Optional<RouteConfigurationDefinition> single = 
Optional.of(doParseRouteConfigurationDefinition());
+        if (single.isPresent()) {
+            List<RouteConfigurationDefinition> list = new ArrayList<>();
+            list.add(single.get());
+            RouteConfigurationsDefinition def = new 
RouteConfigurationsDefinition();
+            def.setRouteConfigurations(list);
+            return Optional.of(def);
+        }
+        return Optional.empty();
+    }
+    protected RouteConfigurationsDefinition 
doParseRouteConfigurationsDefinition() throws IOException, 
XmlPullParserException {
+        return doParse(new RouteConfigurationsDefinition(),
+            noAttributeHandler(), (def, key) -> {
+            if ("routeConfiguration".equals(key)) {
+                doAdd(doParseRouteConfigurationDefinition(), 
def.getRouteConfigurations(), def::setRouteConfigurations);
+                return true;
+            }
+            return false;
+        }, noValueHandler());
+    }
     protected RouteContextRefDefinition doParseRouteContextRefDefinition() 
throws IOException, XmlPullParserException {
         return doParse(new RouteContextRefDefinition(), (def, key, val) -> {
             if ("ref".equals(key)) {
@@ -1112,53 +1159,6 @@ public class ModelParser extends BaseParser {
             return optionalIdentifiedDefinitionElementHandler().accept(def, 
key);
         }, noValueHandler());
     }
-    protected RoutesConfigurationDefinition 
doParseRoutesConfigurationDefinition() throws IOException, 
XmlPullParserException {
-        return doParse(new RoutesConfigurationDefinition(),
-            optionalIdentifiedDefinitionAttributeHandler(), (def, key) -> {
-            switch (key) {
-                case "interceptFrom": doAdd(doParseInterceptFromDefinition(), 
def.getIntercepts(), def::setIntercepts); break;
-                case "interceptSendToEndpoint": 
doAdd(doParseInterceptSendToEndpointDefinition(), def.getInterceptSendTos(), 
def::setInterceptSendTos); break;
-                case "intercept": doAdd(doParseInterceptDefinition(), 
def.getIntercepts(), def::setIntercepts); break;
-                case "onCompletion": doAdd(doParseOnCompletionDefinition(), 
def.getOnCompletions(), def::setOnCompletions); break;
-                case "onException": doAdd(doParseOnExceptionDefinition(), 
def.getOnExceptions(), def::setOnExceptions); break;
-                default: return 
optionalIdentifiedDefinitionElementHandler().accept(def, key);
-            }
-            return true;
-        }, noValueHandler());
-    }
-    public Optional<RoutesConfigurationsDefinition> 
parseRoutesConfigurationsDefinition()
-            throws IOException, XmlPullParserException {
-        String tag = getNextTag("routesConfigurations", "routesConfiguration");
-        if (tag != null) {
-            switch (tag) {
-                case "routesConfigurations" : return 
Optional.of(doParseRoutesConfigurationsDefinition());
-                case "routesConfiguration" : return 
parseSingleRoutesConfigurationsDefinition();
-            }
-        }
-        return Optional.empty();
-    }
-    private Optional<RoutesConfigurationsDefinition> 
parseSingleRoutesConfigurationsDefinition()
-            throws IOException, XmlPullParserException {
-        Optional<RoutesConfigurationDefinition> single = 
Optional.of(doParseRoutesConfigurationDefinition());
-        if (single.isPresent()) {
-            List<RoutesConfigurationDefinition> list = new ArrayList<>();
-            list.add(single.get());
-            RoutesConfigurationsDefinition def = new 
RoutesConfigurationsDefinition();
-            def.setRoutesConfigurations(list);
-            return Optional.of(def);
-        }
-        return Optional.empty();
-    }
-    protected RoutesConfigurationsDefinition 
doParseRoutesConfigurationsDefinition() throws IOException, 
XmlPullParserException {
-        return doParse(new RoutesConfigurationsDefinition(),
-            optionalIdentifiedDefinitionAttributeHandler(), (def, key) -> {
-            if ("routesConfiguration".equals(key)) {
-                doAdd(doParseRoutesConfigurationDefinition(), 
def.getRoutesConfigurations(), def::setRoutesConfigurations);
-                return true;
-            }
-            return optionalIdentifiedDefinitionElementHandler().accept(def, 
key);
-        }, noValueHandler());
-    }
     public Optional<RoutesDefinition> parseRoutesDefinition()
             throws IOException, XmlPullParserException {
         String tag = getNextTag("routes", "route");
diff --git 
a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
 
b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
index 8565107..87d7813 100644
--- 
a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
+++ 
b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
@@ -23,9 +23,9 @@ import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
 import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.model.RouteConfigurationDefinition;
+import org.apache.camel.model.RouteConfigurationsDefinition;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RoutesConfigurationDefinition;
-import org.apache.camel.model.RoutesConfigurationsDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.annotations.RoutesLoader;
@@ -83,7 +83,7 @@ public class XmlRoutesBuilderLoader extends 
RouteBuilderLoaderSupport {
             public void configuration() throws Exception {
                 try (InputStream is = resource.getInputStream()) {
                     new ModelParser(is)
-                            .parseRoutesConfigurationsDefinition()
+                            .parseRouteConfigurationsDefinition()
                             .ifPresent(this::addConfigurations);
                 }
             }
@@ -98,10 +98,10 @@ public class XmlRoutesBuilderLoader extends 
RouteBuilderLoaderSupport {
                 }
             }
 
-            private void addConfigurations(RoutesConfigurationsDefinition 
configurations) {
+            private void addConfigurations(RouteConfigurationsDefinition 
configurations) {
                 CamelContextAware.trySetCamelContext(getRouteCollection(), 
getCamelContext());
-                for (RoutesConfigurationDefinition config : 
configurations.getRoutesConfigurations()) {
-                    
getCamelContext().adapt(ModelCamelContext.class).addRoutesConfiguration(config);
+                for (RouteConfigurationDefinition config : 
configurations.getRouteConfigurations()) {
+                    
getCamelContext().adapt(ModelCamelContext.class).addRouteConfiguration(config);
                 }
             }
         };
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/pom.xml 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/pom.xml
index 0403a1c..876ef1c 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/pom.xml
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/pom.xml
@@ -134,7 +134,8 @@
                                 
<bannedDefinition>org.apache.camel.model.RouteTemplateBeanDefinition</bannedDefinition>
                                 
<bannedDefinition>org.apache.camel.model.RoutesDefinition</bannedDefinition>
                                 
<bannedDefinition>org.apache.camel.model.RestsDefinition</bannedDefinition>
-                                
<bannedDefinition>org.apache.camel.model.RoutesConfigurationDefinition</bannedDefinition>
+                                
<bannedDefinition>org.apache.camel.model.RouteConfigurationDefinition</bannedDefinition>
+                                
<bannedDefinition>org.apache.camel.model.RouteConfigurationsDefinition</bannedDefinition>
                             </bannedDefinitions>
                             <additionalDefinitions>
                                 <!-- saga -->
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
index 2fa29b6..56ecd7b 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
@@ -73,7 +73,6 @@ import org.apache.camel.model.RouteContextRefDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteTemplateParameterDefinition;
 import org.apache.camel.model.RouteTemplateScriptDefinition;
-import org.apache.camel.model.RoutesConfigurationsDefinition;
 import org.apache.camel.model.RoutingSlipDefinition;
 import org.apache.camel.model.SagaActionUriDefinition;
 import org.apache.camel.model.SagaDefinition;
@@ -12881,49 +12880,6 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
-            types = 
org.apache.camel.model.RoutesConfigurationsDefinition.class,
-            order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
-            nodes = "routes-configurations",
-            properties = @YamlProperty(name = "routes-configuration", type = 
"array:org.apache.camel.model.RoutesConfigurationDefinition")
-    )
-    public static class RoutesConfigurationsDefinitionDeserializer extends 
YamlDeserializerBase<RoutesConfigurationsDefinition> {
-        public RoutesConfigurationsDefinitionDeserializer() {
-            super(RoutesConfigurationsDefinition.class);
-        }
-
-        @Override
-        protected RoutesConfigurationsDefinition newInstance() {
-            return new RoutesConfigurationsDefinition();
-        }
-
-        @Override
-        protected boolean setProperty(RoutesConfigurationsDefinition target, 
String propertyKey,
-                String propertyName, Node node) {
-            switch(propertyKey) {
-                case "routes-configuration": {
-                    
java.util.List<org.apache.camel.model.RoutesConfigurationDefinition> val = 
asFlatList(node, org.apache.camel.model.RoutesConfigurationDefinition.class);
-                    target.setRoutesConfigurations(val);
-                    break;
-                }
-                case "id": {
-                    String val = asText(node);
-                    target.setId(val);
-                    break;
-                }
-                case "description": {
-                    org.apache.camel.model.DescriptionDefinition val = 
asType(node, org.apache.camel.model.DescriptionDefinition.class);
-                    target.setDescription(val);
-                    break;
-                }
-                default: {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-
-    @YamlType(
             inline = true,
             types = org.apache.camel.model.RoutingSlipDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
index 197bfda..965e470 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
@@ -304,8 +304,6 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "org.apache.camel.model.RouteTemplateParameterDefinition": 
return new ModelDeserializers.RouteTemplateParameterDefinitionDeserializer();
             case "template-script": return new 
ModelDeserializers.RouteTemplateScriptDefinitionDeserializer();
             case "org.apache.camel.model.RouteTemplateScriptDefinition": 
return new ModelDeserializers.RouteTemplateScriptDefinitionDeserializer();
-            case "routes-configurations": return new 
ModelDeserializers.RoutesConfigurationsDefinitionDeserializer();
-            case "org.apache.camel.model.RoutesConfigurationsDefinition": 
return new ModelDeserializers.RoutesConfigurationsDefinitionDeserializer();
             case "routing-slip": return new 
ModelDeserializers.RoutingSlipDefinitionDeserializer();
             case "org.apache.camel.model.RoutingSlipDefinition": return new 
ModelDeserializers.RoutingSlipDefinitionDeserializer();
             case "rss": return new 
ModelDeserializers.RssDataFormatDeserializer();
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/CustomResolver.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/CustomResolver.java
index 6dc4791..b69ff69 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/CustomResolver.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/CustomResolver.java
@@ -38,9 +38,9 @@ public class CustomResolver implements 
YamlDeserializerResolver {
             case "route":
             case "org.apache.camel.model.RouteDefinition":
                 return new RouteDefinitionDeserializer();
-            case "routes-configuration":
-            case "org.apache.camel.model.RoutesConfigurationDefinition":
-                return new RoutesConfigurationDefinitionDeserializer();
+            case "route-configuration":
+            case "org.apache.camel.model.RouteConfigurationDefinition":
+                return new RouteConfigurationDefinitionDeserializer();
             case "template":
             case "org.apache.camel.model.RouteTemplateDefinition":
                 return new RouteTemplateDefinitionDeserializer();
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RoutesConfigurationDefinitionDeserializer.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteConfigurationDefinitionDeserializer.java
similarity index 79%
rename from 
dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RoutesConfigurationDefinitionDeserializer.java
rename to 
dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteConfigurationDefinitionDeserializer.java
index 37bdcf9..f96fb58 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RoutesConfigurationDefinitionDeserializer.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/RouteConfigurationDefinitionDeserializer.java
@@ -4,7 +4,7 @@ import 
org.apache.camel.dsl.yaml.common.YamlDeserializationContext;
 import org.apache.camel.dsl.yaml.common.YamlDeserializerBase;
 import org.apache.camel.dsl.yaml.common.YamlDeserializerResolver;
 import org.apache.camel.model.OnExceptionDefinition;
-import org.apache.camel.model.RoutesConfigurationDefinition;
+import org.apache.camel.model.RouteConfigurationDefinition;
 import org.apache.camel.spi.annotations.YamlProperty;
 import org.apache.camel.spi.annotations.YamlType;
 import org.snakeyaml.engine.v2.nodes.MappingNode;
@@ -14,9 +14,9 @@ import org.snakeyaml.engine.v2.nodes.SequenceNode;
 
 @YamlType(
           inline = true,
-          types = org.apache.camel.model.RoutesConfigurationDefinition.class,
+          types = org.apache.camel.model.RouteConfigurationDefinition.class,
           order = YamlDeserializerResolver.ORDER_DEFAULT,
-          nodes = "routes-configuration",
+          nodes = "route-configuration",
           properties = {
                   @YamlProperty(name = "intercept", type = 
"array:org.apache.camel.model.InterceptDefinition"),
                   @YamlProperty(name = "intercept-from", type = 
"array:org.apache.camel.model.InterceptFromDefinition"),
@@ -25,19 +25,19 @@ import org.snakeyaml.engine.v2.nodes.SequenceNode;
                   @YamlProperty(name = "on-completion", type = 
"array:org.apache.camel.model.OnCompletionDefinition"),
                   @YamlProperty(name = "on-exception", type = 
"array:org.apache.camel.model.OnExceptionDefinition")
           })
-public class RoutesConfigurationDefinitionDeserializer extends 
YamlDeserializerBase<RoutesConfigurationDefinition> {
-    public RoutesConfigurationDefinitionDeserializer() {
-        super(RoutesConfigurationDefinition.class);
+public class RouteConfigurationDefinitionDeserializer extends 
YamlDeserializerBase<RouteConfigurationDefinition> {
+    public RouteConfigurationDefinitionDeserializer() {
+        super(RouteConfigurationDefinition.class);
     }
 
     @Override
-    protected RoutesConfigurationDefinition newInstance() {
-        return new RoutesConfigurationDefinition();
+    protected RouteConfigurationDefinition newInstance() {
+        return new RouteConfigurationDefinition();
     }
 
     @Override
     public Object construct(Node node) {
-        final RoutesConfigurationDefinition target = newInstance();
+        final RouteConfigurationDefinition target = newInstance();
 
         final YamlDeserializationContext dc = getDeserializationContext(node);
         final SequenceNode sn = asSequenceNode(node);
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
index e58c408..51527d7 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
@@ -2035,6 +2035,45 @@
         } ],
         "required" : [ "ref" ]
       },
+      "org.apache.camel.model.RouteConfigurationDefinition" : {
+        "oneOf" : [ {
+          "type" : "string"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "intercept" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.InterceptDefinition"
+              }
+            },
+            "intercept-from" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.InterceptFromDefinition"
+              }
+            },
+            "intercept-send-to-endpoint" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.InterceptSendToEndpointDefinition"
+              }
+            },
+            "on-completion" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.OnCompletionDefinition"
+              }
+            },
+            "on-exception" : {
+              "type" : "array",
+              "items" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.OnExceptionDefinition"
+              }
+            }
+          }
+        } ]
+      },
       "org.apache.camel.model.RouteContextRefDefinition" : {
         "type" : "object",
         "properties" : {
@@ -2150,56 +2189,6 @@
           }
         } ]
       },
-      "org.apache.camel.model.RoutesConfigurationDefinition" : {
-        "oneOf" : [ {
-          "type" : "string"
-        }, {
-          "type" : "object",
-          "properties" : {
-            "intercept" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : 
"#/items/definitions/org.apache.camel.model.InterceptDefinition"
-              }
-            },
-            "intercept-from" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : 
"#/items/definitions/org.apache.camel.model.InterceptFromDefinition"
-              }
-            },
-            "intercept-send-to-endpoint" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : 
"#/items/definitions/org.apache.camel.model.InterceptSendToEndpointDefinition"
-              }
-            },
-            "on-completion" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : 
"#/items/definitions/org.apache.camel.model.OnCompletionDefinition"
-              }
-            },
-            "on-exception" : {
-              "type" : "array",
-              "items" : {
-                "$ref" : 
"#/items/definitions/org.apache.camel.model.OnExceptionDefinition"
-              }
-            }
-          }
-        } ]
-      },
-      "org.apache.camel.model.RoutesConfigurationsDefinition" : {
-        "type" : "object",
-        "properties" : {
-          "routes-configuration" : {
-            "type" : "array",
-            "items" : {
-              "$ref" : 
"#/items/definitions/org.apache.camel.model.RoutesConfigurationDefinition"
-            }
-          }
-        }
-      },
       "org.apache.camel.model.RoutingSlipDefinition" : {
         "oneOf" : [ {
           "type" : "string"
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
index 48a5e92..d4df516 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
@@ -23,9 +23,9 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinition;
 import org.apache.camel.model.ModelCamelContext;
 import org.apache.camel.model.OnExceptionDefinition;
+import org.apache.camel.model.RouteConfigurationDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteTemplateDefinition;
-import org.apache.camel.model.RoutesConfigurationDefinition;
 import org.apache.camel.model.rest.RestConfigurationDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.VerbDefinition;
@@ -61,11 +61,11 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
                     } else if (item instanceof RouteDefinition) {
                         
CamelContextAware.trySetCamelContext(getRouteCollection(), getCamelContext());
                         getRouteCollection().route((RouteDefinition) item);
+                    } else if (item instanceof RouteConfigurationDefinition) {
+                        
CamelContextAware.trySetCamelContext(getRouteConfigurationCollection(), 
getCamelContext());
+                        
getRouteConfigurationCollection().routeConfiguration((RouteConfigurationDefinition)
 item);
                     } else if (item instanceof CamelContextCustomizer) {
                         ((CamelContextCustomizer) 
item).configure(getCamelContext());
-                    } else if (item instanceof RoutesConfigurationDefinition) {
-                        getContext().adapt(ModelCamelContext.class)
-                                
.addRoutesConfiguration((RoutesConfigurationDefinition) item);
                     } else if (item instanceof OnExceptionDefinition) {
                         if (!getRouteCollection().getRoutes().isEmpty()) {
                             throw new IllegalArgumentException(
@@ -101,9 +101,9 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
             public void configuration() throws Exception {
                 for (Node node : asSequenceNode(root).getValue()) {
                     Object item = 
getDeserializationContext().mandatoryResolve(node).construct(node);
-                    if (item instanceof RoutesConfigurationDefinition) {
+                    if (item instanceof RouteConfigurationDefinition) {
                         getContext().adapt(ModelCamelContext.class)
-                                
.addRoutesConfiguration((RoutesConfigurationDefinition) item);
+                                
.addRouteConfiguration((RouteConfigurationDefinition) item);
                     }
                 }
             }
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesConfigurationTest.groovy
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy
similarity index 94%
rename from 
dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesConfigurationTest.groovy
rename to 
dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy
index 33ba988..80aa3fe 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RoutesConfigurationTest.groovy
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy
@@ -21,14 +21,14 @@ import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.dsl.yaml.support.model.MyException
 import org.apache.camel.dsl.yaml.support.model.MyFailingProcessor
 
-class RoutesConfigurationTest extends YamlTestSupport {
-    def "routes-configuration"() {
+class RouteConfigurationTest extends YamlTestSupport {
+    def "route-configuration"() {
         setup:
             loadRoutes """
                 - beans:
                   - name: myFailingProcessor
                     type: ${MyFailingProcessor.name}
-                - routes-configuration:
+                - route-configuration:
                     - on-exception:
                         handled:
                           constant: "true"
@@ -59,14 +59,14 @@ class RoutesConfigurationTest extends YamlTestSupport {
             MockEndpoint.assertIsSatisfied(context)
     }
 
-    def "routes-configuration-separate"() {
+    def "route-configuration-separate"() {
         setup:
         // global configurations
         loadRoutes """
                 - beans:
                   - name: myFailingProcessor
                     type: ${MyFailingProcessor.name}
-                - routes-configuration:
+                - route-configuration:
                     - on-exception:
                         handled:
                           constant: "true"
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
index 3f9f1bb..601dbf3 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
@@ -101,7 +101,7 @@ public class ModelXmlParserGeneratorMojo extends 
AbstractGeneratorMojo {
     private Class<?> outputDefinitionClass;
     private Class<?> expressionDefinitionClass;
     private Class<?> routesDefinitionClass;
-    private Class<?> routesConfigurationsDefinitionClass;
+    private Class<?> routeConfigurationsDefinitionClass;
     private Class<?> routeTemplatesDefinitionClass;
     private Class<?> restsDefinitionClass;
     private Class<?> processorDefinitionClass;
@@ -135,7 +135,7 @@ public class ModelXmlParserGeneratorMojo extends 
AbstractGeneratorMojo {
 
         outputDefinitionClass = loadClass(classLoader, MODEL_PACKAGE + 
".OutputDefinition");
         routesDefinitionClass = loadClass(classLoader, MODEL_PACKAGE + 
".RoutesDefinition");
-        routesConfigurationsDefinitionClass = loadClass(classLoader, 
MODEL_PACKAGE + ".RoutesConfigurationsDefinition");
+        routeConfigurationsDefinitionClass = loadClass(classLoader, 
MODEL_PACKAGE + ".RouteConfigurationsDefinition");
         routeTemplatesDefinitionClass = loadClass(classLoader, MODEL_PACKAGE + 
".RouteTemplatesDefinition");
         dataFormatDefinitionClass = loadClass(classLoader, MODEL_PACKAGE + 
".DataFormatDefinition");
         processorDefinitionClass = loadClass(classLoader, MODEL_PACKAGE + 
".ProcessorDefinition");
@@ -478,7 +478,7 @@ public class ModelXmlParserGeneratorMojo extends 
AbstractGeneratorMojo {
                 }
                 return " noValueHandler()";
             });
-            if (clazz == routesDefinitionClass || clazz == 
routeTemplatesDefinitionClass || clazz == restsDefinitionClass || clazz == 
routesConfigurationsDefinitionClass) {
+            if (clazz == routesDefinitionClass || clazz == 
routeTemplatesDefinitionClass || clazz == restsDefinitionClass || clazz == 
routeConfigurationsDefinitionClass) {
 
                 // for routes/rests/routeTemplates we want to support 
single-mode as well, this means
                 // we check that the tag name is either plural or singular and 
parse accordingly

Reply via email to