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/11/05 07:03:31 UTC
[camel-quarkus] branch master updated: core: allign BaseModel with
org.apache.camel.impl.DefaultModel
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push:
new 0805ab4 core: allign BaseModel with org.apache.camel.impl.DefaultModel
0805ab4 is described below
commit 0805ab42690bffb29f8234137787418483aff8a1
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Tue Nov 3 15:44:35 2020 +0100
core: allign BaseModel with org.apache.camel.impl.DefaultModel
---
.../org/apache/camel/quarkus/core/BaseModel.java | 98 +++++++++++++++-------
1 file changed, 68 insertions(+), 30 deletions(-)
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 3facae2..8ee50e0 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
@@ -16,19 +16,38 @@
*/
package org.apache.camel.quarkus.core;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.StringJoiner;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.model.*;
+import org.apache.camel.model.DataFormatDefinition;
+import org.apache.camel.model.FaultToleranceConfigurationDefinition;
+import org.apache.camel.model.HystrixConfigurationDefinition;
+import org.apache.camel.model.Model;
+import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.model.ModelLifecycleStrategy;
+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.RouteFilters;
+import org.apache.camel.model.RouteTemplateDefinition;
+import org.apache.camel.model.RouteTemplateParameterDefinition;
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.spi.NodeIdFactory;
-import org.apache.camel.util.CollectionStringBuffer;
+import org.apache.camel.util.AntPathMatcher;
public abstract class BaseModel implements Model {
@@ -38,6 +57,7 @@ public abstract class BaseModel implements Model {
private final List<RouteTemplateDefinition> routeTemplateDefinitions = new ArrayList<>();
private final List<RestDefinition> restDefinitions = new ArrayList<>();
private final Map<String, RouteTemplateDefinition.Converter> routeTemplateConverters = new ConcurrentHashMap<>();
+ private final List<ModelLifecycleStrategy> modelLifecycleStrategies = new ArrayList<>();
private Map<String, DataFormatDefinition> dataFormats = new HashMap<>();
private List<TransformerDefinition> transformers = new ArrayList<>();
private List<ValidatorDefinition> validators = new ArrayList<>();
@@ -46,12 +66,20 @@ public abstract class BaseModel implements Model {
private Map<String, Resilience4jConfigurationDefinition> resilience4jConfigurations = new ConcurrentHashMap<>();
private Map<String, FaultToleranceConfigurationDefinition> faultToleranceConfigurations = new ConcurrentHashMap<>();
private Function<RouteDefinition, Boolean> routeFilter;
- private final List<ModelLifecycleStrategy> modelLifecycleStrategies = new ArrayList<>();
public BaseModel(CamelContext camelContext) {
this.camelContext = camelContext;
}
+ protected static <T> T lookup(CamelContext context, String ref, Class<T> type) {
+ try {
+ return context.getRegistry().lookupByNameAndType(ref, type);
+ } catch (Exception e) {
+ // need to ignore not same type and return it as null
+ return null;
+ }
+ }
+
public CamelContext getCamelContext() {
return camelContext;
}
@@ -160,7 +188,7 @@ public abstract class BaseModel implements Model {
}
@Override
- public String addRouteFromTemplate(String routeId, String routeTemplateId, Map<String, Object> parameters)
+ public String addRouteFromTemplate(final String routeId, final String routeTemplateId, final Map<String, Object> parameters)
throws Exception {
RouteTemplateDefinition target = null;
for (RouteTemplateDefinition def : routeTemplateDefinitions) {
@@ -173,8 +201,8 @@ public abstract class BaseModel implements Model {
throw new IllegalArgumentException("Cannot find RouteTemplate with id " + routeTemplateId);
}
- CollectionStringBuffer cbs = new CollectionStringBuffer();
- final Map<String, Object> prop = new HashMap();
+ StringJoiner templatesBuilder = new StringJoiner(", ");
+ 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()) {
@@ -183,21 +211,40 @@ public abstract class BaseModel implements Model {
} else {
// this is a required parameter do we have that as input
if (!parameters.containsKey(temp.getName())) {
- cbs.append(temp.getName());
+ templatesBuilder.add(temp.getName());
}
}
}
}
- if (!cbs.isEmpty()) {
- throw new IllegalArgumentException("Route template " + routeTemplateId
- + " the following mandatory parameters must be provided: " + cbs.toString());
+ if (templatesBuilder.length() > 0) {
+ throw new IllegalArgumentException(
+ "Route template " + routeTemplateId + " the following mandatory parameters must be provided: "
+ + templatesBuilder.toString());
}
// then override with user parameters
if (parameters != null) {
prop.putAll(parameters);
}
- RouteDefinition def = target.asRouteDefinition();
+ RouteTemplateDefinition.Converter converter = RouteTemplateDefinition::asRouteDefinition;
+
+ for (Map.Entry<String, RouteTemplateDefinition.Converter> entry : routeTemplateConverters.entrySet()) {
+ final String key = entry.getKey();
+ final String templateId = target.getId();
+
+ if ("*".equals(key) || templateId.equals(key)) {
+ converter = entry.getValue();
+ break;
+ } else if (AntPathMatcher.INSTANCE.match(key, templateId)) {
+ converter = entry.getValue();
+ break;
+ } else if (templateId.matches(key)) {
+ converter = entry.getValue();
+ break;
+ }
+ }
+
+ RouteDefinition def = converter.apply(target);
if (routeId != null) {
def.setId(routeId);
}
@@ -375,18 +422,13 @@ public abstract class BaseModel implements Model {
}
@Override
- public void setDataFormats(Map<String, DataFormatDefinition> dataFormats) {
- this.dataFormats = dataFormats;
- }
-
- @Override
public Map<String, DataFormatDefinition> getDataFormats() {
return dataFormats;
}
@Override
- public void setTransformers(List<TransformerDefinition> transformers) {
- this.transformers = transformers;
+ public void setDataFormats(Map<String, DataFormatDefinition> dataFormats) {
+ this.dataFormats = dataFormats;
}
@Override
@@ -395,8 +437,8 @@ public abstract class BaseModel implements Model {
}
@Override
- public void setValidators(List<ValidatorDefinition> validators) {
- this.validators = validators;
+ public void setTransformers(List<TransformerDefinition> transformers) {
+ this.transformers = transformers;
}
@Override
@@ -405,6 +447,11 @@ public abstract class BaseModel implements Model {
}
@Override
+ public void setValidators(List<ValidatorDefinition> validators) {
+ this.validators = validators;
+ }
+
+ @Override
public void setRouteFilterPattern(String include, String exclude) {
setRouteFilter(RouteFilters.filterByPattern(include, exclude));
}
@@ -436,13 +483,4 @@ public abstract class BaseModel implements Model {
return camelContext.isStarted() && !camelContext.isStarting();
}
- protected static <T> T lookup(CamelContext context, String ref, Class<T> type) {
- try {
- return context.getRegistry().lookupByNameAndType(ref, type);
- } catch (Exception e) {
- // need to ignore not same type and return it as null
- return null;
- }
- }
-
}