You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zb...@apache.org on 2021/05/11 23:59:15 UTC
[camel-quarkus] 17/24: Adapt to latest Camel API changes
This is an automated email from the ASF dual-hosted git repository.
zbendhiba pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 29ad7937f119e912190ff27bb89ed503aaa0653d
Author: James Netherton <ja...@gmail.com>
AuthorDate: Thu May 6 11:53:25 2021 +0100
Adapt to latest Camel API changes
---
.../reference/components/azure-cosmosdb.adoc | 1 +
.../partials/reference/components/spring-jdbc.adoc | 1 +
.../org/apache/camel/quarkus/core/BaseModel.java | 36 +++++++++++++++++++---
.../camel/quarkus/core/FastCamelContext.java | 6 ++++
4 files changed, 39 insertions(+), 5 deletions(-)
diff --git a/docs/modules/ROOT/partials/reference/components/azure-cosmosdb.adoc b/docs/modules/ROOT/partials/reference/components/azure-cosmosdb.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/components/azure-cosmosdb.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/docs/modules/ROOT/partials/reference/components/spring-jdbc.adoc b/docs/modules/ROOT/partials/reference/components/spring-jdbc.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/components/spring-jdbc.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
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 ddb0d15..c75c809 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
@@ -29,8 +29,11 @@ import java.util.function.Function;
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.FailedToCreateRouteFromTemplateException;
+import org.apache.camel.RouteTemplateContext;
import org.apache.camel.impl.DefaultModelReifierFactory;
import org.apache.camel.model.DataFormatDefinition;
+import org.apache.camel.model.DefaultRouteTemplateContext;
import org.apache.camel.model.FaultToleranceConfigurationDefinition;
import org.apache.camel.model.HystrixConfigurationDefinition;
import org.apache.camel.model.Model;
@@ -40,6 +43,7 @@ import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.ProcessorDefinitionHelper;
import org.apache.camel.model.Resilience4jConfigurationDefinition;
import org.apache.camel.model.RouteDefinition;
+import org.apache.camel.model.RouteDefinitionHelper;
import org.apache.camel.model.RouteFilters;
import org.apache.camel.model.RouteTemplateDefinition;
import org.apache.camel.model.RouteTemplateParameterDefinition;
@@ -191,8 +195,16 @@ public abstract class BaseModel implements Model {
}
@Override
- public String addRouteFromTemplate(final String routeId, final String routeTemplateId, final Map<String, Object> parameters)
- throws Exception {
+ public String addRouteFromTemplate(final String routeId, final String routeTemplateId, final Map<String, Object> parameters) throws Exception {
+ RouteTemplateContext rtc = new DefaultRouteTemplateContext(camelContext);
+ if (parameters != null) {
+ parameters.forEach(rtc::setParameter);
+ }
+ return addRouteFromTemplate(routeId, routeTemplateId, rtc);
+ }
+
+ @Override
+ public String addRouteFromTemplate(String routeId, String routeTemplateId, RouteTemplateContext routeTemplateContext) throws Exception {
RouteTemplateDefinition target = null;
for (RouteTemplateDefinition def : routeTemplateDefinitions) {
if (routeTemplateId.equals(def.getId())) {
@@ -204,6 +216,11 @@ public abstract class BaseModel implements Model {
throw new IllegalArgumentException("Cannot find RouteTemplate with id " + routeTemplateId);
}
+ // apply configurer if any present
+ if (target.getConfigurer() != null) {
+ target.getConfigurer().accept(routeTemplateContext);
+ }
+
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) {
@@ -214,7 +231,7 @@ public abstract class BaseModel implements Model {
prop.put(temp.getName(), temp.getDefaultValue());
} else {
// this is a required parameter do we have that as input
- if (!parameters.containsKey(temp.getName())) {
+ if (!routeTemplateContext.getParameters().containsKey(temp.getName())) {
templatesBuilder.add(temp.getName());
}
}
@@ -227,8 +244,8 @@ public abstract class BaseModel implements Model {
}
// then override with user parameters
- if (parameters != null) {
- prop.putAll(parameters);
+ if (routeTemplateContext.getParameters() != null) {
+ prop.putAll(routeTemplateContext.getParameters());
}
RouteTemplateDefinition.Converter converter = RouteTemplateDefinition.Converter.DEFAULT_CONVERTER;
@@ -254,6 +271,15 @@ public abstract class BaseModel implements Model {
def.setId(routeId);
}
def.setTemplateParameters(prop);
+ def.setRouteTemplateContext(routeTemplateContext);
+
+ // assign ids to the routes and validate that the id's are all unique
+ String duplicate = RouteDefinitionHelper.validateUniqueIds(def, routeDefinitions);
+ if (duplicate != null) {
+ throw new FailedToCreateRouteFromTemplateException(
+ routeId, routeTemplateId,
+ "duplicate id detected: " + duplicate + ". Please correct ids to be unique among all your routes.");
+ }
addRouteDefinition(def);
return def.getId();
}
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 a7ba15d..04e5ad7 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
@@ -34,6 +34,7 @@ import org.apache.camel.FailedToStartRouteException;
import org.apache.camel.Predicate;
import org.apache.camel.Processor;
import org.apache.camel.Route;
+import org.apache.camel.RouteTemplateContext;
import org.apache.camel.TypeConverter;
import org.apache.camel.ValueHolder;
import org.apache.camel.builder.AdviceWith;
@@ -223,6 +224,11 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
}
@Override
+ public String addRouteFromTemplate(String routeId, String routeTemplateId, RouteTemplateContext routeTemplateContext) throws Exception {
+ return model.addRouteFromTemplate(routeId, routeTemplateId, routeTemplateContext);
+ }
+
+ @Override
protected Registry createRegistry() {
throw new UnsupportedOperationException();
}