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

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

commit f6f122954698bd32c6f90c1c7bfc7fe20d685c3d
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Dec 4 11:45:16 2021 +0100

    CAMEL-17272: camel-spring-xml - Classic Spring XML add support for external 
route configuration XML files
---
 .../resources/org/apache/camel/cdi/xml/jaxb.index  |  1 +
 .../org/apache/camel/cdi/XmlCdiBeanFactory.java    | 26 +++++++++++++
 .../cdi/xml/ApplicationContextFactoryBean.java     | 11 ++++++
 .../camel/cdi/xml/CamelContextFactoryBean.java     | 13 +++++++
 .../xml/RouteConfigurationContextDefinition.java   | 44 ++++++++++++++++++++++
 5 files changed, 95 insertions(+)

diff --git 
a/components/camel-cdi/src/generated/resources/org/apache/camel/cdi/xml/jaxb.index
 
b/components/camel-cdi/src/generated/resources/org/apache/camel/cdi/xml/jaxb.index
index d36f889..438a9be 100644
--- 
a/components/camel-cdi/src/generated/resources/org/apache/camel/cdi/xml/jaxb.index
+++ 
b/components/camel-cdi/src/generated/resources/org/apache/camel/cdi/xml/jaxb.index
@@ -9,6 +9,7 @@ ImportDefinition
 ProducerTemplateFactoryBean
 RedeliveryPolicyFactoryBean
 RestContextDefinition
+RouteConfigurationContextDefinition
 RouteContextDefinition
 RouteTemplateContextDefinition
 ThreadPoolFactoryBean
diff --git 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
index 8cd204e..58af540 100644
--- 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
+++ 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/XmlCdiBeanFactory.java
@@ -41,6 +41,7 @@ import org.apache.camel.cdi.xml.ErrorHandlerDefinition;
 import org.apache.camel.cdi.xml.ErrorHandlerType;
 import org.apache.camel.cdi.xml.ImportDefinition;
 import org.apache.camel.cdi.xml.RestContextDefinition;
+import org.apache.camel.cdi.xml.RouteConfigurationContextDefinition;
 import org.apache.camel.cdi.xml.RouteContextDefinition;
 import org.apache.camel.cdi.xml.RouteTemplateContextDefinition;
 import org.apache.camel.core.xml.AbstractCamelFactoryBean;
@@ -48,6 +49,7 @@ import 
org.apache.camel.core.xml.CamelServiceExporterDefinition;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.model.IdentifiedType;
 import org.apache.camel.model.OptionalIdentifiedDefinition;
+import org.apache.camel.model.RouteConfigurationDefinition;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteTemplateDefinition;
 import org.apache.camel.model.RoutesDefinition;
@@ -128,6 +130,9 @@ final class XmlCdiBeanFactory {
                 for (RouteContextDefinition factory : app.getRouteContexts()) {
                     beans.add(routeContextBean(factory, url));
                 }
+                for (RouteConfigurationContextDefinition factory : 
app.getRouteConfigurationContexts()) {
+                    beans.add(routeConfigurationContextBean(factory, url));
+                }
                 for (RouteTemplateContextDefinition factory : 
app.getRouteTemplateContexts()) {
                     beans.add(routeTemplateContextBean(factory, url));
                 }
@@ -346,6 +351,27 @@ final class XmlCdiBeanFactory {
                                                                                
        + bean.getQualifiers());
     }
 
+    private SyntheticBean<?> 
routeConfigurationContextBean(RouteConfigurationContextDefinition definition, 
URL url) {
+        requireNonNull(definition.getId(),
+                () -> format("Missing [%s] attribute for imported bean [%s] 
from resource [%s]",
+                        "id", "routeContext", url));
+
+        return new SyntheticBean<>(
+                manager,
+                new SyntheticAnnotated(
+                        List.class,
+                        Stream.of(List.class, new 
ListParameterizedType(RouteConfigurationDefinition.class))
+                                .collect(toSet()),
+                        ANY, NamedLiteral.of(definition.getId())),
+                List.class,
+                new 
SyntheticInjectionTarget<>(definition::getRouteConfigurations),
+                bean -> "imported route configuration context with "
+                        + "id [" + definition.getId() + "] "
+                        + "from resource [" + url + "] "
+                        + "with qualifiers "
+                        + bean.getQualifiers());
+    }
+
     private SyntheticBean<?> routeContextBean(RouteContextDefinition 
definition, URL url) {
         requireNonNull(definition.getId(),
                 () -> format("Missing [%s] attribute for imported bean [%s] 
from resource [%s]",
diff --git 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ApplicationContextFactoryBean.java
 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ApplicationContextFactoryBean.java
index 60eb50a..9dde7dc 100644
--- 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ApplicationContextFactoryBean.java
+++ 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/ApplicationContextFactoryBean.java
@@ -40,6 +40,9 @@ public class ApplicationContextFactoryBean {
     @XmlElement(name = "import")
     private List<ImportDefinition> imports = new ArrayList<>();
 
+    @XmlElement(name = "routeConfigurationContext")
+    private List<RouteConfigurationContextDefinition> 
routeConfigurationContexts = new ArrayList<>();
+
     @XmlElement(name = "restContext")
     private List<RestContextDefinition> restContexts = new ArrayList<>();
 
@@ -98,6 +101,14 @@ public class ApplicationContextFactoryBean {
         this.routeContexts = routeContexts;
     }
 
+    public List<RouteConfigurationContextDefinition> 
getRouteConfigurationContexts() {
+        return routeConfigurationContexts;
+    }
+
+    public void 
setRouteConfigurationContexts(List<RouteConfigurationContextDefinition> 
routeConfigurationContexts) {
+        this.routeConfigurationContexts = routeConfigurationContexts;
+    }
+
     public List<RouteTemplateContextDefinition> getRouteTemplateContexts() {
         return routeTemplateContexts;
     }
diff --git 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/CamelContextFactoryBean.java
 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/CamelContextFactoryBean.java
index 4eceb35..dc4b15d 100644
--- 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/CamelContextFactoryBean.java
+++ 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/CamelContextFactoryBean.java
@@ -58,6 +58,7 @@ import org.apache.camel.model.PackageScanDefinition;
 import org.apache.camel.model.Resilience4jConfigurationDefinition;
 import org.apache.camel.model.RestContextRefDefinition;
 import org.apache.camel.model.RouteBuilderDefinition;
+import org.apache.camel.model.RouteConfigurationContextRefDefinition;
 import org.apache.camel.model.RouteConfigurationDefinition;
 import org.apache.camel.model.RouteContextRefDefinition;
 import org.apache.camel.model.RouteDefinition;
@@ -245,6 +246,9 @@ public class CamelContextFactoryBean extends 
AbstractCamelContextFactoryBean<Def
     @XmlElement(name = "export", type = CamelServiceExporterDefinition.class)
     private List<CamelServiceExporterDefinition> exports;
 
+    @XmlElement(name = "routeConfigurationContextRef")
+    private List<RouteConfigurationContextRefDefinition> 
routeConfigurationRefs = new ArrayList<>();
+
     @XmlElement(name = "routeTemplateContextRef")
     private List<RouteTemplateContextRefDefinition> routeTemplateRefs = new 
ArrayList<>();
 
@@ -942,6 +946,15 @@ public class CamelContextFactoryBean extends 
AbstractCamelContextFactoryBean<Def
     }
 
     @Override
+    public List<RouteConfigurationContextRefDefinition> 
getRouteConfigurationRefs() {
+        return routeConfigurationRefs;
+    }
+
+    public void 
setRouteConfigurationRefs(List<RouteConfigurationContextRefDefinition> 
routeConfigurationRefs) {
+        this.routeConfigurationRefs = routeConfigurationRefs;
+    }
+
+    @Override
     public List<RouteTemplateContextRefDefinition> getRouteTemplateRefs() {
         return routeTemplateRefs;
     }
diff --git 
a/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/RouteConfigurationContextDefinition.java
 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/RouteConfigurationContextDefinition.java
new file mode 100644
index 0000000..0a6fcb1
--- /dev/null
+++ 
b/components/camel-cdi/src/main/java/org/apache/camel/cdi/xml/RouteConfigurationContextDefinition.java
@@ -0,0 +1,44 @@
+/*
+ * 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.cdi.xml;
+
+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.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.camel.model.IdentifiedType;
+import org.apache.camel.model.RouteConfigurationDefinition;
+
+@XmlRootElement(name = "routeConfigurationContext")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class RouteConfigurationContextDefinition extends IdentifiedType {
+
+    @XmlElement(name = "routeConfiguration", required = true)
+    private List<RouteConfigurationDefinition> routeConfigurations = new 
ArrayList<>();
+
+    public List<RouteConfigurationDefinition> getRouteConfigurations() {
+        return routeConfigurations;
+    }
+
+    public void setRouteConfigurations(List<RouteConfigurationDefinition> 
routeConfigurations) {
+        this.routeConfigurations = routeConfigurations;
+    }
+}

Reply via email to