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 2022/12/22 11:12:57 UTC
[camel] 01/01: CAMEL-18834: camel-core - StringQuoteHelper should remove quotes for single element
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch CAMEL-18834
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 9b5248c0a5d7610e35298e24c7799ab6f8e97ce4
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Dec 22 12:12:38 2022 +0100
CAMEL-18834: camel-core - StringQuoteHelper should remove quotes for single element
---
.../apache/camel/util/StingQuoteHelperTest.java | 34 ++++++++++++++++++++++
.../camel/support/PropertyBindingSupport.java | 4 +--
.../org/apache/camel/util/StringQuoteHelper.java | 12 +++++++-
3 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/core/camel-core/src/test/java/org/apache/camel/util/StingQuoteHelperTest.java b/core/camel-core/src/test/java/org/apache/camel/util/StingQuoteHelperTest.java
index 0dd066b7f03..1f5126a292a 100644
--- a/core/camel-core/src/test/java/org/apache/camel/util/StingQuoteHelperTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/util/StingQuoteHelperTest.java
@@ -124,6 +124,40 @@ public class StingQuoteHelperTest {
assertEquals("*", out[0]);
assertEquals("", out[1]);
assertEquals("arg3", out[2]);
+
+ out = StringQuoteHelper.splitSafeQuote("'Hello'", ',', true);
+ assertEquals(1, out.length);
+ assertEquals("Hello", out[0]);
+
+ out = StringQuoteHelper.splitSafeQuote("' Hello '", ',', true);
+ assertEquals(1, out.length);
+ assertEquals("Hello", out[0]);
+
+ out = StringQuoteHelper.splitSafeQuote("' Hello '", ',', false);
+ assertEquals(1, out.length);
+ assertEquals(" Hello ", out[0]);
+
+ out = StringQuoteHelper.splitSafeQuote("'Hello', 'World'", ',', true);
+ assertEquals(2, out.length);
+ assertEquals("Hello", out[0]);
+ assertEquals("World", out[1]);
+
+ out = StringQuoteHelper.splitSafeQuote("\"Hello\"", ',', true);
+ assertEquals(1, out.length);
+ assertEquals("Hello", out[0]);
+
+ out = StringQuoteHelper.splitSafeQuote("\" Hello \"", ',', true);
+ assertEquals(1, out.length);
+ assertEquals("Hello", out[0]);
+
+ out = StringQuoteHelper.splitSafeQuote("\" Hello \"", ',', false);
+ assertEquals(1, out.length);
+ assertEquals(" Hello ", out[0]);
+
+ out = StringQuoteHelper.splitSafeQuote("\"Hello\", \"World\"", ',', true);
+ assertEquals(2, out.length);
+ assertEquals("Hello", out[0]);
+ assertEquals("World", out[1]);
}
@Test
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 a868dc68587..6ce1abb5b92 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
@@ -1232,7 +1232,7 @@ public final class PropertyBindingSupport {
*/
public static Object newInstanceConstructorParameters(CamelContext camelContext, Class<?> type, String parameters)
throws Exception {
- String[] params = StringQuoteHelper.splitSafeQuote(parameters, ',');
+ String[] params = StringQuoteHelper.splitSafeQuote(parameters, ',', false);
Constructor found = findMatchingConstructor(type.getConstructors(), params);
if (found != null) {
Object[] arr = new Object[found.getParameterCount()];
@@ -1330,7 +1330,7 @@ public final class PropertyBindingSupport {
public static Object newInstanceFactoryParameters(
CamelContext camelContext, Class<?> type, String factoryMethod, String parameters)
throws Exception {
- String[] params = StringQuoteHelper.splitSafeQuote(parameters, ',');
+ String[] params = StringQuoteHelper.splitSafeQuote(parameters, ',', false);
Method found = findMatchingFactoryMethod(type.getMethods(), factoryMethod, params);
if (found != null) {
Object[] arr = new Object[found.getParameterCount()];
diff --git a/core/camel-util/src/main/java/org/apache/camel/util/StringQuoteHelper.java b/core/camel-util/src/main/java/org/apache/camel/util/StringQuoteHelper.java
index 414cb95c691..8d6c4d15a0c 100644
--- a/core/camel-util/src/main/java/org/apache/camel/util/StringQuoteHelper.java
+++ b/core/camel-util/src/main/java/org/apache/camel/util/StringQuoteHelper.java
@@ -37,7 +37,8 @@ public final class StringQuoteHelper {
/**
* Returns the text wrapped single quotes
*/
- public static String singleQuote(String text) {
+ public static String
+ singleQuote(String text) {
return quote(text, "'");
}
@@ -86,6 +87,15 @@ public final class StringQuoteHelper {
}
if (input.indexOf(separator) == -1) {
+ if (input.length() > 1) {
+ char ch = input.charAt(0);
+ char ch2 = input.charAt(input.length() - 1);
+ boolean singleQuoted = ch == '\'' && ch2 == '\'';
+ boolean doubleQuoted = ch == '"' && ch2 == '"';
+ if (singleQuoted || doubleQuoted) {
+ input = input.substring(1, input.length() - 1);
+ }
+ }
// no separator in data, so return single string with input as is
return new String[] { trim ? input.trim() : input };
}