You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/07/06 14:16:30 UTC
[camel-quarkus] 01/01: Upgrade to Camel 3.5.0-SNAPSHOT
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 9ae95f2febb878eadf61102d07d32a87fb3a8be8
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu Jun 18 16:30:49 2020 +0100
Upgrade to Camel 3.5.0-SNAPSHOT
---
.../org/apache/camel/quarkus/core/BaseModel.java | 87 ++++++++++++++++++++++
.../core/DisabledXMLRoutesDefinitionLoader.java | 5 ++
.../camel/quarkus/core/FastCamelContext.java | 41 ++++++++++
.../quarkus/main/CamelMainRoutesCollector.java | 26 +++++++
.../runtime/support/CustomRoutesCollector.java | 7 ++
pom.xml | 2 +-
6 files changed, 167 insertions(+), 1 deletion(-)
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
index 9bd3b06..e08704e 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
@@ -27,12 +27,14 @@ import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
import org.apache.camel.model.rest.RestDefinition;
import org.apache.camel.model.transformer.TransformerDefinition;
import org.apache.camel.model.validator.ValidatorDefinition;
+import org.apache.camel.util.CollectionStringBuffer;
public abstract class BaseModel implements Model {
private final CamelContext camelContext;
private final List<RouteDefinition> routeDefinitions = new ArrayList<>();
+ private final List<RouteTemplateDefinition> routeTemplateDefinitions = new ArrayList<>();
private final List<RestDefinition> restDefinitions = new ArrayList<>();
private Map<String, DataFormatDefinition> dataFormats = new HashMap<>();
private List<TransformerDefinition> transformers = new ArrayList<>();
@@ -111,6 +113,91 @@ public abstract class BaseModel implements Model {
}
@Override
+ public List<RouteTemplateDefinition> getRouteTemplateDefinitions() {
+ return routeTemplateDefinitions;
+ }
+
+ @Override
+ public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
+ for (RouteTemplateDefinition route : routeTemplateDefinitions) {
+ if (route.idOrCreate(camelContext.adapt(ExtendedCamelContext.class).getNodeIdFactory()).equals(id)) {
+ return route;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void addRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+ if (routeTemplateDefinitions == null || routeTemplateDefinitions.isEmpty()) {
+ return;
+ }
+ this.routeTemplateDefinitions.addAll(routeTemplateDefinitions);
+ }
+
+ @Override
+ public void addRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+ this.routeTemplateDefinitions.addAll(routeTemplateDefinitions);
+ }
+
+ @Override
+ public void removeRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+ routeTemplateDefinitions.removeAll(routeTemplateDefinitions);
+ }
+
+ @Override
+ public void removeRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+ routeTemplateDefinitions.remove(routeTemplateDefinition);
+ }
+
+ @Override
+ public String addRouteFromTemplate(String routeId, String routeTemplateId, Map<String, Object> parameters)
+ throws Exception {
+ RouteTemplateDefinition target = null;
+ for (RouteTemplateDefinition def : routeTemplateDefinitions) {
+ if (routeTemplateId.equals(def.getId())) {
+ target = def;
+ break;
+ }
+ }
+ if (target == null) {
+ throw new IllegalArgumentException("Cannot find RouteTemplate with id " + routeTemplateId);
+ }
+
+ CollectionStringBuffer cbs = new CollectionStringBuffer();
+ final Map<String, Object> prop = new HashMap();
+ // include default values first from the template (and validate that we have inputs for all required parameters)
+ if (target.getTemplateParameters() != null) {
+ for (RouteTemplateParameterDefinition temp : target.getTemplateParameters()) {
+ if (temp.getDefaultValue() != null) {
+ prop.put(temp.getName(), temp.getDefaultValue());
+ } else {
+ // this is a required parameter do we have that as input
+ if (!parameters.containsKey(temp.getName())) {
+ cbs.append(temp.getName());
+ }
+ }
+ }
+ }
+ if (!cbs.isEmpty()) {
+ throw new IllegalArgumentException("Route template " + routeTemplateId
+ + " the following mandatory parameters must be provided: " + cbs.toString());
+ }
+ // then override with user parameters
+ if (parameters != null) {
+ prop.putAll(parameters);
+ }
+
+ RouteDefinition def = target.asRouteDefinition();
+ if (routeId != null) {
+ def.setId(routeId);
+ }
+ def.setTemplateParameters(prop);
+ addRouteDefinition(def);
+ return def.getId();
+ }
+
+ @Override
public synchronized List<RestDefinition> getRestDefinitions() {
return restDefinitions;
}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
index 904d50d..a50befb 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXMLRoutesDefinitionLoader.java
@@ -29,6 +29,11 @@ public class DisabledXMLRoutesDefinitionLoader implements XMLRoutesDefinitionLoa
}
@Override
+ public Object loadRouteTemplatesDefinition(CamelContext context, InputStream inputStream) throws Exception {
+ throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-io");
+ }
+
+ @Override
public Object loadRestsDefinition(CamelContext context, InputStream inputStream) throws Exception {
throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-io");
}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 5066702..afd09ba 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -87,6 +87,17 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
}
@Override
+ public String addRouteFromTemplate(String routeId, String routeTemplateId, Map<String, Object> parameters)
+ throws Exception {
+ return model.addRouteFromTemplate(routeId, routeTemplateId, parameters);
+ }
+
+ @Override
+ public RouteTemplateParameterBuilder addRouteFromTemplate(String routeTemplateId) {
+ return new RouteTemplateParameterBuilder(this, routeTemplateId);
+ }
+
+ @Override
protected Registry createRegistry() {
throw new UnsupportedOperationException();
}
@@ -512,6 +523,36 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
}
@Override
+ public List<RouteTemplateDefinition> getRouteTemplateDefinitions() {
+ return model.getRouteTemplateDefinitions();
+ }
+
+ @Override
+ public RouteTemplateDefinition getRouteTemplateDefinition(String id) {
+ return model.getRouteTemplateDefinition(id);
+ }
+
+ @Override
+ public void addRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+ model.addRouteTemplateDefinitions(routeTemplateDefinitions);
+ }
+
+ @Override
+ public void addRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+ model.addRouteTemplateDefinition(routeTemplateDefinition);
+ }
+
+ @Override
+ public void removeRouteTemplateDefinitions(Collection<RouteTemplateDefinition> routeTemplateDefinitions) throws Exception {
+ model.removeRouteTemplateDefinitions(routeTemplateDefinitions);
+ }
+
+ @Override
+ public void removeRouteTemplateDefinition(RouteTemplateDefinition routeTemplateDefinition) throws Exception {
+ model.removeRouteTemplateDefinition(routeTemplateDefinition);
+ }
+
+ @Override
public List<RestDefinition> getRestDefinitions() {
return model.getRestDefinitions();
}
diff --git a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
index da9350b..9498cc1 100644
--- a/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
+++ b/extensions-core/main/runtime/src/main/java/org/apache/camel/quarkus/main/CamelMainRoutesCollector.java
@@ -26,6 +26,7 @@ import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.main.RoutesCollector;
+import org.apache.camel.model.RouteTemplatesDefinition;
import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.model.rest.RestsDefinition;
import org.apache.camel.quarkus.core.RegistryRoutesLoader;
@@ -87,6 +88,31 @@ public class CamelMainRoutesCollector implements RoutesCollector {
}
@Override
+ public List<RouteTemplatesDefinition> collectXmlRouteTemplatesFromDirectory(CamelContext camelContext, String directory)
+ throws Exception {
+ List<RouteTemplatesDefinition> answer = new ArrayList<>();
+ PackageScanResourceResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
+
+ for (String part : directory.split(",")) {
+ LOGGER.info("Loading additional Camel XML route templates from: {}", part);
+ try {
+ for (InputStream is : resolver.findResources(part)) {
+ Object definition = xmlRoutesLoader.loadRouteTemplatesDefinition(camelContext, is);
+ if (definition instanceof RestsDefinition) {
+ answer.add((RouteTemplatesDefinition) definition);
+ }
+ }
+ } catch (FileNotFoundException e) {
+ LOGGER.debug("No XML route templates found in {}. Skipping XML route templates detection.", part);
+ } catch (Exception e) {
+ throw RuntimeCamelException.wrapRuntimeException(e);
+ }
+ }
+
+ return answer;
+ }
+
+ @Override
public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) {
List<RestsDefinition> answer = new ArrayList<>();
PackageScanResourceResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
diff --git a/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java b/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
index 84029bc..34f58be 100644
--- a/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
+++ b/integration-tests-support/custom-routes-collector/runtime/src/main/java/org/apache/camel/quarkus/main/runtime/support/CustomRoutesCollector.java
@@ -22,6 +22,7 @@ import java.util.List;
import org.apache.camel.CamelContext;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.main.RoutesCollector;
+import org.apache.camel.model.RouteTemplatesDefinition;
import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.model.rest.RestsDefinition;
@@ -40,6 +41,12 @@ public class CustomRoutesCollector implements RoutesCollector {
}
@Override
+ public List<RouteTemplatesDefinition> collectXmlRouteTemplatesFromDirectory(CamelContext camelContext, String directory)
+ throws Exception {
+ return Collections.emptyList();
+ }
+
+ @Override
public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) throws Exception {
return Collections.emptyList();
}
diff --git a/pom.xml b/pom.xml
index 1156791..3cfe70b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,7 +46,7 @@
<awssdk1.version>1.11.714</awssdk1.version>
<awssdk1-swf-libs.version>1.11.22</awssdk1-swf-libs.version>
<awssdk2.version>2.13.33</awssdk2.version>
- <camel.version>3.4.0</camel.version>
+ <camel.version>3.5.0-SNAPSHOT</camel.version>
<debezium.version>1.2.0.Final</debezium.version>
<elasticsearch.version>7.6.1</elasticsearch.version>
<freemarker.version>2.3.30</freemarker.version>