You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2020/03/02 07:53:39 UTC
[syncope] 02/02: Upgrading Camel
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
commit 5fb11e24a1270159d363129bbec765d3238a2dad
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Mon Mar 2 08:51:25 2020 +0100
Upgrading Camel
---
.../camel/AbstractCamelProvisioningManager.java | 8 +++++++-
.../core/provisioning/camel/SyncopeCamelContext.java | 14 +++++++-------
pom.xml | 6 +++---
3 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/AbstractCamelProvisioningManager.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/AbstractCamelProvisioningManager.java
index 5ead92e..f51a0e0 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/AbstractCamelProvisioningManager.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/AbstractCamelProvisioningManager.java
@@ -22,6 +22,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.PollingConsumer;
@@ -63,7 +65,11 @@ abstract class AbstractCamelProvisioningManager {
protected void sendMessage(final String uri, final Object body, final Map<String, Object> properties) {
DefaultExchange exchange = new DefaultExchange(contextFactory.getCamelContext());
- exchange.setProperties(properties);
+ // exclude properties with null value, otherwise DefaultExchange#properties, being a ConcurrentHashMap,
+ // will raise NPE; no problems for later usage, as Map#get will return null for missing keys anyway
+ exchange.setProperties(properties.keySet().stream().
+ filter(key -> properties.get(key) != null).
+ collect(Collectors.toMap(Function.identity(), properties::get)));
DefaultMessage message = new DefaultMessage(contextFactory.getCamelContext());
message.setBody(body);
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
index 640e85d..f7e8b61 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/SyncopeCamelContext.java
@@ -21,12 +21,11 @@ package org.apache.syncope.core.provisioning.camel;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.stream.Collectors;
+import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicyFactory;
-import org.apache.camel.model.ModelHelper;
import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.spring.SpringCamelContext;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.core.persistence.api.dao.CamelRouteDAO;
import org.apache.syncope.core.persistence.api.entity.CamelRoute;
import org.apache.syncope.core.spring.ApplicationContextProvider;
@@ -67,11 +66,12 @@ public class SyncopeCamelContext {
private void loadRouteDefinitions(final List<String> routes) {
try {
- RoutesDefinition routeDefs = ModelHelper.loadRoutesDefinition(
- camelContext,
- IOUtils.toInputStream("<routes xmlns=\"http://camel.apache.org/schema/spring\">"
- + StringUtils.join(routes)
- + "</routes>", StandardCharsets.UTF_8));
+ RoutesDefinition routeDefs = (RoutesDefinition) camelContext.adapt(ExtendedCamelContext.class).
+ getXMLRoutesDefinitionLoader().loadRoutesDefinition(
+ camelContext,
+ IOUtils.toInputStream("<routes xmlns=\"http://camel.apache.org/schema/spring\">"
+ + routes.stream().collect(Collectors.joining())
+ + "</routes>", StandardCharsets.UTF_8));
camelContext.addRouteDefinitions(routeDefs.getRoutes());
} catch (Exception e) {
LOG.error("While adding route definitions into Camel Context {}", getCamelContext(), e);
diff --git a/pom.xml b/pom.xml
index 12bf66e..a09f02b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -427,7 +427,7 @@ under the License.
<flowable.version>6.5.0</flowable.version>
- <camel.version>3.0.1</camel.version>
+ <camel.version>3.1.0</camel.version>
<slf4j.version>1.7.30</slf4j.version>
<opensaml.version>3.3.1</opensaml.version>
@@ -2452,8 +2452,8 @@ under the License.
<link>http://fasterxml.github.io/jackson-dataformats-text/javadoc/yaml/2.10/</link>
<link>http://fasterxml.github.io/jackson-dataformats-text/javadoc/csv/2.10/</link>
<link>http://fasterxml.github.io/jackson-datatype-joda/javadoc/2.10/</link>
- <link>http://www.javadoc.io/doc/org.apache.camel/camel-core/3.0.1/</link>
- <link>http://www.javadoc.io/doc/org.apache.camel/camel-spring/3.0.1/</link>
+ <link>http://www.javadoc.io/doc/org.apache.camel/camel-core/3.1.0/</link>
+ <link>http://www.javadoc.io/doc/org.apache.camel/camel-spring/3.1.0/</link>
<link>https://ci.apache.org/projects/wicket/apidocs/8.x/</link>
<link>https://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
<link>https://commons.apache.org/proper/commons-jexl/apidocs/</link>