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 <[email protected]> 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 {
