Skip to content

Commit

Permalink
Upgrade to Camel 3.5.0-SNAPSHOT
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesnetherton committed Jul 6, 2020
1 parent 2c6b58d commit 9ae95f2
Show file tree
Hide file tree
Showing 6 changed files with 167 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,14 @@
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<>();
Expand Down Expand Up @@ -110,6 +112,91 @@ public synchronized RouteDefinition getRouteDefinition(String id) {
return null;
}

@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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ public Object loadRoutesDefinition(CamelContext context, InputStream inputStream
throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-io");
}

@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");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,17 @@ public String getVersion() {
return version;
}

@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();
Expand Down Expand Up @@ -511,6 +522,36 @@ public void removeRouteDefinition(RouteDefinition routeDefinition) throws Except
model.removeRouteDefinition(routeDefinition);
}

@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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
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;
Expand Down Expand Up @@ -86,6 +87,31 @@ public List<RoutesDefinition> collectXmlRoutesFromDirectory(CamelContext camelCo
return answer;
}

@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<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
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;

Expand All @@ -39,6 +40,12 @@ public List<RoutesDefinition> collectXmlRoutesFromDirectory(CamelContext camelCo
return Collections.emptyList();
}

@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();
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down

0 comments on commit 9ae95f2

Please sign in to comment.