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 {