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 <jamesnether...@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(); }