This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.14.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 0376d20b195b46b588590625bfff299a2c8ab393
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Feb 18 09:43:21 2022 +0100

    CAMEL-17658 camel-debezium: additionalProperties are trimmed (#6960)
---
 .../PropertyBindingSupportMapKeyWithDotTest.java   | 45 ++++++++++++++++++++++
 .../camel/support/PropertyBindingSupport.java      | 11 +-----
 2 files changed, 47 insertions(+), 9 deletions(-)

diff --git 
a/core/camel-core/src/test/java/org/apache/camel/support/PropertyBindingSupportMapKeyWithDotTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/support/PropertyBindingSupportMapKeyWithDotTest.java
index af172d6..2653877 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/support/PropertyBindingSupportMapKeyWithDotTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/support/PropertyBindingSupportMapKeyWithDotTest.java
@@ -36,6 +36,8 @@ public class PropertyBindingSupportMapKeyWithDotTest extends 
ContextTestSupport
         prop.put("id", "123");
         prop.put("database.name", "MySQL");
         prop.put("database.timezone", "CET");
+        prop.put("database.client.id", "123");
+        prop.put("database.client.type", "Basic");
 
         Map<String, String> map = new HashMap<>();
         PropertyBindingSupport.build().bind(context, map, prop);
@@ -43,6 +45,49 @@ public class PropertyBindingSupportMapKeyWithDotTest extends 
ContextTestSupport
         assertEquals("123", map.get("id"));
         assertEquals("MySQL", map.get("database.name"));
         assertEquals("CET", map.get("database.timezone"));
+        assertEquals("123", map.get("database.client.id"));
+        assertEquals("Basic", map.get("database.client.type"));
+    }
+
+    @Test
+    public void testPropertiesConfigMap() throws Exception {
+        Map<String, Object> prop = new LinkedHashMap<>();
+        prop.put("id", "123");
+        prop.put("config.database.name", "MySQL");
+        prop.put("config.database.timezone", "CET");
+        prop.put("config.database.client.id", "123");
+        prop.put("config.database.client.type", "Basic");
+
+        Foo foo = new Foo();
+        PropertyBindingSupport.build().bind(context, foo, prop);
+
+        assertEquals("123", foo.getId());
+        assertEquals("MySQL", foo.getConfig().get("database.name"));
+        assertEquals("CET", foo.getConfig().get("database.timezone"));
+        assertEquals("123", foo.getConfig().get("database.client.id"));
+        assertEquals("Basic", foo.getConfig().get("database.client.type"));
+    }
+
+    public static class Foo {
+
+        private String id;
+        private Map<String, String> config;
+
+        public String getId() {
+            return id;
+        }
+
+        public void setId(String id) {
+            this.id = id;
+        }
+
+        public Map<String, String> getConfig() {
+            return config;
+        }
+
+        public void setConfig(Map<String, String> config) {
+            this.config = config;
+        }
     }
 
 }
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
index e015cd3..63d4536 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
@@ -34,7 +34,6 @@ import java.util.Properties;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.stream.Collectors;
-import java.util.stream.IntStream;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ExtendedCamelContext;
@@ -329,14 +328,8 @@ public final class PropertyBindingSupport {
                 // prepare for next iterator
                 newTarget = prop;
                 newClass = newTarget.getClass();
-                //do not ignore remaining parts, which was not traversed
-                if (parts.length > 1 && i < parts.length - 2) {
-                    newName = IntStream.range(i + 1, parts.length)
-                            .mapToObj(j -> parts[j])
-                            .collect(Collectors.joining("."));
-                } else {
-                    newName = parts[i + 1];
-                }
+                // do not ignore remaining parts, which was not traversed
+                newName = Arrays.stream(parts, i + 1, 
parts.length).collect(Collectors.joining("."));
                 // if we have not yet found a configurer for the new target
                 if (configurer == null) {
                     configurer = 
PropertyConfigurerHelper.resolvePropertyConfigurer(camelContext, newTarget);

Reply via email to