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
