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>