You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/12/04 10:54:43 UTC
[camel] 04/04: CAMEL-17272: camel-spring-xml - Classic Spring XML add support for external route configuration XML files
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 <cl...@gmail.com>
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;
+ }
+}