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 8f94c0888383dd8a6a9714e5f6c8e54728ae7112
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Jul 7 13:10:25 2021 +0200

    CAMEL-16757: camel-core - Global error handling, interceptor in all DSL
---
 .../camel/impl/lw/LightweightCamelContext.java     |  6 ++
 .../impl/lw/LightweightRuntimeCamelContext.java    |  6 ++
 .../services/org/apache/camel/model.properties     |  1 +
 .../resources/org/apache/camel/model/jaxb.index    |  1 +
 .../apache/camel/model/routesConfigurations.json   | 17 +++++
 .../model/RoutesConfigurationsDefinition.java      | 77 ++++++++++++++++++++++
 .../java/org/apache/camel/xml/in/ModelParser.java  | 33 ++++++++++
 .../camel/dsl/xml/io/XmlRoutesBuilderLoader.java   | 19 ++++++
 .../dsl/yaml/deserializers/ModelDeserializers.java | 44 +++++++++++++
 .../deserializers/ModelDeserializersResolver.java  |  2 +
 .../src/generated/resources/camel-yaml-dsl.json    | 11 ++++
 .../camel/dsl/yaml/YamlRoutesBuilderLoader.java    | 11 ++++
 .../packaging/ModelXmlParserGeneratorMojo.java     |  4 +-
 13 files changed, 231 insertions(+), 1 deletion(-)

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 bf5b72e..8701f68 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
@@ -43,6 +43,7 @@ import org.apache.camel.ProducerTemplate;
 import org.apache.camel.Route;
 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;
@@ -553,6 +554,11 @@ public class LightweightCamelContext implements 
ExtendedCamelContext, CatalogCam
     }
 
     @Override
+    public void addRoutesConfigurations(RoutesConfigurationsBuilder builder) 
throws Exception {
+        delegate.addRoutesConfigurations(builder);
+    }
+
+    @Override
     public boolean removeRoute(String routeId) throws Exception {
         return delegate.removeRoute(routeId);
     }
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 e807148..d7351ee 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
@@ -51,6 +51,7 @@ import org.apache.camel.ResolveEndpointFailedException;
 import org.apache.camel.Route;
 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;
@@ -1863,6 +1864,11 @@ public class LightweightRuntimeCamelContext implements 
ExtendedCamelContext, Cat
     }
 
     @Override
+    public void addRoutesConfigurations(RoutesConfigurationsBuilder builder) 
throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
     public boolean removeRoute(String routeId) 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 0aa905d..9a55b3e 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
@@ -143,6 +143,7 @@ routeTemplateContextRef
 routeTemplates
 routes
 routesConfiguration
+routesConfigurations
 routingSlip
 rss
 saga
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 c211311..9ac2703 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
@@ -72,6 +72,7 @@ RouteTemplateParameterDefinition
 RouteTemplateScriptDefinition
 RouteTemplatesDefinition
 RoutesConfigurationDefinition
+RoutesConfigurationsDefinition
 RoutesDefinition
 RoutingSlipDefinition
 SagaCompletionMode
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
new file mode 100644
index 0000000..8bd9060
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/org/apache/camel/model/routesConfigurations.json
@@ -0,0 +1,17 @@
+{
+  "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/main/java/org/apache/camel/model/RoutesConfigurationsDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesConfigurationsDefinition.java
new file mode 100644
index 0000000..55a708f
--- /dev/null
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesConfigurationsDefinition.java
@@ -0,0 +1,77 @@
+/*
+ * 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-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 72895e0..3d5ccff 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
@@ -1126,6 +1126,39 @@ public class ModelParser extends BaseParser {
             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 59abcfd..8565107 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
@@ -22,7 +22,10 @@ import org.apache.camel.CamelContextAware;
 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.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;
@@ -76,6 +79,15 @@ public class XmlRoutesBuilderLoader extends 
RouteBuilderLoaderSupport {
                 }
             }
 
+            @Override
+            public void configuration() throws Exception {
+                try (InputStream is = resource.getInputStream()) {
+                    new ModelParser(is)
+                            .parseRoutesConfigurationsDefinition()
+                            .ifPresent(this::addConfigurations);
+                }
+            }
+
             private void addRoutes(RoutesDefinition routes) {
                 CamelContextAware.trySetCamelContext(getRouteCollection(), 
getCamelContext());
 
@@ -85,6 +97,13 @@ public class XmlRoutesBuilderLoader extends 
RouteBuilderLoaderSupport {
                     getRouteCollection().route(route);
                 }
             }
+
+            private void addConfigurations(RoutesConfigurationsDefinition 
configurations) {
+                CamelContextAware.trySetCamelContext(getRouteCollection(), 
getCamelContext());
+                for (RoutesConfigurationDefinition config : 
configurations.getRoutesConfigurations()) {
+                    
getCamelContext().adapt(ModelCamelContext.class).addRoutesConfiguration(config);
+                }
+            }
         };
     }
 }
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 56ecd7b..2fa29b6 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,6 +73,7 @@ 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;
@@ -12880,6 +12881,49 @@ 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 965e470..197bfda 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,6 +304,8 @@ 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/src/generated/resources/camel-yaml-dsl.json 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
index 3708e2f..e58c408 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
@@ -2189,6 +2189,17 @@
           }
         } ]
       },
+      "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 15a4057..48a5e92 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
@@ -96,6 +96,17 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
                     }
                 }
             }
+
+            @Override
+            public void configuration() throws Exception {
+                for (Node node : asSequenceNode(root).getValue()) {
+                    Object item = 
getDeserializationContext().mandatoryResolve(node).construct(node);
+                    if (item instanceof RoutesConfigurationDefinition) {
+                        getContext().adapt(ModelCamelContext.class)
+                                
.addRoutesConfiguration((RoutesConfigurationDefinition) item);
+                    }
+                }
+            }
         };
     }
 
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 bfc4cece..3f9f1bb 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,6 +101,7 @@ public class ModelXmlParserGeneratorMojo extends 
AbstractGeneratorMojo {
     private Class<?> outputDefinitionClass;
     private Class<?> expressionDefinitionClass;
     private Class<?> routesDefinitionClass;
+    private Class<?> routesConfigurationsDefinitionClass;
     private Class<?> routeTemplatesDefinitionClass;
     private Class<?> restsDefinitionClass;
     private Class<?> processorDefinitionClass;
@@ -134,6 +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");
         routeTemplatesDefinitionClass = loadClass(classLoader, MODEL_PACKAGE + 
".RouteTemplatesDefinition");
         dataFormatDefinitionClass = loadClass(classLoader, MODEL_PACKAGE + 
".DataFormatDefinition");
         processorDefinitionClass = loadClass(classLoader, MODEL_PACKAGE + 
".ProcessorDefinition");
@@ -476,7 +478,7 @@ public class ModelXmlParserGeneratorMojo extends 
AbstractGeneratorMojo {
                 }
                 return " noValueHandler()";
             });
-            if (clazz == routesDefinitionClass || clazz == 
routeTemplatesDefinitionClass || clazz == restsDefinitionClass) {
+            if (clazz == routesDefinitionClass || clazz == 
routeTemplatesDefinitionClass || clazz == restsDefinitionClass || clazz == 
routesConfigurationsDefinitionClass) {
 
                 // 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