You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/11/15 16:54:57 UTC

[camel] 03/03: CAMEL-15852: PropertyBindingSupport should support dots in map keys

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

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

commit ba72a95907a359c8434963ca4fca835e8f147550
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sun Nov 15 16:07:24 2020 +0100

    CAMEL-15852: PropertyBindingSupport should support dots in map keys
---
 .../camel/support/PropertyBindingSupport.java      | 98 +++++++++++-----------
 1 file changed, 48 insertions(+), 50 deletions(-)

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 bec7363..0755855 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
@@ -217,56 +217,6 @@ public final class PropertyBindingSupport {
         return answer;
     }
 
-    // TODO: Move these methods to other location
-    private static String[] splitKey(String key) {
-        List<String> parts = new ArrayList<>();
-
-        boolean mapKey = false;
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < key.length(); i++) {
-            char ch = key.charAt(i);
-            if (ch == '[') {
-                mapKey = true;
-            } else if (ch == ']') {
-                mapKey = false;
-            }
-            if (ch == '.' && !mapKey) {
-                // dont include the separator dot
-                parts.add(sb.toString());
-                sb.setLength(0);
-            } else {
-                sb.append(ch);
-            }
-        }
-        if (sb.length() > 0) {
-            parts.add(sb.toString());
-        }
-
-        return parts.toArray(new String[parts.size()]);
-    }
-
-    private static boolean isDotKey(String key) {
-        // we only want to know if there is a dot in OGNL path, so any map keys [iso.code] is accepted
-
-        if (key.indexOf('[') == -1 && key.indexOf('.') != -1) {
-            return true;
-        }
-
-        boolean mapKey = false;
-        for (int i = 0; i < key.length(); i++) {
-            char ch = key.charAt(i);
-            if (ch == '[') {
-                mapKey = true;
-            } else if (ch == ']') {
-                mapKey = false;
-            }
-            if (ch == '.' && !mapKey) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     private static boolean doBuildPropertyOgnlPath(
             final CamelContext camelContext, final Object originalTarget, String name, final Object value,
             boolean deepNesting, boolean fluentBuilder, boolean allowPrivateSetter,
@@ -1539,6 +1489,54 @@ public final class PropertyBindingSupport {
         return key;
     }
 
+    private static boolean isDotKey(String key) {
+        // we only want to know if there is a dot in OGNL path, so any map keys [iso.code] is accepted
+
+        if (key.indexOf('[') == -1 && key.indexOf('.') != -1) {
+            return true;
+        }
+
+        boolean mapKey = false;
+        for (char ch : key.toCharArray()) {
+            if (ch == '[') {
+                mapKey = true;
+            } else if (ch == ']') {
+                mapKey = false;
+            }
+            if (ch == '.' && !mapKey) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private static String[] splitKey(String key) {
+        // split the key into parts separated by dot (but handle map keys [iso.code] etc.
+        List<String> parts = new ArrayList<>();
+
+        boolean mapKey = false;
+        StringBuilder sb = new StringBuilder();
+        for (char ch : key.toCharArray()) {
+            if (ch == '[') {
+                mapKey = true;
+            } else if (ch == ']') {
+                mapKey = false;
+            }
+            if (ch == '.' && !mapKey) {
+                // dont include the separator dot
+                parts.add(sb.toString());
+                sb.setLength(0);
+            } else {
+                sb.append(ch);
+            }
+        }
+        if (sb.length() > 0) {
+            parts.add(sb.toString());
+        }
+
+        return parts.toArray(new String[parts.size()]);
+    }
+
     @FunctionalInterface
     public interface OnAutowiring {